From 235facd545cb7c1dd4c1b2f894db791c82181f7f Mon Sep 17 00:00:00 2001
From: Bob Kuhn <bob.kuhn@att.net>
Date: Fri, 25 May 2018 20:26:48 -0500
Subject: [PATCH] install AVRDUDE 5.10, faster disk find for LPC1768 (#10849)

---
 .../HAL/HAL_LPC1768/upload_extra_script.py    |    47 +-
 buildroot/share/atom/auto_build.py            |    34 +
 buildroot/share/atom/avrdude.conf             | 15478 ++++++++++++++++
 buildroot/share/atom/avrdude_5.10_linux       |   Bin 0 -> 1159576 bytes
 buildroot/share/atom/avrdude_5.10_macOS       |   Bin 0 -> 346784 bytes
 buildroot/share/atom/avrdude_linux.conf       | 15478 ++++++++++++++++
 buildroot/share/atom/avrdude_macOS.conf       | 15272 +++++++++++++++
 .../atom/create_custom_upload_command_CDC.py  |   190 +-
 .../atom/create_custom_upload_command_DFU.py  |    35 +-
 9 files changed, 46403 insertions(+), 131 deletions(-)
 create mode 100644 buildroot/share/atom/avrdude.conf
 create mode 100644 buildroot/share/atom/avrdude_5.10_linux
 create mode 100644 buildroot/share/atom/avrdude_5.10_macOS
 create mode 100644 buildroot/share/atom/avrdude_linux.conf
 create mode 100644 buildroot/share/atom/avrdude_macOS.conf

diff --git a/Marlin/src/HAL/HAL_LPC1768/upload_extra_script.py b/Marlin/src/HAL/HAL_LPC1768/upload_extra_script.py
index 1872652393c..5842faa5615 100644
--- a/Marlin/src/HAL/HAL_LPC1768/upload_extra_script.py
+++ b/Marlin/src/HAL/HAL_LPC1768/upload_extra_script.py
@@ -6,10 +6,10 @@
 
 target_filename = "FIRMWARE.CUR"
 target_drive = "REARM"
-upload_disk = ""
 
 import os
-import subprocess
+import platform
+current_OS = platform.system()
 
 #env_vars = subprocess.check_output('platformio run -t envdump')
 #env_vars = env_vars.split('\n')
@@ -21,10 +21,6 @@ build_type = os.environ.get("BUILD_TYPE", 'Not Set')
 if not(build_type == 'upload' or build_type == 'traceback' or build_type == 'Not Set') :
   exit(0)
 
-print '\nSearching for upload disk'
-
-import platform
-current_OS = platform.system()
 
 if current_OS == 'Windows':
 
@@ -43,38 +39,22 @@ if current_OS == 'Windows':
     driveStr = driveStr.strip().lstrip('Drives: ')  # typical result (string): 'C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\ L:\ M:\ Y:\ Z:\'
     drives = driveStr.split()  # typical result (array of stings): ['C:\\', 'D:\\', 'E:\\', 'F:\\', 'G:\\', 'H:\\', 'I:\\', 'J:\\', 'K:\\', 'L:\\', 'M:\\', 'Y:\\', 'Z:\\']
 
-    #
-    # scan top directory of each drive for FIRMWARE.CUR
-    #   return first drive found
-    #
-
-    import os
     upload_disk = 'Disk not found'
     target_file_found = False
     target_drive_found = False
-
-    volume_info = subprocess.check_output('powershell -Command volume ')
-    volume_info = volume_info.split('\n')
-    for entry in volume_info:
-      if target_drive in entry and target_drive_found == False:  # set upload if not found target file yet
-        target_drive_found = True
-        upload_disk = entry[ : entry.find(' ')] + ':'
-
     for drive in drives:
       final_drive_name = drive.strip().rstrip('\\')   # typical result (string): 'C:'
-      # modified version of walklevel()
-      level=0
-      some_dir = "/"
-      some_dir = some_dir.rstrip(os.path.sep)
-      assert os.path.isdir(some_dir)
-      num_sep = some_dir.count(os.path.sep)
-      for root, dirs, files in os.walk(final_drive_name):
-        num_sep_this = root.count(os.path.sep)
-        if num_sep + level <= num_sep_this:
-          del dirs[:]
-        if target_filename in files:
+      try:
+        volume_info = subprocess.check_output('cmd /C dir ' + final_drive_name, stderr=subprocess.STDOUT)
+      except Exception as e:
+        continue
+      else:
+        if target_drive in volume_info and target_file_found == False:  # set upload if not found target file yet
+          target_drive_found = True
+          upload_disk = final_drive_name
+        if target_filename in volume_info:
           if target_file_found == False:
-            upload_disk = root
+            upload_disk = final_drive_name
           target_file_found = True
 
     #
@@ -88,7 +68,7 @@ if current_OS == 'Windows':
       )
       print 'upload disk: ' , upload_disk
     else:
-       print '\nUnable to find destination disk.  File must be copied manually. \n'
+      print '\nUnable to find destination disk.  File must be copied manually. \n'
 
 
 if current_OS == 'Linux':
@@ -97,7 +77,6 @@ if current_OS == 'Linux':
     # platformio.ini will accept this for a Linux upload port designation: 'upload_port = /media/media_name/drive'
     #
 
-    import os
     upload_disk = 'Disk not found'
     target_file_found = False
     target_drive_found = False
diff --git a/buildroot/share/atom/auto_build.py b/buildroot/share/atom/auto_build.py
index 4dce0453058..6268f273433 100644
--- a/buildroot/share/atom/auto_build.py
+++ b/buildroot/share/atom/auto_build.py
@@ -23,6 +23,8 @@
 
 #######################################
 #
+# Revision: 2.0.1
+#
 # Description: script to automate PlatformIO builds
 # CLI:  python auto_build.py build_option
 #    build_option (required)
@@ -103,6 +105,7 @@ current_OS = platform.system()
 target_env = ''
 board_name = ''
 
+
 #########
 #  Python 2 error messages:
 #    Can't find a usable init.tcl in the following directories ...
@@ -208,6 +211,13 @@ def resolve_path(path):
         import os
 
     # turn the selection into a partial path
+
+        if 0 <= path.find('"'):
+          path = path[ path.find('"') : ]
+          if 0 <= path.find(', line '):
+            path = path.replace(', line ', ':')
+          path = path.replace('"', '')
+
        #get line and column numbers
         line_num = 1
         column_num = 1
@@ -969,6 +979,7 @@ class output_window(Text):
         Text.__init__(self, self.frame, borderwidth=3, relief="sunken")
         self.config(tabs=(400,))  # configure Text widget tab stops
         self.config(background = 'black', foreground = 'white', font= ("consolas", 12), wrap = 'word', undo = 'True')
+#        self.config(background = 'black', foreground = 'white', font= ("consolas", 12), wrap = 'none', undo = 'True')
         self.config(height  = 24, width = 100)
         self.config(insertbackground = 'pale green')  # keyboard insertion point
         self.pack(side='left', fill='both', expand=True)
@@ -991,6 +1002,25 @@ class output_window(Text):
         self.config(yscrollcommand=scrb.set)
         scrb.pack(side='right', fill='y')
 
+#        self.scrb_Y = tk.Scrollbar(self.frame, orient='vertical', command=self.yview)
+#        self.scrb_Y.config(yscrollcommand=self.scrb_Y.set)
+#        self.scrb_Y.pack(side='right', fill='y')
+#
+#        self.scrb_X = tk.Scrollbar(self.frame, orient='horizontal', command=self.xview)
+#        self.scrb_X.config(xscrollcommand=self.scrb_X.set)
+#        self.scrb_X.pack(side='bottom', fill='x')
+
+#        scrb_X = tk.Scrollbar(self, orient=tk.HORIZONTAL, command=self.xview)  # tk.HORIZONTAL now have a horizsontal scroll bar BUT... shrinks it to a postage stamp and hides far right behind the vertical scroll bar
+#        self.config(xscrollcommand=scrb_X.set)
+#        scrb_X.pack(side='bottom', fill='x')
+#
+#        scrb= tk.Scrollbar(self, orient='vertical', command=self.yview)
+#        self.config(yscrollcommand=scrb.set)
+#        scrb.pack(side='right', fill='y')
+
+#        self.config(height  = 240, width = 1000)            # didn't get the size baCK TO NORMAL
+#        self.pack(side='left', fill='both', expand=True)    # didn't get the size baCK TO NORMAL
+
 
         # pop-up menu
         self.popup = tk.Menu(self, tearoff=0)
@@ -1230,6 +1260,10 @@ def main():
 
         target_env = get_env(board_name, Marlin_ver)
 
+        os.environ["BUILD_TYPE"] = build_type   # let sub processes know what is happening
+        os.environ["TARGET_ENV"] = target_env
+        os.environ["BOARD_NAME"] = board_name
+
         auto_build = output_window()
         if 0 <= target_env.find('USB1286'):
             copy_boards_dir()          # copy custom boards over to PlatformIO if using custom board
diff --git a/buildroot/share/atom/avrdude.conf b/buildroot/share/atom/avrdude.conf
new file mode 100644
index 00000000000..1194847f775
--- /dev/null
+++ b/buildroot/share/atom/avrdude.conf
@@ -0,0 +1,15478 @@
+# $Id: avrdude.conf.in 916 2010-01-15 16:36:13Z joerg_wunsch $
+#
+# AVRDUDE Configuration File
+#
+# This file contains configuration data used by AVRDUDE which describes
+# the programming hardware pinouts and also provides part definitions.
+# AVRDUDE's "-C" command line option specifies the location of the
+# configuration file.  The "-c" option names the programmer configuration
+# which must match one of the entry's "id" parameter.  The "-p" option
+# identifies which part AVRDUDE is going to be programming and must match
+# one of the parts' "id" parameter.
+#
+# Possible entry formats are:
+#
+#   programmer
+#       id       = <id1> [, <id2> [, <id3>] ...] ;  # <idN> are quoted strings
+#       desc     = <description> ;                  # quoted string
+#       type     = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic |
+#                  stk600 | stk600pp | stk600hvsp |
+#                  avr910 | butterfly | usbasp |
+#                  jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw |
+#                  jtagmkII_avr32 | jtagmkii_pdi |
+#                  dragon_dw | dragon_jtag | dragon_isp | dragon_pp |
+#                  dragon_hvsp | dragon_pdi | arduino; # programmer type
+#       baudrate = <num> ;                          # baudrate for avr910-programmer
+#       vcc      = <num1> [, <num2> ... ] ;         # pin number(s)
+#       reset    = <num> ;                          # pin number
+#       sck      = <num> ;                          # pin number
+#       mosi     = <num> ;                          # pin number
+#       miso     = <num> ;                          # pin number
+#       errled   = <num> ;                          # pin number
+#       rdyled   = <num> ;                          # pin number
+#       pgmled   = <num> ;                          # pin number
+#       vfyled   = <num> ;                          # pin number
+#     ;
+#
+#   part
+#       id               = <id> ;                 # quoted string
+#       desc             = <description> ;        # quoted string
+#       has_jtag         = <yes/no> ;             # part has JTAG i/f
+#       has_debugwire    = <yes/no> ;             # part has debugWire i/f
+#       has_pdi          = <yes/no> ;             # part has PDI i/f
+#       has_tpi          = <yes/no> ;             # part has TPI i/f
+#       devicecode       = <num> ;            # deprecated, use stk500_devcode
+#       stk500_devcode   = <num> ;                # numeric
+#       avr910_devcode   = <num> ;                # numeric
+#       signature        = <num> <num> <num> ;    # signature bytes
+#       chip_erase_delay = <num> ;                # micro-seconds
+#       reset            = dedicated | io;
+#       retry_pulse      = reset | sck;
+#       pgm_enable       = <instruction format> ;
+#       chip_erase       = <instruction format> ;
+#       chip_erase_delay = <num> ;                # chip erase delay (us)
+#       # STK500 parameters (parallel programming IO lines)
+#       pagel            = <num> ;                # pin name in hex, i.e., 0xD7
+#       bs2              = <num> ;                # pin name in hex, i.e., 0xA0
+#       serial           = <yes/no> ;             # can use serial downloading
+#       parallel         = <yes/no/pseudo>;       # can use par. programming
+#       # STK500v2 parameters, to be taken from Atmel's XML files
+#       timeout          = <num> ;
+#       stabdelay        = <num> ;
+#       cmdexedelay      = <num> ;
+#       synchloops       = <num> ;
+#       bytedelay        = <num> ;
+#       pollvalue        = <num> ;
+#       pollindex        = <num> ;
+#       predelay         = <num> ;
+#       postdelay        = <num> ;
+#       pollmethod       = <num> ;
+#       mode             = <num> ;
+#       delay            = <num> ;
+#       blocksize        = <num> ;
+#       readsize         = <num> ;
+#       hvspcmdexedelay  = <num> ;
+#       # STK500v2 HV programming parameters, from XML
+#       pp_controlstack  = <num>, <num>, ...;   # PP only
+#       hvsp_controlstack = <num>, <num>, ...;  # HVSP only
+#       hventerstabdelay = <num>;
+#       progmodedelay    = <num>;               # PP only
+#       latchcycles      = <num>;
+#       togglevtg        = <num>;
+#       poweroffdelay    = <num>;
+#       resetdelayms     = <num>;
+#       resetdelayus     = <num>;
+#       hvleavestabdelay = <num>;
+#       resetdelay       = <num>;
+#       synchcycles      = <num>;               # HVSP only
+#       chiperasepulsewidth = <num>;            # PP only
+#       chiperasepolltimeout = <num>;
+#       chiperasetime    = <num>;               # HVSP only
+#       programfusepulsewidth = <num>;          # PP only
+#       programfusepolltimeout = <num>;
+#       programlockpulsewidth = <num>;          # PP only
+#       programlockpolltimeout = <num>;
+#       # JTAG ICE mkII parameters, also from XML files
+#       allowfullpagebitstream = <yes/no> ;
+#       enablepageprogramming = <yes/no> ;
+#       idr              = <num> ;                # IO addr of IDR (OCD) reg.
+#       rampz            = <num> ;                # IO addr of RAMPZ reg.
+#       spmcr            = <num> ;                # mem addr of SPMC[S]R reg.
+#       eecr             = <num> ;                # mem addr of EECR reg.
+#                                                 # (only when != 0x3c)
+#       is_avr32         = <yes/no> ;             # AVR32 part
+#
+#       memory <memtype>
+#           paged           = <yes/no> ;          # yes / no
+#           size            = <num> ;             # bytes
+#           page_size       = <num> ;             # bytes
+#           num_pages       = <num> ;             # numeric
+#           min_write_delay = <num> ;             # micro-seconds
+#           max_write_delay = <num> ;             # micro-seconds
+#           readback_p1     = <num> ;             # byte value
+#           readback_p2     = <num> ;             # byte value
+#           pwroff_after_write = <yes/no> ;       # yes / no
+#           read            = <instruction format> ;
+#           write           = <instruction format> ;
+#           read_lo         = <instruction format> ;
+#           read_hi         = <instruction format> ;
+#           write_lo        = <instruction format> ;
+#           write_hi        = <instruction format> ;
+#           loadpage_lo     = <instruction format> ;
+#           loadpage_hi     = <instruction format> ;
+#           writepage       = <instruction format> ;
+#         ;
+#     ;
+#
+# If any of the above parameters are not specified, the default value
+# of 0 is used for numerics or the empty string ("") for string
+# values.  If a required parameter is left empty, AVRDUDE will
+# complain.
+#
+# NOTES:
+#   * 'devicecode' is the device code used by the STK500 (see codes
+#       listed below)
+#   * Not all memory types will implement all instructions.
+#   * AVR Fuse bits and Lock bits are implemented as a type of memory.
+#   * Example memory types are:
+#       "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high
+#       fuse), "signature", "calibration", "lock"
+#   * The memory type specified on the avrdude command line must match
+#     one of the memory types defined for the specified chip.
+#   * The pwroff_after_write flag causes avrdude to attempt to
+#     power the device off and back on after an unsuccessful write to
+#     the affected memory area if VCC programmer pins are defined.  If
+#     VCC pins are not defined for the programmer, a message
+#     indicating that the device needs a power-cycle is printed out.
+#     This flag was added to work around a problem with the
+#     at90s4433/2333's; see the at90s4433 errata at:
+#
+#         http://www.atmel.com/atmel/acrobat/doc1280.pdf
+#
+# INSTRUCTION FORMATS
+#
+#    Instruction formats are specified as a comma seperated list of
+#    string values containing information (bit specifiers) about each
+#    of the 32 bits of the instruction.  Bit specifiers may be one of
+#    the following formats:
+#
+#       '1'  = the bit is always set on input as well as output
+#
+#       '0'  = the bit is always clear on input as well as output
+#
+#       'x'  = the bit is ignored on input and output
+#
+#       'a'  = the bit is an address bit, the bit-number matches this bit
+#              specifier's position within the current instruction byte
+#
+#       'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12
+#              is address bit 12 on input, a0 is address bit 0.
+#
+#       'i'  = the bit is an input data bit
+#
+#       'o'  = the bit is an output data bit
+#
+#    Each instruction must be composed of 32 bit specifiers.  The
+#    instruction specification closely follows the instruction data
+#    provided in Atmel's data sheets for their parts.
+#
+# See below for some examples.
+#
+#
+# The following are STK500 part device codes to use for the
+# "devicecode" field of the part.  These came from Atmel's software
+# section avr061.zip which accompanies the application note
+# AVR061 available from:
+#
+#      http://www.atmel.com/atmel/acrobat/doc2525.pdf
+#
+
+#define ATTINY10    0x10  /* the _old_ one that never existed! */
+#define ATTINY11    0x11
+#define ATTINY12    0x12
+#define ATTINY15    0x13
+#define ATTINY13    0x14
+
+#define ATTINY22    0x20
+#define ATTINY26    0x21
+#define ATTINY28    0x22
+#define ATTINY2313  0x23
+
+#define AT90S1200   0x33
+
+#define AT90S2313   0x40
+#define AT90S2323   0x41
+#define AT90S2333   0x42
+#define AT90S2343   0x43
+
+#define AT90S4414   0x50
+#define AT90S4433   0x51
+#define AT90S4434   0x52
+#define ATMEGA48    0x59
+
+#define AT90S8515   0x60
+#define AT90S8535   0x61
+#define AT90C8534   0x62
+#define ATMEGA8515  0x63
+#define ATMEGA8535  0x64
+
+#define ATMEGA8     0x70
+#define ATMEGA88    0x73
+#define ATMEGA168   0x86
+
+#define ATMEGA161   0x80
+#define ATMEGA163   0x81
+#define ATMEGA16    0x82
+#define ATMEGA162   0x83
+#define ATMEGA169   0x84
+
+#define ATMEGA323   0x90
+#define ATMEGA32    0x91
+
+#define ATMEGA64    0xA0
+
+#define ATMEGA103   0xB1
+#define ATMEGA128   0xB2
+#define AT90CAN128  0xB3
+#define AT90CAN64   0xB3
+#define AT90CAN32   0xB3
+
+#define AT86RF401   0xD0
+
+#define AT89START   0xE0
+#define AT89S51	    0xE0
+#define AT89S52	    0xE1
+
+# The following table lists the devices in the original AVR910
+# appnote:
+# |Device |Signature | Code |
+# +-------+----------+------+
+# |tiny12 | 1E 90 05 | 0x55 |
+# |tiny15 | 1E 90 06 | 0x56 |
+# |       |          |      |
+# | S1200 | 1E 90 01 | 0x13 |
+# |       |          |      |
+# | S2313 | 1E 91 01 | 0x20 |
+# | S2323 | 1E 91 02 | 0x48 |
+# | S2333 | 1E 91 05 | 0x34 |
+# | S2343 | 1E 91 03 | 0x4C |
+# |       |          |      |
+# | S4414 | 1E 92 01 | 0x28 |
+# | S4433 | 1E 92 03 | 0x30 |
+# | S4434 | 1E 92 02 | 0x6C |
+# |       |          |      |
+# | S8515 | 1E 93 01 | 0x38 |
+# | S8535 | 1E 93 03 | 0x68 |
+# |       |          |      |
+# |mega32 | 1E 95 01 | 0x72 |
+# |mega83 | 1E 93 05 | 0x65 |
+# |mega103| 1E 97 01 | 0x41 |
+# |mega161| 1E 94 01 | 0x60 |
+# |mega163| 1E 94 02 | 0x64 |
+
+# Appnote AVR109 also has a table of AVR910 device codes, which
+# lists:
+# dev         avr910   signature
+# ATmega8     0x77     0x1E 0x93 0x07
+# ATmega8515  0x3B     0x1E 0x93 0x06
+# ATmega8535  0x6A     0x1E 0x93 0x08
+# ATmega16    0x75     0x1E 0x94 0x03
+# ATmega162   0x63     0x1E 0x94 0x04
+# ATmega163   0x66     0x1E 0x94 0x02
+# ATmega169   0x79     0x1E 0x94 0x05
+# ATmega32    0x7F     0x1E 0x95 0x02
+# ATmega323   0x73     0x1E 0x95 0x01
+# ATmega64    0x46     0x1E 0x96 0x02
+# ATmega128   0x44     0x1E 0x97 0x02
+#
+# These codes refer to "BOOT" device codes which are apparently
+# different than standard device codes, for whatever reasons
+# (often one above the standard code).
+
+# There are several extended versions of AVR910 implementations around
+# in the Internet.  These add the following codes (only devices that
+# actually exist are listed):
+
+# ATmega8515	0x3A
+# ATmega128	0x43
+# ATmega64	0x45
+# ATtiny26	0x5E
+# ATmega8535	0x69
+# ATmega32	0x72
+# ATmega16	0x74
+# ATmega8	0x76
+# ATmega169	0x78
+
+#
+# Overall avrdude defaults
+#
+default_parallel   = "lpt1";
+default_serial     = "com1";
+
+
+#
+# PROGRAMMER DEFINITIONS
+#
+
+programmer
+  id    = "arduino";
+  desc  = "Arduino";
+  type  = arduino;
+;
+
+programmer
+  id    = "avrisp";
+  desc  = "Atmel AVR ISP";
+  type  = stk500;
+;
+
+programmer
+  id    = "avrispv2";
+  desc  = "Atmel AVR ISP V2";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "avrispmkII";
+  desc  = "Atmel AVR ISP mkII";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "avrisp2";
+  desc  = "Atmel AVR ISP mkII";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "buspirate";
+  desc  = "The Bus Pirate";
+  type  = buspirate;
+;
+
+# This is supposed to be the "default" STK500 entry.
+# Attempts to select the correct firmware version
+# by probing for it.  Better use one of the entries
+# below instead.
+programmer
+  id    = "stk500";
+  desc  = "Atmel STK500";
+  type  = stk500generic;
+;
+
+programmer
+  id    = "stk500v1";
+  desc  = "Atmel STK500 Version 1.x firmware";
+  type  = stk500;
+;
+
+programmer
+  id    = "mib510";
+  desc  = "Crossbow MIB510 programming board";
+  type  = stk500;
+;
+
+programmer
+  id    = "stk500v2";
+  desc  = "Atmel STK500 Version 2.x firmware";
+  type  = stk500v2;
+;
+
+programmer
+  id    = "stk500pp";
+  desc  = "Atmel STK500 V2 in parallel programming mode";
+  type  = stk500pp;
+;
+
+programmer
+  id    = "stk500hvsp";
+  desc  = "Atmel STK500 V2 in high-voltage serial programming mode";
+  type  = stk500hvsp;
+;
+
+programmer
+  id    = "stk600";
+  desc  = "Atmel STK600";
+  type  = stk600;
+;
+
+programmer
+  id    = "stk600pp";
+  desc  = "Atmel STK600 in parallel programming mode";
+  type  = stk600pp;
+;
+
+programmer
+  id    = "stk600hvsp";
+  desc  = "Atmel STK600 in high-voltage serial programming mode";
+  type  = stk600hvsp;
+;
+
+programmer
+  id    = "avr910";
+  desc  = "Atmel Low Cost Serial Programmer";
+  type  = avr910;
+;
+
+programmer
+  id    = "usbasp";
+  desc  = "USBasp, http://www.fischl.de/usbasp/";
+  type  = usbasp;
+;
+
+programmer
+  id    = "usbtiny";
+  desc  = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/";
+  type  = usbtiny;
+;
+
+programmer
+  id    = "butterfly";
+  desc  = "Atmel Butterfly Development Board";
+  type  = butterfly;
+;
+
+programmer
+  id    = "avr109";
+  desc  = "Atmel AppNote AVR109 Boot Loader";
+  type  = butterfly;
+;
+
+programmer
+  id    = "avr911";
+  desc  = "Atmel AppNote AVR911 AVROSP";
+  type  = butterfly;
+;
+
+programmer
+  id    = "jtagmkI";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 115200;    # default is 115200
+  type  = jtagmki;
+;
+
+# easier to type
+programmer
+  id    = "jtag1";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 115200;    # default is 115200
+  type  = jtagmki;
+;
+
+# easier to type
+programmer
+  id    = "jtag1slow";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 19200;
+  type  = jtagmki;
+;
+
+programmer
+  id    = "jtagmkII";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 19200;    # default is 19200
+  type  = jtagmkii;
+;
+
+# easier to type
+programmer
+  id    = "jtag2slow";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 19200;    # default is 19200
+  type  = jtagmkii;
+;
+
+# JTAG ICE mkII @ 115200 Bd
+programmer
+  id    = "jtag2fast";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 115200;
+  type  = jtagmkii;
+;
+
+# make the fast one the default, people will love that
+programmer
+  id    = "jtag2";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 115200;
+  type  = jtagmkii;
+;
+
+# JTAG ICE mkII in ISP mode
+programmer
+  id    = "jtag2isp";
+  desc  = "Atmel JTAG ICE mkII in ISP mode";
+  baudrate = 115200;
+  type  = jtagmkii_isp;
+;
+
+# JTAG ICE mkII in debugWire mode
+programmer
+  id    = "jtag2dw";
+  desc  = "Atmel JTAG ICE mkII in debugWire mode";
+  baudrate = 115200;
+  type  = jtagmkii_dw;
+;
+
+# JTAG ICE mkII in AVR32 mode
+programmer
+  id    = "jtagmkII_avr32";
+  desc  = "Atmel JTAG ICE mkII im AVR32 mode";
+  baudrate = 115200;
+  type  = jtagmkii_avr32;
+;
+
+# JTAG ICE mkII in AVR32 mode
+programmer
+  id    = "jtag2avr32";
+  desc  = "Atmel JTAG ICE mkII im AVR32 mode";
+  baudrate = 115200;
+  type  = jtagmkii_avr32;
+;
+
+# JTAG ICE mkII in PDI mode
+programmer
+  id    = "jtag2pdi";
+  desc  = "Atmel JTAG ICE mkII PDI mode";
+  baudrate = 115200;
+  type  = jtagmkii_pdi;
+;
+
+# AVR Dragon in JTAG mode
+programmer
+  id    = "dragon_jtag";
+  desc  = "Atmel AVR Dragon in JTAG mode";
+  baudrate = 115200;
+  type  = dragon_jtag;
+;
+
+# AVR Dragon in ISP mode
+programmer
+  id    = "dragon_isp";
+  desc  = "Atmel AVR Dragon in ISP mode";
+  baudrate = 115200;
+  type  = dragon_isp;
+;
+
+# AVR Dragon in PP mode
+programmer
+  id    = "dragon_pp";
+  desc  = "Atmel AVR Dragon in PP mode";
+  baudrate = 115200;
+  type  = dragon_pp;
+;
+
+# AVR Dragon in HVSP mode
+programmer
+  id    = "dragon_hvsp";
+  desc  = "Atmel AVR Dragon in HVSP mode";
+  baudrate = 115200;
+  type  = dragon_hvsp;
+;
+
+# AVR Dragon in debugWire mode
+programmer
+  id    = "dragon_dw";
+  desc  = "Atmel AVR Dragon in debugWire mode";
+  baudrate = 115200;
+  type  = dragon_dw;
+;
+
+# AVR Dragon in PDI mode
+programmer
+  id    = "dragon_pdi";
+  desc  = "Atmel AVR Dragon in PDI mode";
+  baudrate = 115200;
+  type  = dragon_pdi;
+;
+
+programmer
+  id    = "pavr";
+  desc  = "Jason Kyle's pAVR Serial Programmer";
+  type  = avr910;
+;
+
+# Parallel port programmers.
+
+programmer
+  id    = "bsd";
+  desc  = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/";
+  type  = par;
+  vcc   = 2, 3, 4, 5;
+  reset = 7;
+  sck   = 8;
+  mosi  = 9;
+  miso  = 10;
+;
+
+programmer
+  id    = "stk200";
+  desc  = "STK200";
+  type  = par;
+  buff  = 4, 5;
+  sck   = 6;
+  mosi  = 7;
+  reset = 9;
+  miso  = 10;
+;
+
+# The programming dongle used by the popular Ponyprog
+# utility.  It is almost similar to the STK200 one,
+# except that there is a LED indicating that the
+# programming is currently in progress.
+
+programmer
+  id    = "pony-stk200";
+  desc  = "Pony Prog STK200";
+  type  = par;
+  buff  = 4, 5;
+  sck   = 6;
+  mosi  = 7;
+  reset = 9;
+  miso  = 10;
+  pgmled = 8;
+;
+
+programmer
+  id    = "dt006";
+  desc  = "Dontronics DT006";
+  type  = par;
+  reset = 4;
+  sck   = 5;
+  mosi  = 2;
+  miso  = 11;
+;
+
+programmer
+  id    = "bascom";
+  desc  = "Bascom SAMPLE programming cable";
+  type  = par;
+  reset = 4;
+  sck   = 5;
+  mosi  = 2;
+  miso  = 11;
+;
+
+programmer
+  id     = "alf";
+  desc   = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/";
+  type   = par;
+  vcc    = 2, 3, 4, 5;
+  buff   = 6;
+  reset  = 7;
+  sck    = 8;
+  mosi   = 9;
+  miso   = 10;
+  errled = 1;
+  rdyled = 14;
+  pgmled = 16;
+  vfyled = 17;
+;
+
+programmer
+  id    = "sp12";
+  desc  = "Steve Bolt's Programmer";
+  type  = par;
+  vcc   = 4,5,6,7,8;
+  reset = 3;
+  sck   = 2;
+  mosi  = 9;
+  miso  = 11;
+;
+
+programmer
+  id     = "picoweb";
+  desc   = "Picoweb Programming Cable, http://www.picoweb.net/";
+  type   = par;
+  reset  = 2;
+  sck    = 3;
+  mosi   = 4;
+  miso   = 13;
+;
+
+programmer
+  id    = "abcmini";
+  desc  = "ABCmini Board, aka Dick Smith HOTCHIP";
+  type  = par;
+  reset = 4;
+  sck   = 3;
+  mosi  = 2;
+  miso  = 10;
+;
+
+programmer
+  id    = "futurlec";
+  desc  = "Futurlec.com programming cable.";
+  type  = par;
+  reset = 3;
+  sck   = 2;
+  mosi  = 1;
+  miso  = 10;
+;
+
+
+# From the contributor of the "xil" jtag cable:
+# The "vcc" definition isn't really vcc (the cable gets its power from
+# the programming circuit) but is necessary to switch one of the
+# buffer lines (trying to add it to the "buff" lines doesn't work).
+# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK
+# to SCK (plus vcc/gnd of course)
+programmer
+  id    = "xil";
+  desc  = "Xilinx JTAG cable";
+  type  = par;
+  mosi  = 2;
+  sck   = 3;
+  reset = 4;
+  buff  = 5;
+  miso  = 13;
+  vcc   = 6;
+;
+
+
+programmer
+  id = "dapa";
+  desc = "Direct AVR Parallel Access cable";
+  type = par;
+  vcc   = 3;
+  reset = 16;
+  sck = 1;
+  mosi = 2;
+  miso = 11;
+;
+
+programmer
+  id    = "atisp";
+  desc  = "AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> micro-research.co.th";
+  type  = par;
+  reset = ~6;
+  sck   = ~8;
+  mosi  = ~7;
+  miso  = ~10;
+;
+
+programmer
+  id    = "ere-isp-avr";
+  desc  = "ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf>";
+  type  = par;
+  reset = ~4;
+  sck   = 3;
+  mosi  = 2;
+  miso  = 10;
+;
+
+programmer
+  id    = "blaster";
+  desc  = "Altera ByteBlaster";
+  type  = par;
+  sck   = 2;
+  miso  = 11;
+  reset = 3;
+  mosi  = 8;
+  buff  = 14;
+;
+
+# It is almost same as pony-stk200, except vcc on pin 5 to auto
+# disconnect port (download on http://electropol.free.fr)
+programmer
+  id    = "frank-stk200";
+  desc  = "Frank STK200";
+  type  = par;
+  vcc   = 5;
+  sck   = 6;
+  mosi  = 7;
+  reset = 9;
+  miso  = 10;
+  pgmled = 8;
+;
+
+# The AT98ISP Cable is a simple parallel dongle for AT89 family.
+# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877
+programmer
+id = "89isp";
+desc = "Atmel at89isp cable";
+type = par;
+reset = 17;
+sck = 1;
+mosi = 2;
+miso = 10;
+;
+
+
+#
+# some ultra cheap programmers use bitbanging on the
+# serialport.
+#
+# PC - DB9 - Pins for RS232:
+#
+# GND   5   -- |O
+#              |   O| <-   9   RI
+# DTR   4   <- |O   |
+#              |   O| <-   8   CTS
+# TXD   3   <- |O   |
+#              |   O| ->   7   RTS
+# RXD   2   -> |O   |
+#              |   O| <-   6   DSR
+# DCD   1   -> |O
+#
+# Using RXD is currently not supported.
+# Using RI is not supported under Win32 but is supported under Posix.
+
+# serial ponyprog design (dasa2 in uisp)
+# reset=!txd sck=rts mosi=dtr miso=cts
+
+programmer
+  id    = "ponyser";
+  desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
+  type  = serbb;
+  reset = ~3;
+  sck   = 7;
+  mosi  = 4;
+  miso  = 8;
+;
+
+# Same as above, different name
+# reset=!txd sck=rts mosi=dtr miso=cts
+
+programmer
+  id    = "siprog";
+  desc  = "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>";
+  type  = serbb;
+  reset = ~3;
+  sck   = 7;
+  mosi  = 4;
+  miso  = 8;
+;
+
+# unknown (dasa in uisp)
+# reset=rts sck=dtr mosi=txd miso=cts
+
+programmer
+  id    = "dasa";
+  desc  = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts";
+  type  = serbb;
+  reset = 7;
+  sck   = 4;
+  mosi  = 3;
+  miso  = 8;
+;
+
+# unknown (dasa3 in uisp)
+# reset=!dtr sck=rts mosi=txd miso=cts
+
+programmer
+  id    = "dasa3";
+  desc  = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts";
+  type  = serbb;
+  reset = ~4;
+  sck   = 7;
+  mosi  = 3;
+  miso  = 8;
+;
+
+# C2N232i (jumper configuration "auto")
+# reset=dtr sck=!rts mosi=!txd miso=!cts
+
+programmer
+  id    = "c2n232i";
+  desc  = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts";
+  type  = serbb;
+  reset = 4;
+  sck   = ~7;
+  mosi  = ~3;
+  miso  = ~8;
+;
+
+#
+# PART DEFINITIONS
+#
+
+#------------------------------------------------------------
+# ATtiny11
+#------------------------------------------------------------
+
+# This is an HVSP-only device.
+
+part
+    id                  = "t11";
+    desc                = "ATtiny11";
+    stk500_devcode      = 0x11;
+    signature           = 0x1e 0x90 0x04;
+    chip_erase_delay    = 20000;
+
+    timeout		= 200;
+    hvsp_controlstack     =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+	blocksize	= 64;
+	readsize	= 256;
+	delay		= 5;
+    ;
+
+    memory "flash"
+        size            = 1024;
+	blocksize	= 128;
+	readsize	= 256;
+	delay		= 3;
+    ;
+
+    memory "signature"
+        size            = 3;
+    ;
+
+    memory "lock"
+        size            = 1;
+    ;
+
+    memory "calibration"
+        size            = 1;
+    ;
+
+    memory "fuse"
+        size            = 1;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny12
+#------------------------------------------------------------
+
+part
+    id                  = "t12";
+    desc                = "ATtiny12";
+    stk500_devcode      = 0x12;
+    avr910_devcode      = 0x55;
+    signature           = 0x1e 0x90 0x05;
+    chip_erase_delay    = 20000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 8;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        write_lo        = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        write_hi        = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x o o x";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    o o o o  o o o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny13
+#------------------------------------------------------------
+
+part
+    id                  = "t13";
+    desc                = "ATtiny13";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x0E, 0x1E;
+     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+    stk500_devcode      = 0x14;
+    signature           = 0x1e 0x90 0x07;
+    chip_erase_delay    = 4000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack     =
+	0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 90;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        page_size       = 4;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x   x  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 1024;
+        page_size       = 32;
+        num_pages       = 32;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  0  0  0  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  0  0  0  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x  x  x   x  x a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+	read            = "0  1  0  1   1  0  0  0    0 0 0 0  0 0 0 0",
+                          "x  x  x  x   x  x  x  x    x x o o  o o o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    1 1 i i  i i i i";
+    ;
+
+    memory "calibration"
+        size            = 2;
+        read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                          "0  0  0  0   0  0  0 a0    o o o o  o o o o";
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny15
+#------------------------------------------------------------
+
+part
+    id                  = "t15";
+    desc                = "ATtiny15";
+    stk500_devcode      = 0x13;
+    avr910_devcode      = 0x56;
+    signature           = 0x1e 0x90 0x06;
+    chip_erase_delay    = 8200;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 5;
+    synchcycles         = 6;
+    latchcycles         = 16;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 8200;
+        max_write_delay = 8200;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4100;
+        max_write_delay = 4100;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        write_lo        = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        write_hi        = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x o o x";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    o o o o  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    i i i i  1 1 i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+;
+
+#------------------------------------------------------------
+# AT90s1200
+#------------------------------------------------------------
+
+part
+    id               = "1200";
+    desc             = "AT90S1200";
+    stk500_devcode   = 0x33;
+    avr910_devcode   = 0x13;
+    signature        = 0x1e 0x90 0x01;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 1;
+    bytedelay		= 0;
+    pollindex		= 0;
+    pollvalue		= 0xFF;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1 0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x x a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1 1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x x a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 32;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x02;
+	delay		= 15;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s4414
+#------------------------------------------------------------
+
+part
+    id               = "4414";
+    desc             = "AT90S4414";
+    stk500_devcode   = 0x50;
+    avr910_devcode   = 0x28;
+    signature        = 0x1e 0x92 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8",
+                          "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+      ;
+    memory "lock"
+	size		= 1;
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s2313
+#------------------------------------------------------------
+
+part
+    id               = "2313";
+    desc             = "AT90S2313";
+    stk500_devcode   = 0x40;
+    avr910_devcode   = 0x20;
+    signature        = 0x1e 0x91 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = "1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+      ;
+    memory "lock"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 1 1 x  x i i x",
+                          "x x x x  x x x x  x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s2333
+#------------------------------------------------------------
+
+part
+    id               = "2333";
+##### WARNING: No XML file for device 'AT90S2333'! #####
+    desc             = "AT90S2333";
+    stk500_devcode   = 0x42;
+    avr910_devcode   = 0x34;
+    signature        = 0x1e 0x91 0x05;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        pwroff_after_write = yes;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90s2343 (also AT90s2323 and ATtiny22)
+#------------------------------------------------------------
+
+part
+    id               = "2343";
+    desc             = "AT90S2343";
+    stk500_devcode   = 0x43;
+    avr910_devcode   = 0x4c;
+    signature        = 0x1e 0x91 0x03;
+    chip_erase_delay = 18000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 0;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0   0 0 0 0  0 0 0 0",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   0 0 0 0  0 0 0 0",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 128;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   o o o x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 1  1 1 1 i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   o o o x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90s4433
+#------------------------------------------------------------
+
+part
+    id               = "4433";
+    desc             = "AT90S4433";
+    stk500_devcode   = 0x51;
+    avr910_devcode   = 0x30;
+    signature        = 0x1e 0x92 0x03;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        pwroff_after_write = yes;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s4434
+#------------------------------------------------------------
+
+part
+    id               = "4434";
+##### WARNING: No XML file for device 'AT90S4434'! #####
+    desc             = "AT90S4434";
+    stk500_devcode   = 0x52;
+    avr910_devcode   = 0x6c;
+    signature        = 0x1e 0x92 0x02;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s8515
+#------------------------------------------------------------
+
+part
+    id               = "8515";
+    desc             = "AT90S8515";
+    stk500_devcode   = 0x60;
+    avr910_devcode   = 0x38;
+    signature        = 0x1e 0x93 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8",
+                          "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 8192;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+      ;
+    memory "lock"
+	size		= 1;
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s8535
+#------------------------------------------------------------
+
+part
+    id               = "8535";
+    desc             = "AT90S8535";
+    stk500_devcode   = 0x61;
+    avr910_devcode   = 0x68;
+    signature        = 0x1e 0x93 0x03;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 8192;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+	read		= "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  o";
+	write		= "1  0  1  0   1  1  0  0   1  0  1  1   1  1  1  i",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+    memory "lock"
+	size		= 1;
+	read		= "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
+			  "x  x  x  x   x  x  x  x   o  o  x  x   x  x  x  x";
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega103
+#------------------------------------------------------------
+
+part
+    id               = "m103";
+    desc             = "ATMEGA103";
+    stk500_devcode   = 0xB1;
+    avr910_devcode   = 0x41;
+    signature        = 0x1e 0x97 0x01;
+    chip_erase_delay = 112000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE,
+        0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE,
+        0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A,
+        0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 10;
+
+    memory "eeprom"
+        size            = 4096;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 22000;
+        max_write_delay = 56000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x11;
+	delay		= 70;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0  x x x x  x x x x",
+                          "x x x x  x x x x  x x o x  o 1 o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 1  i 1 i i",
+                          "x x x x  x x x x  x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega64
+#------------------------------------------------------------
+
+part
+    id               = "m64";
+    desc             = "ATMEGA64";
+    has_jtag         = yes;
+    stk500_devcode   = 0xA0;
+    avr910_devcode   = 0x45;
+    signature        = 0x1e 0x96 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x22;
+    spmcr               = 0x68;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x x i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+
+#------------------------------------------------------------
+# ATmega128
+#------------------------------------------------------------
+
+part
+    id               = "m128";
+    desc             = "ATMEGA128";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB2;
+    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x97 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x22;
+    spmcr               = 0x68;
+    rampz               = 0x3b;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x x i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN128
+#------------------------------------------------------------
+
+part
+    id               = "c128";
+    desc             = "AT90CAN128";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x97 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN64
+#------------------------------------------------------------
+
+part
+    id               = "c64";
+    desc             = "AT90CAN64";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x96 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN32
+#------------------------------------------------------------
+
+part
+    id               = "c32";
+    desc             = "AT90CAN32";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x95 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 256;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega16
+#------------------------------------------------------------
+
+part
+    id               = "m16";
+    desc             = "ATMEGA16";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82;
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x94 0x03;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 100;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "calibration"
+        size            = 4;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega164P
+#------------------------------------------------------------
+
+# close to ATmega16
+
+part
+    id               = "m164p";
+    desc             = "ATMEGA164P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x94 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega324P
+#------------------------------------------------------------
+
+# similar to ATmega164P
+
+part
+    id               = "m324p";
+    desc             = "ATMEGA324P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x95 0x08;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega644
+#------------------------------------------------------------
+
+# similar to ATmega164
+
+part
+    id               = "m644";
+    desc             = "ATMEGA644";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x96 0x09;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega644P
+#------------------------------------------------------------
+
+# similar to ATmega164p
+
+part
+    id               = "m644p";
+    desc             = "ATMEGA644P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x96 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega1284P
+#------------------------------------------------------------
+
+# similar to ATmega164p
+
+part
+    id               = "m1284p";
+    desc             = "ATMEGA1284P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x97 0x05;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega162
+#------------------------------------------------------------
+
+part
+    id               = "m162";
+    desc             = "ATMEGA162";
+    has_jtag         = yes;
+    stk500_devcode   = 0x83;
+    avr910_devcode   = 0x63;
+    signature        = 0x1e 0x94 0x04;
+    chip_erase_delay = 9000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+
+    idr              = 0x04;
+    spmcr            = 0x57;
+    allowfullpagebitstream = yes;
+
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+       mode        = 0x41;
+    delay       = 10;
+    blocksize   = 128;
+    readsize    = 256;
+
+        ;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+                read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+                write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+        ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        ;
+
+    memory "signature"
+        size            = 3;
+
+        read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+        ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+;
+
+
+
+#------------------------------------------------------------
+# ATmega163
+#------------------------------------------------------------
+
+part
+    id               = "m163";
+    desc             = "ATMEGA163";
+    stk500_devcode   = 0x81;
+    avr910_devcode   = 0x64;
+    signature        = 0x1e 0x94 0x02;
+    chip_erase_delay = 32000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 30;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 2;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 2;
+
+
+   memory "eeprom"
+        size            = 512;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+        mode            = 0x41;
+        delay           = 20;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x11;
+	delay		= 20;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o x x  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i 1 1  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  1 o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   1 1 1 1  1 i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  0 x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega169
+#------------------------------------------------------------
+
+part
+    id               = "m169";
+    desc             = "ATMEGA169";
+    has_jtag         = yes;
+    stk500_devcode   = 0x85;
+    avr910_devcode   = 0x78;
+    signature        = 0x1e 0x94 0x05;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega329
+#------------------------------------------------------------
+
+part
+    id               = "m329";
+    desc             = "ATMEGA329";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x03;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega329P
+#------------------------------------------------------------
+# Identical to ATmega329 except of the signature
+
+part
+    id               = "m329p";
+    desc             = "ATMEGA329P";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x0b;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3290
+#------------------------------------------------------------
+
+# identical to ATmega329
+
+part
+    id               = "m3290";
+    desc             = "ATMEGA3290";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x04;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a3   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3290P
+#------------------------------------------------------------
+
+# identical to ATmega3290 except of the signature
+
+part
+    id               = "m3290p";
+    desc             = "ATMEGA3290P";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x0c;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a3   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega649
+#------------------------------------------------------------
+
+part
+    id               = "m649";
+    desc             = "ATMEGA649";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x96 0x03;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega6490
+#------------------------------------------------------------
+
+# identical to ATmega649
+
+part
+    id               = "m6490";
+    desc             = "ATMEGA6490";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x96 0x04;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega32
+#------------------------------------------------------------
+
+part
+    id               = "m32";
+    desc             = "ATMEGA32";
+    has_jtag         = yes;
+    stk500_devcode   = 0x91;
+    avr910_devcode   = 0x72;
+    signature        = 0x1e 0x95 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = yes;
+
+   memory "eeprom"
+        paged           = no;   /* leave this "no" */
+        page_size       = 4;    /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o o";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega161
+#------------------------------------------------------------
+
+part
+    id               = "m161";
+    desc             = "ATMEGA161";
+    stk500_devcode   = 0x80;
+    avr910_devcode   = 0x60;
+    signature        = 0x1e 0x94 0x01;
+    chip_erase_delay = 28000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 30;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 2;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 2;
+
+   memory "eeprom"
+        size            = 512;
+        min_write_delay = 3400;
+        max_write_delay = 3400;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 14000;
+        max_write_delay = 14000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 16;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x o x o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 x  x x x x",
+                          "x x x x  x x x x   1 i 1 i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega8
+#------------------------------------------------------------
+
+part
+    id               = "m8";
+    desc             = "ATMEGA8";
+    stk500_devcode   = 0x70;
+    avr910_devcode   = 0x76;
+    signature        = 0x1e 0x93 0x07;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 10000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        page_size       = 4;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0  0  1  1   1  0  0  0   0  0  x  x   x  x  x  x",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega8515
+#------------------------------------------------------------
+
+part
+    id               = "m8515";
+    desc             = "ATMEGA8515";
+    stk500_devcode   = 0x63;
+    avr910_devcode   = 0x3A;
+    signature        = 0x1e 0x93 0x06;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+ read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+ write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0     0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0   o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+
+#------------------------------------------------------------
+# ATmega8535
+#------------------------------------------------------------
+
+part
+    id               = "m8535";
+    desc             = "ATMEGA8535";
+    stk500_devcode   = 0x64;
+    avr910_devcode   = 0x69;
+    signature        = 0x1e 0x93 0x08;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATtiny26
+#------------------------------------------------------------
+
+part
+    id                  = "t26";
+    desc                = "ATTINY26";
+    stk500_devcode      = 0x21;
+    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x91 0x09;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 9000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 2048;
+        page_size       = 32;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 16;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  x x x i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  x x x o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny261
+#------------------------------------------------------------
+# Close to ATtiny26
+
+part
+    id                  = "t261";
+    desc                = "ATTINY261";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x91 0x0c;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 128;
+        page_size       = 4;
+        num_pages       = 32;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 2048;
+        page_size       = 32;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny461
+#------------------------------------------------------------
+# Close to ATtiny261
+
+part
+    id                  = "t461";
+    desc                = "ATTINY461";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x92 0x08;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 256;
+        page_size       = 4;
+        num_pages       = 64;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = " 1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 4096;
+        page_size       = 64;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0   0  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        read_hi         = "  0  0  1  0   1   0  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1   1  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5  x   x   x  x  x",
+                          "  x  x  x  x   x   x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny861
+#------------------------------------------------------------
+# Close to ATtiny461
+
+part
+    id                  = "t861";
+    desc                = "ATTINY861";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x93 0x0d;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 512;
+        num_pages       = 128;
+        page_size       = 4;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = " 1  0  1  0   0  0  0  0    x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o  o";
+
+        write           = " 1  1  0  0   0  0  0  0    x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i  i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0   0  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        read_hi         = "  0  0  1  0   1   0  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1   1  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5  x   x   x  x  x",
+                          "  x  x  x  x   x   x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATmega48
+#------------------------------------------------------------
+
+part
+    id               = "m48";
+    desc             = "ATMEGA48";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x59;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x92 0x05;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 45000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 256;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 4096;
+        page_size       = 64;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0    0 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0    0 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega88
+#------------------------------------------------------------
+
+part
+    id               = "m88";
+    desc             = "ATMEGA88";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x73;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x93 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 512;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega168
+#------------------------------------------------------------
+
+part
+    id              = "m168";
+    desc            = "ATMEGA168";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode  = 0x86;
+    # avr910_devcode = 0x;
+    signature       = 0x1e 0x94 0x06;
+    pagel           = 0xd7;
+    bs2             = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+                       "x x x x x x x x x x x x x x x x";
+
+    chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
+                       "x x x x x x x x x x x x x x x x";
+
+    timeout         = 200;
+    stabdelay       = 100;
+    cmdexedelay     = 25;
+    synchloops      = 32;
+    bytedelay       = 0;
+    pollindex       = 3;
+    pollvalue       = 0x53;
+    predelay        = 1;
+    postdelay       = 1;
+    pollmethod      = 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 512;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = " 1 0 1 0 0 0 0 0",
+                          " 0 0 0 x x x x a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " o o o o o o o o";
+
+        write           = " 1 1 0 0 0 0 0 0",
+                          " 0 0 0 x x x x a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+        ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = " 0 0 1 0 0 0 0 0",
+                          " 0 0 0 a12 a11 a10 a9 a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " o o o o o o o o";
+
+        read_hi          = " 0 0 1 0 1 0 0 0",
+                           " 0 0 0 a12 a11 a10 a9 a8",
+                           " a7 a6 a5 a4 a3 a2 a1 a0",
+                           " o o o o o o o o";
+
+        loadpage_lo     = " 0 1 0 0 0 0 0 0",
+                          " 0 0 0 x x x x x",
+                          " x x a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+        loadpage_hi     = " 0 1 0 0 1 0 0 0",
+                          " 0 0 0 x x x x x",
+                          " x x a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+        writepage       = " 0 1 0 0 1 1 0 0",
+                          " 0 0 0 a12 a11 a10 a9 a8",
+                          " a7 a6 x x x x x x",
+                          " x x x x x x x x";
+
+        mode        = 0x41;
+        delay       = 6;
+        blocksize   = 128;
+        readsize    = 256;
+
+        ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
+                          "x x x x x x x x o o o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
+                          "x x x x x x x x i i i i i i i i";
+        ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
+                          "x x x x x x x x o o o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
+                          "x x x x x x x x i i i i i i i i";
+        ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
+                          "x x x x x x x x x x x x x o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
+                          "x x x x x x x x x x x x x i i i";
+        ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
+                          "x x x x x x x x x x o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
+                          "x x x x x x x x 1 1 i i i i i i";
+        ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
+                          "0 0 0 0 0 0 0 0 o o o o o o o o";
+        ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
+                          "x x x x x x a1 a0 o o o o o o o o";
+        ;
+;
+
+#------------------------------------------------------------
+# ATtiny88
+#------------------------------------------------------------
+
+part
+    id               = "t88";
+    desc             = "attiny88";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x73;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x93 0x11;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 64;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 64;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega328P
+#------------------------------------------------------------
+
+part
+    id			= "m328p";
+    desc		= "ATMEGA328P";
+    has_debugwire	= yes;
+    flash_instr		= 0xB6, 0x01, 0x11;
+    eeprom_instr	= 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+			  0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+			  0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode	= 0x86;
+    # avr910_devcode	= 0x;
+    signature		= 0x1e 0x95 0x0F;
+    pagel		= 0xd7;
+    bs2			= 0xc2;
+    chip_erase_delay	= 9000;
+    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+		 "x x x x x x x x x x x x x x x x";
+
+    chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
+		 "x x x x x x x x x x x x x x x x";
+
+    timeout	= 200;
+    stabdelay	= 100;
+    cmdexedelay	= 25;
+    synchloops	= 32;
+    bytedelay	= 0;
+    pollindex	= 3;
+    pollvalue	= 0x53;
+    predelay	= 1;
+    postdelay	= 1;
+    pollmethod	= 1;
+
+    pp_controlstack =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay	= 100;
+    progmodedelay	= 0;
+    latchcycles		= 5;
+    togglevtg		= 1;
+    poweroffdelay	= 15;
+    resetdelayms	= 1;
+    resetdelayus	= 0;
+    hvleavestabdelay	= 15;
+    resetdelay		= 15;
+    chiperasepulsewidth	= 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+	paged		= no;
+	page_size	= 4;
+	size		= 1024;
+	min_write_delay = 3600;
+	max_write_delay = 3600;
+	readback_p1	= 0xff;
+	readback_p2	= 0xff;
+	read = " 1 0 1 0 0 0 0 0",
+	       " 0 0 0 x x x a9 a8",
+	       " a7 a6 a5 a4 a3 a2 a1 a0",
+	       " o o o o o o o o";
+
+	write = " 1 1 0 0 0 0 0 0",
+	      	" 0 0 0 x x x a9 a8",
+		" a7 a6 a5 a4 a3 a2 a1 a0",
+		" i i i i i i i i";
+
+	loadpage_lo = " 1 1 0 0 0 0 0 1",
+		      " 0 0 0 0 0 0 0 0",
+		      " 0 0 0 0 0 0 a1 a0",
+		      " i i i i i i i i";
+
+	writepage = " 1 1 0 0 0 0 1 0",
+		    " 0 0 x x x x a9 a8",
+		    " a7 a6 a5 a4 a3 a2 0 0",
+		    " x x x x x x x x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+	paged		= yes;
+	size		= 32768;
+	page_size	= 128;
+	num_pages	= 256;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	readback_p1	= 0xff;
+	readback_p2	= 0xff;
+	read_lo = " 0 0 1 0 0 0 0 0",
+		  " 0 0 a13 a12 a11 a10 a9 a8",
+		  " a7 a6 a5 a4 a3 a2 a1 a0",
+		  " o o o o o o o o";
+
+	read_hi = " 0 0 1 0 1 0 0 0",
+		  " 0 0 a13 a12 a11 a10 a9 a8",
+		  " a7 a6 a5 a4 a3 a2 a1 a0",
+		  " o o o o o o o o";
+
+	loadpage_lo = " 0 1 0 0 0 0 0 0",
+		      " 0 0 0 x x x x x",
+		      " x x a5 a4 a3 a2 a1 a0",
+		      " i i i i i i i i";
+
+	loadpage_hi = " 0 1 0 0 1 0 0 0",
+		      " 0 0 0 x x x x x",
+		      " x x a5 a4 a3 a2 a1 a0",
+		      " i i i i i i i i";
+
+	writepage = " 0 1 0 0 1 1 0 0",
+		    " 0 0 a13 a12 a11 a10 a9 a8",
+		    " a7 a6 x x x x x x",
+		    " x x x x x x x x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+
+    ;
+
+    memory "lfuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
+	       "x x x x x x x x o o o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
+	      	"x x x x x x x x i i i i i i i i";
+    ;
+
+    memory "hfuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
+	       "x x x x x x x x o o o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
+	      	"x x x x x x x x i i i i i i i i";
+    ;
+
+    memory "efuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
+	       "x x x x x x x x x x x x x o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
+	      	"x x x x x x x x x x x x x i i i";
+    ;
+
+    memory "lock"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
+	       "x x x x x x x x x x o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
+	      	"x x x x x x x x 1 1 i i i i i i";
+    ;
+
+    memory "calibration"
+	size = 1;
+	read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
+	       "0 0 0 0 0 0 0 0 o o o o o o o o";
+    ;
+
+    memory "signature"
+	size = 3;
+	read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
+	       "x x x x x x a1 a0 o o o o o o o o";
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny2313
+#------------------------------------------------------------
+
+part
+     id            = "t2313";
+     desc          = "ATtiny2313";
+     has_debugwire = yes;
+     flash_instr   = 0xB2, 0x0F, 0x1F;
+     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+     stk500_devcode   = 0x23;
+##   Use the ATtiny26 devcode:
+     avr910_devcode   = 0x5e;
+     signature        = 0x1e 0x91 0x0a;
+     pagel            = 0xD4;
+     bs2              = 0xD6;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
+        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
+        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
+        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+         read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+# The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
+# The information in the data sheet of April/2004 is wrong, this works:
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM2
+#------------------------------------------------------------
+
+part
+     id            = "pwm2";
+     desc          = "AT90PWM2";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x81;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+#   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM3
+#------------------------------------------------------------
+
+# Completely identical to AT90PWM2 (including the signature!)
+
+part
+     id            = "pwm3";
+     desc          = "AT90PWM3";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x81;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+#   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM2B
+#------------------------------------------------------------
+# Same as AT90PWM2 but different signature.
+
+part
+     id            = "pwm2b";
+     desc          = "AT90PWM2B";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x83;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM3B
+#------------------------------------------------------------
+
+# Completely identical to AT90PWM2B (including the signature!)
+
+part
+     id            = "pwm3b";
+     desc          = "AT90PWM3B";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x83;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny25
+#------------------------------------------------------------
+
+part
+     id            = "t25";
+     desc          = "ATtiny25";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x91 0x08;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny25 has Signature Bytes: 0x1E 0x91 0x08.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny45
+#------------------------------------------------------------
+
+part
+     id            = "t45";
+     desc          = "ATtiny45";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x92 0x06;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack     =
+	0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 256;
+         page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 4096;
+         page_size       = 64;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny85
+#------------------------------------------------------------
+
+part
+     id            = "t85";
+     desc          = "ATtiny85";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x93 0x0b;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a8 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0  0",
+                           "  0  0  0  0  a11 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATmega640
+#------------------------------------------------------------
+# Almost same as ATmega1280, except for different memory sizes
+
+part
+    id               = "m640";
+    desc             = "ATMEGA640";
+    signature        = 0x1e 0x96 0x08;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega1280
+#------------------------------------------------------------
+
+part
+    id               = "m1280";
+    desc             = "ATMEGA1280";
+    signature        = 0x1e 0x97 0x03;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega1281
+#------------------------------------------------------------
+# Identical to ATmega1280
+
+part
+    id               = "m1281";
+    desc             = "ATMEGA1281";
+    signature        = 0x1e 0x97 0x04;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega2560
+#------------------------------------------------------------
+
+part
+    id               = "m2560";
+    desc             = "ATMEGA2560";
+    signature        = 0x1e 0x98 0x01;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 262144;
+        page_size       = 256;
+        num_pages       = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega2561
+#------------------------------------------------------------
+
+part
+    id               = "m2561";
+    desc             = "ATMEGA2561";
+    signature        = 0x1e 0x98 0x02;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 262144;
+        page_size       = 256;
+        num_pages       = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega128RFA1
+#------------------------------------------------------------
+# Identical to ATmega2561 but half the ROM
+
+part
+    id               = "m128rfa1";
+    desc             = "ATMEGA128RFA1";
+    signature        = 0x1e 0xa7 0x01;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xE2;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny24
+#------------------------------------------------------------
+
+part
+     id            = "t24";
+     desc          = "ATtiny24";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x91 0x0b;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny44
+#------------------------------------------------------------
+
+part
+     id            = "t44";
+     desc          = "ATtiny44";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+                     0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+                     0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x92 0x07;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 256;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 4096;
+         page_size       = 64;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny44 has Signature Bytes: 0x1E 0x92 0x07.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny84
+#------------------------------------------------------------
+
+part
+     id            = "t84";
+     desc          = "ATtiny84";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x93 0x0c;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a8 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0  0",
+                           "  0  0  0  0  a11 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATmega32u4
+#------------------------------------------------------------
+
+part
+    id               = "m32u4";
+    desc             = "ATmega32U4";
+    signature        = 0x1e 0x95 0x87;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB646
+#------------------------------------------------------------
+
+part
+    id               = "usb646";
+    desc             = "AT90USB646";
+    signature        = 0x1e 0x96 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB647
+#------------------------------------------------------------
+# identical to AT90USB646
+
+part
+    id               = "usb647";
+    desc             = "AT90USB647";
+    signature        = 0x1e 0x96 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB1286
+#------------------------------------------------------------
+
+part
+    id               = "usb1286";
+    desc             = "AT90USB1286";
+    signature        = 0x1e 0x97 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB1287
+#------------------------------------------------------------
+# identical to AT90USB1286
+
+part
+    id               = "usb1287";
+    desc             = "AT90USB1287";
+    signature        = 0x1e 0x97 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90USB162
+#------------------------------------------------------------
+
+part
+    id               = "usb162";
+    desc             = "AT90USB162";
+    has_jtag         = no;
+    has_debugwire    = yes;
+    signature        = 0x1e 0x94 0x82;
+    chip_erase_delay = 9000;
+    reset            = io;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+    pagel            = 0xD7;
+    bs2              = 0xC6;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        num_pages       = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB82
+#------------------------------------------------------------
+# Changes against AT90USB162 (beside IDs)
+#    memory "flash"
+#        size            = 8192;
+#        num_pages       = 64;
+
+part
+    id               = "usb82";
+    desc             = "AT90USB82";
+    has_jtag         = no;
+    has_debugwire    = yes;
+    signature        = 0x1e 0x93 0x82;
+    chip_erase_delay = 9000;
+    reset            = io;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+    pagel            = 0xD7;
+    bs2              = 0xC6;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        num_pages       = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 128;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega325
+#------------------------------------------------------------
+
+part
+    id               = "m325";
+    desc             = "ATMEGA325";
+    signature        = 0x1e 0x95 0x05;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega645
+#------------------------------------------------------------
+
+part
+    id               = "m645";
+    desc             = "ATMEGA645";
+    signature        = 0x1E 0x96 0x05;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3   0   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 8;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "   0   0   1   0      0   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        read_hi         = "   0   0   1   0      1   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "   0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   0   0   0   0      0   0   0   0";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3250
+#------------------------------------------------------------
+
+part
+    id               = "m3250";
+    desc             = "ATMEGA3250";
+    signature        = 0x1E 0x95 0x06;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega6450
+#------------------------------------------------------------
+
+part
+    id               = "m6450";
+    desc             = "ATMEGA6450";
+    signature        = 0x1E 0x96 0x06;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3   0   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "   0   0   1   0      0   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        read_hi         = "   0   0   1   0      1   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "   0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   0   0   0   0      0   0   0   0";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATXMEGA64A1
+#------------------------------------------------------------
+
+part
+    id		= "x64a1";
+    desc	= "ATXMEGA64A1";
+    signature	= 0x1e 0x96 0x4e;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A1
+#------------------------------------------------------------
+
+part
+    id		= "x128a1";
+    desc	= "ATXMEGA128A1";
+    signature	= 0x1e 0x97 0x4c;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A1REVD
+#------------------------------------------------------------
+
+part
+    id		= "x128a1d";
+    desc	= "ATXMEGA128A1REVD";
+    signature	= 0x1e 0x97 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA192A1
+#------------------------------------------------------------
+
+part
+    id		= "x192a1";
+    desc	= "ATXMEGA192A1";
+    signature	= 0x1e 0x97 0x4e;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00030000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0082e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00830000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00032000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A1
+#------------------------------------------------------------
+
+part
+    id		= "x256a1";
+    desc	= "ATXMEGA256A1";
+    signature	= 0x1e 0x98 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA64A3
+#------------------------------------------------------------
+
+part
+    id		= "x64a3";
+    desc	= "ATXMEGA64A3";
+    signature	= 0x1e 0x96 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A3
+#------------------------------------------------------------
+
+part
+    id		= "x128a3";
+    desc	= "ATXMEGA128A3";
+    signature	= 0x1e 0x97 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA192A3
+#------------------------------------------------------------
+
+part
+    id		= "x192a3";
+    desc	= "ATXMEGA192A3";
+    signature	= 0x1e 0x97 0x44;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00030000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0082e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00830000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00032000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A3
+#------------------------------------------------------------
+
+part
+    id		= "x256a3";
+    desc	= "ATXMEGA256A3";
+    signature	= 0x1e 0x98 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A3B
+#------------------------------------------------------------
+
+part
+    id		= "x256a3b";
+    desc	= "ATXMEGA256A3B";
+    signature	= 0x1e 0x98 0x43;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA16A4
+#------------------------------------------------------------
+
+part
+    id		= "x16a4";
+    desc	= "ATXMEGA16A4";
+    signature	= 0x1e 0x94 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0400;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00004000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x00803000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00804000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00005000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA32A4
+#------------------------------------------------------------
+
+part
+    id		= "x32a4";
+    desc	= "ATXMEGA32A4";
+    signature	= 0x1e 0x95 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0400;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00008000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x00807000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00808000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00009000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA64A4
+#------------------------------------------------------------
+
+part
+    id		= "x64a4";
+    desc	= "ATXMEGA64A4";
+    signature	= 0x1e 0x96 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A4
+#------------------------------------------------------------
+
+part
+    id		= "x128a4";
+    desc	= "ATXMEGA128A4";
+    signature	= 0x1e 0x97 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+
+#------------------------------------------------------------
+# AVR32UC3A0512
+#------------------------------------------------------------
+
+part
+    id		= "ucr2";
+    desc	= "32UC3A0512";
+    signature	= 0xED 0xC0 0x3F;
+    has_jtag	= yes;
+    is_avr32    = yes;
+
+    memory "flash"
+        paged           = yes;
+        page_size		= 512;               # bytes
+        readsize		= 512;				 # bytes
+        num_pages       = 1024;              # could be set dynamicly
+        size			= 0x00080000;		 # could be set dynamicly
+        offset			= 0x80000000;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny4
+#------------------------------------------------------------
+
+part
+    id		= "t4";
+    desc	= "ATtiny4";
+    signature	= 0x1e 0x8f 0x0a;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 512;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny5
+#------------------------------------------------------------
+
+part
+    id		= "t5";
+    desc	= "ATtiny5";
+    signature	= 0x1e 0x8f 0x09;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 512;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny9
+#------------------------------------------------------------
+
+part
+    id		= "t8";
+    desc	= "ATtiny9";
+    signature	= 0x1e 0x90 0x08;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 1024;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny10
+#------------------------------------------------------------
+
+part
+    id		= "t10";
+    desc	= "ATtiny10";
+    signature	= 0x1e 0x90 0x03;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 1024;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
diff --git a/buildroot/share/atom/avrdude_5.10_linux b/buildroot/share/atom/avrdude_5.10_linux
new file mode 100644
index 0000000000000000000000000000000000000000..0b7f3fda43501321935378999e219175e706ef87
GIT binary patch
literal 1159576
zcmbrn349dA5<kA1WFaVVf@C!+KB6odL?Kaw39_1njZ9#Jk;^D3U`QkyAi^#L<cRL>
zGvl}r@j{>aP&`mPcpeBmg@iyBJUKiNRN_6uatQ(vg#CT1duDesu<!T(eg080-PP6A
z)z#J2)zv+d`9+?alB`yX{*!FE!9uw$9u6tg3d)vs(NY#mp(Wqa3BP+<9F`7%rr=+p
zR%(8>X{7aMs)m=0C)LYO;sEorn}(-9bq?ui)5^~D*ffEtS}gk0V##88sz<!$RPgeg
z3I~Jh&lPDbYsneHpL#uFkLso0%j>1z%j@Y+i^jkH)cZ%+^lzkAZhpE^MnC$KaOtP?
zSMNkhw;m@6o&NL)3~bS#dc9jvkNEum`jf694%gaCB$q8`aYX&8k3-+;s=NAK+qZh+
zRn=8fe6?5A=J&g*-?e?FPwjIx>o?IS+`+>}F#^;ZT~x$#2L2I@${VhjGiC0?uEP#o
z?+LB^^6jOks_q*`Ww+s<K5iCUmZi>`kwmcD@oy~t^}6_xZk3}Zq!%2LyS@A3v2y`R
z`14ORekO#o(a@RThtcqv;N23?8Ipj`&IEKOC4lcj56;x?(+S{b1D=I{=ARh=oQclc
z3EJ(Sfd5_z@JA((Lq-DpZ3*yiP5|GKfX;6T@QV}R|C~S$z65k0PJq8D0o;{9ZZ9Oj
zACsWnw-WGwdjfcA0{W>5=#NZ*zcB&*WeMQ#C4i4k&~A1D`3y)v=eh)R1}4DIOhEt3
z1pPfH0sTn{;Fp6=7XF!kE=|DC!wKLYC4d(uXtxRto@xI6nE-w$0i8|>+TET2-a7%E
zqy%zak$|5Q3E<BppkJDRpScO>e4K#J@dWTW3E;C5wEK91b{|Us&q+Y%wFLMVCBXM5
zfPazzesh9xxita2F#$ir63FMV1nu?%oh<w_|D+|r@1B64|DxSX%|wu&kbuss3Hbaq
z0si0w_&XB7??T&Wns+aNeizFHmey$w#;xw>C2R15Cb$*!3EwikJ^pbGzs-bifj>2w
z+^2q)am6D`#!al4R&jULbZ^D9ktKtwr%tIDIpMDA3d^{0cTb)=W!!Y{glXP!<2dRW
z5o@N-v{X;Mo5+@PveT!Q-&^4Yh3Vd!@|s!W$|v1xneLs2Bw#hus-}1=8Ejnf&Esl(
z-f~Oj)S8MZgfgXkat%GFl~0;xsi~MYZR#{ssRF@*f^pNQmrs~dX(^vNWlBXkk*}Os
zQSIf_tL~mMp_)@*t$^+Fd#Pw#<%B8}R8&)yX%!QytEZL&Z(`LH%fzY~RAZu#HR+u?
zk#gRtj92f}YD?Ah3106kOL^t=3UAf)nu>~vmdd*;ywfe^I+bbF#5PL3Rg){GSteIZ
zMuw>1fA9zXr%WA(1}Au{rcSYV%TWrF(=4DewZ>~HudbLd4M@}#gIK`bRG-&U$wh<T
z(>2D%u_j22mF3k_r&n;Wui7#>#!&f$=@lfyapTIpvuY~F-9^n)dlge=SkUH#X?LR*
zhJ2c(YHGQ+nu;b(o$kGB)|3g8Y0#%nX~zjhM5D-L<EyT=R92zaQ!T#f)fE*rmdcsa
zs=O7JN{DtM5hF=Vt(-W4h8prP4nKy}TMiT^0-ZtcR9_7Snz2a=Lt4U>L+b%XV(QEo
zLV4|kag|jV>#Eu4eua0&UA{_4V+wkL+6LCys7>XgHf~%k^ubHxGkNL^^b&dpKFX;I
z8l0f%5RzQ`biE^u)+WH@2~e0yUZ9JJI!z)Yo+fxJYOB1K!JguQgT`Im=juLrvGjGZ
zRPMF$WV}2Myrz#Kjk%wMeM<`amx3q#M?1YU{bys)4u-OhNYlSF{Racd;HmgcEyVxp
zq(Rz4<K=ovr$G56{MViiGh5hC(SO*_;$Ig2`7W&LWC2fOsWN`7NSEPB<@9rYRTXx|
zoh*}3PO!%xeG=QuRLe9i{{+i-u*}u+84TZMsn_zHehQ;c^}QERd&!nXT6tH7pJaI+
zdHT`!<GOv_Qo`Z++J0S!H)wFt1mE@!CsbyF?|+ZOCz;@XY4BPTJpFx+UvGjtH27i@
z{00ra%mg2<!B?5!lQj4y6TD7??=Zoi*5HZ>{<a2hGr_|eJhig@`tz*@&osgJY4B_l
ze8V0thkO$}Il|$h34W0VFEhbE*XT?#!GF@=wI=v+4PI}8ch=}HHo+Yle3=QJr@=Rw
z;Da^z4ikKo23Jh*at+>Qf=|=nsdu-R^E?fnX@Z9|c(w`ttOn0F!Ix`r(F9+u!OKkW
z%^G}?3BF5%*P7sp2Cp~4|I*-#P4IK}@^N2gg7?tit4#2I8hn!pK1_q}Fv0KA;ED-8
zMT57Q;PW(i>ZJDae?)_4n&AJ^;Mpel3Jorr;Q!U&WhVG18hnxozDtAGn&1%)UT=b*
z(BO+r@U!=6ayG#)(%`F1@ZK7HlL<aRgYPiGOEkD*g5RmZ+f4AO8a%bCy`1Ybc%}*7
zpuw|E@E0_Az6t)01{Y26W({6uf`6&OCz;^CY4BPT{HO-6H^DpZ=W<?bf@f;*WhQtp
z4Zg|*FVNtdOmL3|-(iB^p}`dse2NBdGr{L;@YH+S%fCT`XPV$IXz*+k{Cy3cZ-R$4
zxM+fZtHH}m@Q4PVWP(REc&!QE^#GT1y$Rk!gD*D0^ECJ}6MV1+UuA;ds=+sz;8hyD
z)das^gDWQZvlQsS&p{LXVr@NYGr_xPaEo>>p!+9&jee>LewoVYr`EI|M?Ifzg3HMq
zKg$I7+c-Si1aGAcEPirK@Un9_e!dCr)#wzO;5r@A1fQkhmzv=98obN|Zydw<8E=Bu
zYy3<y!JpIU)R^E6w{SYOCinskzs>|7^)Byky$Rk(hX?p+FvB%|7MtKpHTp|T@EVQI
zG84R2qqD*UU#8JnWr82PmGjeRf~N|c|4k<Nn;M-hCV1mGPG^S+p0CkqHNoH2=qM)m
zmJyuJK@)tnhTmp_f1|-I_qEsO@uNANR1^Gr4L{uk|4V~sn&1a1aE+fV6MT}^uWS?i
zltw4V1Ya_o)5$l%7i)A1P4J`+T>hd7o~7wwsR`ae!!I+zyJ_(8CU~hvXOan?rQz3@
z;MZ&LS`)lgqf=*s>-hC1_+xdvUkxU>PG_+RuG3j!f){H1EHlB=HGWo@;5vStDekpI
z%j-|wewKO=K*P^66Mn16;VVq=QVqV!1aBR}@f%I>tRfEIWP%qC;_xjdc*8)A&Qz}F
zbk?dJjWRwr8Q_;O2>-Rk0Pkaf?=Zk`Ho#jAa7|@dX{*K$oqf|8sQ#nJ9SN?PBvz!y
z7YR;hrLi9^9!YS`G_#`Y$-G}3k)!y4{*z;Xa|!U0d;^?o6o(fY;3+y0JVgVX+SY$c
z4RGW6b(sN9Jn28<4RBposBDq}jsQdKr^W!Mvr_%1)&TFU1M#dgz_lv@thC+$KgWRI
zV1R2!^Q?5S0j|eVs9=c!-o-#?nE`H$Kd&&ryBhFU8Q>WPc%uPsH^4U;;O80OTMY2?
z4e%WXc%}i~YJelU9s5xX@C##5_)!M<MFx1A0j}TiV8v77dU&w`Kh*&LhXI~$fOj{*
zGY#-813b$Bzr+B~Hoz}6z;g`n9tL>60nRz*g@p!qPXoSafYX_x{!?mzXX`*b%M9>d
z2Kaab{0aknk^$b^0IxB?uQb4G4e+ZB@Hzv$uK`|ffae(C4F-6w0lwG(zuEv_Vt`*`
zfG;z^uQk9|7~pvZ_$mXO&Z6|6Mg#mh9f;>913cdV-(r9l7~ne$@cssPs{ww!0j?O}
z0}Swk2DsAzZ!^GeFu*OE{U@7uqXC|3fEOCz=?1vV0M9hQ2O8j62KXQYJlg<w8{jzx
zc##2~Z-C!qfEOCzgAH)e02dALQUko$053DZhZx}F4e+4`_#^{dySm0oYYcELWX#~T
z2KX=oojL=&)BvwHz%>_#l{OgQn(NHqiw$tig=O$11~|VN#T!{>fNQQZD_CKGYg+{d
zUuA$(yk7qi{d-eI*>+^G!y*P7y-Cq6qJKkbvtDe8=3QFkuta-0@LT9!h!o`~QMuY0
z#ZS)*DNindx`pM>r93VDY9q^^MR{8C)fFtCM0r~3)g>%{+>Jaf@oEFhAEG=h?P?v%
z@1Z=Yw_3yUKT)2Ra&<h*@1#5};c6+%Z=*c9T52K7e@uB=%GDf}Ur%{j!qqI6Uqg9X
zy47@+e~0q4WUCgIf1UEQRI3M10nqbB%F`09wzB*)l&7Ux-NN#VC{IhW+Q{+`Q=XP$
zbp^{mNO@X<)g>%HoAR{ustqhZjq<eQs&y=X59Mj8Rcl!OF3QsqtBz;++bK^=t6IwP
z!zoWos#?hMLnu#6shY#`11V2SsG7y{{V7jNr<%_4S5uyrOx42jS5TgoO7-AL>i?yb
z&!T)Q%U?)&S{l_YEPpQLX-QNYS^g}_(^9CeVEH7<(-NpIVfo{Okf)_jZD9FBlqZ*1
ztz-E;l&2+7tzr3}C{IhDI-ccsQl6GPwUp(zQJ$7MwUFgMraUciY7Wb<r#vlfY8K0{
zp*$^VYC6lmLwRz&RSV0%PI+3|)PsMs@uxg3X=*FWKSOz1%G50^zlid*gsF`z|1jlg
z=~7p){DYLIB}-kx^0O&VOO@Kd^3y0!OO#s2^7l}lmL|1^<?o_AElKKlmcO0yv=phO
zEI*v`v;?VzEI)+uwDhPsEI*L)wB)E+EZ?8<wA85SEPplSX^BxSEPn;%X=zapo?zoo
z`9jLKviyaVr=>*Q!t&=*o|X``k>$^#JS`pS3YJfzJS`dO5|%$c5P4cE)CQJ6M0r{w
z)H;^mLwQ;n)EbumiSo20sN-3FC*^4=P)k{U8|7&UPzzc9W6G21S94f?J>|*dt640+
zhVo?U)pVABhw^0NRSV0%PWhWDfABaPf69}oS6f;B8OoE1SGTbIBFYb^d?U+K{mKU9
z*$=n3&i7#iJ#yOT*!8+)+p7~`edV;m+wch4t$!z3){;TZZB(v8i|Z(@9L8i6<-8Oa
zYS*ovkbV2L$rjgW*%rA8ltRwH#mJ5Vk>w9i{;Kz`L4G7?H>12LcQcBdE07dJS3PY{
zwv2GCw2G3~(Iysn9Bni16IOP4*BaR7wYeT1YqyByTPj`t0mCh#Q1q8uC~7PciarNt
z(cZ}@JLncx?h@8zOmkazisjqf!n%p0EUtnL-b=)g?L$YhMOc?o<D3tZKkpMUl(*;V
zWJ_`R_J_Nj7x~bIqFcpiQ>4Bqu-SW#Te3NbC&_8YW6T|{v93E@ce=(kYf@SWQ-LmJ
zmod3K`eJfSE_O(R%VifPDWMljZ9qMFE7fq0rivl^u}$$BKLd}~cnzsap?iRhhwE0?
z=-kb&QLd3L>F-e^MCr&HCi<h|1AE0wun(1;Din62D5vx!qa#WIM?T=WjV*3RO%%WG
zqhHhL*Yv0o!jwUkuTdp;bM8?_OQ~hRxt6tLMU)}X3M{pvWGe-;LZA=UKGENZ;jrBZ
zK#Oe$E!8cy|BS;!`S4D(bu>4s_$z_Ns&zu=guo)0a8__ntUy7lLZFliqD8q!!?wet
zK>|Nv+aFp=4BJ)$i+=u#s}m^M6~o!ArCc8|KDV_+qiAncU*Gg;eR2N;L)j6xa!CMm
zc})!Q=NdZZcL`6lgdrHfCsg;XsFa>{(1lG=3Rk+NHyk&xwA+!Re0B_-4>>>Cnq+A~
zeOfk^%>;w*(O(Qb%Rr2zD7A>vZe<QhOIk1X+8Nv?1b=~2fsaQ~T|?Tf%%<wHGa1|~
z3&3+oObTum7Tgb)0P|umCR(V*S{xc|^+?A>>p`J=9reB?DNFRPw~7T@e1D4Nn_d3D
zt*(|70rKmIicsXPx3hUPXCt~Cy7&q7JnVKb&k0X5Kj@v?kqOLRaLq*k$tDvLb0_g+
z?g=5Kiy^n8mQb<?g%X97z%v_?q32jFKT&&Lslmz4P&so6iB_t{zen05O8ec?@5<|t
zkiRV|1dhPz3Y9kbkM|cIdJ_(gSf25iXx$n8NtC?~IC;)|7qoJlqC!X>*>(kTAUIx>
z!JMa{Q3yN$uc0pAA_QxZ2-{YVbg<A)<T2QtzYE#K3ZjxyTLI&CKP;2qwuErhsYpZN
z)VuKnvlEGV^>&^qql}B$Gj%YlGl|u?9%(q9FA-g^k)>Y2@yD{t7qe2%_5(m!Lk^wN
z7o3aoNU$s0?gbR}L{GtbZ(3b{i!U|UC<K3HRx<7A2sZ!6H78lrC`3ULWOO&Oa$6s*
z)lBt02H*{40t)$%KB9rMcmp0?KHg3wn}DCU@HlVb<@IRcIo<-92a8(H%AKFy2tmC)
z3!?zG0%`EiFaS5RW}(+^$0X%yjJ1D`BO5gPvN|Ijll-$&twNCeGEw?Q*)o^ax&XDp
zg{kCHV^S!`Y1(R<qaGpaC)@5sYfRJBUjRTUU5~Y>-%!T3Z#W-EbrVO<)sPF-4><Cb
zjPci5X<k<<mFGBe*aTDN{27g6ruJnH?n4ZP3oCL1I`}zCxqM{XP5=%GT`&)zOx}Nx
zu%1}&JFikWu&q+)vtIaDqfoRy0AaWom9*ht3pQGAf&|CFKUZFWkYMP}!XW$iSh2Fy
zeV9QOqOTB0g$1n)Tl!kmQ&^Klxd^?rbpZkOGtz#i9ZAS>G)$@A*_ma6pQn)Y&=Dnb
zoW&AsbV*?$SPe(I?n7>Pgup786TkDjTTofIJwk8`oBxkHXvr3(ANZPKKT5{1_MD>u
z$7_Js3BiY;k$&eAsw)JCkzK+($|5^<J}lIvp~<KmR-8wuo)EYM4m}}c>Ij21gl-x_
zwT{4)>>lhFXx3&zX%@jNP%5ecVAlVHlZ^aqhR~ouJYo>bHrk4AgCcy7QqjNaAPtwd
zGc4_u*eNL2t%4Dgotsdo^qxq<n3s+G3PP42YGp*g<eRYMnCdS89Nhx0>(^l$1ETeW
z7s`9?Q!<5RWn`8sF!0o`r=gW7lBfvaVH)^B4xXifuhYQya&WZ<&eFj2t`msdsewCb
zU?+hwL$c7{zpz0ffn<U0+h9MG3|K@akY*u}M6v^7p~ZU{%D)}Jy0t~`)-Bk~QQbn`
zspEjlgXZLJ1H)3&13!|DgO77aaF29c`C477#Zn}=Pf5rq-AACN6c(jsC4-U}z;re~
zw}Xb?x%6f>_^Utwt$QrqE)dojv@Uxb9;yC4h!fhs?~sr_(UFfi@aya(?-hP$HLvz4
z_OvL%d_k?AsC7uV&34siNi>P-R-rCviqNe_5`%0@X1(%aF~Lwbl!5^op%xSZuM{Hs
zn&a)do_e45=P-IWODN}GwFBrtsYmB9<=S8tbqDiP2piO2COjfcn88MAqY(HElL;lV
zUXqOx<nPz>nLK|l^0`M@-BzYQw%c@!GGO?fv%rZ}SWw2uJ;I!)iQ+Y#nKvaVLU0z<
zdSC-NTSgC1c0Sr4JcZJ(fL#I8*RP8+eLk4>I~^d5P6e2El~)ezb!?TW`Xd@urw}xh
z7OF&LxVY&;@IPdBLbfsR6S%2d0)U5x6msgx+gi&s-To?Uk}ja-hdCBa#b^QJXfeln
z&43jI7KC#rBa=6KGtHFRGUW!aLer#62k0C;14^rC*6+N#gfagKvxUxAIN=*P;UysK
zk{WdmdV#k3BIo|sO`r^K7wgl5{lJWzb~XrswTYnM38k$@x$9PlYww4YDAj5FdI<da
zH)Q#p`#r4TpI|qs^Es%S&0B9G4GY-^eiZNgTd1af08|Jcc4Xat-W?l_WyrRICZ%M1
z0Tk6Bkd)o9O1b+~a?W!%!}*#Dit6()oqp#`)@)ErVM^2wEn<?0Qhg&vUv)4k*s=hn
z_g*aFx;Fr(AN5@n$!Yyj8%|xY9u51Qmm>#_nn8wIw(ZFW+oZbbTp@QN-(Dd%#UTn;
z(Uoz?K@NE-4r$|%MS#HmGt#)4&sLC)Lj6}*s?e$zrA)Xn&G$PO4rP3;!Yn&FXf77=
zSJ8u_;J(`PA>=`voYK39&D>x*TW0d+g}LR-z>XF6tXOIh0>x;;?{sl$k3*+jt4S)N
zG}e(`l=}-4k!-&d<wd!TZt0Uq=iFU^Mwd{e6#F+=iwY{;!h+QhwEsAybTJae@=dh^
zg_S8;1ERh!bN5Ad<h#J#R+Qx5k|YE-AyFjlcOCoM)wI96>uA_21QrtOfulm;pGe5I
z)k8?VMmlOdp^1*^VyN0N%@dmAxDR@G&vlR!+kk!Rk-jPQNI#0w9*=a&0~4C5TsaBs
zmtpn2%>&0RRR|o1bo^~6gy0WI6y-uS#)7tG-X+lG8<B#j7L#U&><<{`SI>h`12}R1
zgVvziaitKv3lf27h5A<T$EE!=Qm}>N;R=5O+931=BlNhV4kZ{$Wh%lV!A9S7zw?)3
z3>65D$8Ls7=R44RBY>!N0dIadTsy-oTzUW;XryGPk8nWoVgy!#jkAdP2YKyXd5n2C
zYU`745~?0057gTaBK78i$+0l(1F!)2owpMw!h-LaGCMEU=mr^GnBm|oOsw2}s4@{%
zo`xNvUQ09Ka4<bkZ$mj+PvNcK!CT*qU5noO9!y&GL11C-i`3S_%XpQo$f3Je@G4!`
z#;bflRV)n4`7abJuZ$r9Zj1~Tr31>hl#z3=d=^U^lrad+kW+)rf8JLcNSVXR<$K6Z
z_|9=b!m0i?sMDY5E7hIL35mgdzW2x}hv+TpwcKTX;acJ+tv|69vVV<5${>CRSW@N-
z77O>se%%+1x<Oq;2db!EC@qO5Sjhe^44>Zh1He*4%wu#8;#l92wubB*;Sm)}J9NYr
zLhJ}b1#%YxQCpWoX>W4$emYTF>n+MtgkH!tBhJV*M9}61Yi!3)h7v~c5yWYf`Fk0~
zWkAW@yoO40k1F>7sE&r)hqm5gmD2|ER_gF_6XQtfhX&-K6JhcKA7XL>Gr%zIgA7Y|
z7vkcTzd#6{*R>EOtuDVZuF{TBSS4g1&AW;EZq(O%y8|3>F+PtJ83!Qr;0>hen&ZYM
zB^5@aa~8r-uK-WBQ~Zd8o~kbAGCgoLYo%UO+7*bh!GHV~P`(oHR#`7aMmlc-(3C4D
zV89DVwL<nBy}xL|O)XSAN>vHFFS!3M>042Ty%QE3gUxq$`b-F34N18C^W4dZKMkEC
ztQ<5|SUIA`msTtft99ph5(1YouG0R(mLDA&4mL2v!_iO}!xvi$cSdL`>;e)bl=dmt
z{_knIyxlcM2p;BYpMlz%yx2TbmZF-vm#fG_C{z|97~lrWV=)Wda4)kX*LbiU|1ZF3
zeI!tdq=RlrrRW7LMe=>z?$doQ!kZ2})GP`9;@jl%AAmhx$QH^WV9bhOl9wV%KKeC-
ze$8aNFlgT_VZm5f0WsupOcP;|?-N5_GRp`*<wnUS&-4H=!vhoTBV+AVHs3=Q{1}DA
zxaY7c7sg!L4=#!&*zCVN(xFnte;4t0=Qts_h6FCG^f+eXH^>&{H+e^6V!ptlan9p8
zY|w|oUgS115qUx{Ir@S%Wj^LTELEAsCt&L_0T>D``(!3wLQ%1>HUoCn;vdj3O9+gE
zNx*8xTJo}%YV?+_<1IDtmS!1SdV{xQZ`aZ>xGc&~J*cIPN`KzcD2#&EQW08W&G=X|
z_vy`SK_m=A)r&VX<P6Qc1qF_GsDYZfUu$MNiqIiLGc)vNX0T?a>CIH}X4dy*a=YjZ
z%?xhWOfPCCLu;n`v}Q<derFF5g()Ay-1oE&yoqtVi6`N$X+xvzRS=p9{2~N{%#NfD
zU?|Q9fwBfmj%IIG0!tM*EsBRjDqT6P_h3PEyRn3@E@k1iyg&Qsll=IvfO`4FxRWYD
z*}uNjVv#ngw~%p?(>4JY`Vd0TNw>5%2NJd4(I#KV+L#-kHh{PO1gm17f!5=T0H25#
zQoVBKZ>OEZvG3;C=>~i9=kLJUz>T4TpcQ)L;#iA7Q<u)?!16o4KsgrIB`_bJkZlcS
z2lbz0Py8U(e~;9pJV#`IBWGGpdz6#ia~1W@{_cCa@t#FE&%pBs&Sb&~+0R*xAjd02
zUpihQwThDJk-p|8xcA*`Yk*Mw9LJS#Z(NrkOc4O%E>^B)kv*J)l~M@o#vJoIdvb1<
zvvF|lWv$0uoJVpA#|9i|$3wuOUE+K^-7@!difEOXLPVXr5Lg0tws)X#*gM!^1Htkd
z3R0o}yj$JCIiKW0(I(jGXMaQI`m(mu8aSqUCF|o_eT@Xx48pnzYn<OX8%S2HB_oA}
z9;PH|xAAK4pc=$Il+V6v4SJSOwYxLqyhnh=78AGRail7tpQ$HEsVdj4&YV~U=V918
z`XKyCT3HCk3q4X;NXzNsIKx-ATlzmC#Fsg-bsRC1Bf8!<DxdNq5V7Y63UuW-?FvJ-
z1*Gq?^Y`9N0{N(5Tr)^vs)_vj@Ls{kcusyb$9~J8tv3<YN$wL|$Xbt&=$gJXqSv4<
zM)VL57uD~<(>S8RKJcN`F9DTpY19n2^q-?CZs3`vCzD^QJdI#;u<`cWgur>+5!}Rg
z*j+FLs+CD1&yI?G4Zr9o5MIEb&gd1apB=!tK7$_lg{1NXD1f`qxV&qLp6uMpu~QBG
zyc5_E#0RXz*%2jcE{Yk1TokGga}s%+!~#y@ssF?Tt6W4RLTMR%dTvAsnyLhzZl#Vx
zMflWeL<+5`d{_POiX=;9yK+4&5HEfK#Y%N6!`VnUvhyFjy_?^Tx3`>#gwkH((;<kG
z$O1SyfA-P^bevN_Jc1~E2RJ7DbHJnRb*9eMM9#}ctk_wAS+xd{In5Ma#|mvrs8Dvk
zK>kZeQ-Dz38ZzA4HU*Pa`GkDzfTJF@m2++*XCv?K7&DW>4DVet#!Xl`$1&Y4r=4Is
z`@C6bRg~?ksTt{8*D4k*843~zEXrx?f#jQv_Ag*O+IM1}Fz%IQqyo3VBoVzD&|A*w
zk!=9Is&@2Fz^`HSrV+h?ptm`jiR9rJy)vSAFSE_gH+bQ@@#*jS5N6JzTti5^nW1q$
z#E}*lkg(BJ(g~%9#@Bt|t1IX0Vc>zUtyC-4&vKowod{3)?gL-Boa!Nc)+&uZf?j`(
z-Zao_rbt#OuaMJwpdG!gI=zR1gxxG#zMS7*&ieX%jAk{_Ea81^<b~n*lH#In6cb7_
z>uKI|K;iRl=?_dXA7OQzM<Kj52tsHh(g9TvgqTW&vQwl9A6FQRicw)cpkS1)FmK`@
zU;UVcTk>*aZC%IP$^u{w-85mtjurbcw5s08u+x^Z(3U;$8p+mq<T7o-DRNBXZs8MQ
zHb=Y$h>@?f5K~$O2cEYa1gDVglx?qr1k`RQFZl)N>PWt-=X20X2vK!$5R1>r&UsWP
zWIymme14vdR@LpWe$-SJ2p(tAEPL{sj8TuyC|0G`-9TLi)XF~k@oz)!zG7+Xouc%U
z=>O$l=}6f0<4aI6l;&p-=Xa2F)c*OU4$GfHcQ-AU&To4<ETb?Jx8f-lw29KM-U~1o
zF9L@)!fAIzTjLGf(M-3d;(646n(Bq}7BMotPNBZobShbt4vJ06jiR+h+<MB3Xrrx4
zBiNY;>I|Fd)j9729gDB8=y%?T3g8U<bjA?fj+`<VT~<VNp~Y4VJS$bN!w6drH-jYl
zL+E#?mB8S6RAl_g578L{^~V-%6}rdpF>sxTFFB3H$3ph5Bq!PViz8-%)mo^N&M#Yt
zq(+?1-$FaFTizvX5vP&)#nK=8A~Klt&%YtFxw658UvNhJ^W*rgk)v>MKSDYwN{8e7
zZ~tBj>Xw2h|F5Ump;W4J=sPqL+~uu6Nk5c;o5OGyavNbIxSebK9$uIK?}=gC!zibp
zux*Z(5&{n*FJ0xOn$Z6qc=$J@=WeE$wRUAdU5F+$`Cfn35Ma*hC#T(jrxXd|x<jO~
zvO%`@K|Z+6_a5x_+n}-zj=seoNmAa~8I2ZPoPp9gJBbV5BH5NixQ)JggZ{|QS*XPV
z6shRKb-KsHBNHdVLD=>QFz6?2`v@sArz+_HY2qk|Dt9x4#ljJgHpR6s2UhM;O->*0
zB3+njTLg!8bygOv`Mwt045C;mrA@|D=w<82A2;%ch{wF_Pzlz_ylzP6Hu`@&<!?%&
z_N4Xx#-y#s3z~4A*OGEx58r-h_6JO}cOg{dorxn&Zt&jumf5s_p$uow_)R~ebn)v*
z^6p}Cend4x_7Sw~OJNu7uKD2c?w<nh=+CXd@}HdOy_%E?kr$G{m^*Mly&p2>dM?{(
zeqbEF5#@^qBN_P@pWo77n4-@^s!TvkF~YVhfWTIz5O3h<C8+Qs^^djNY#1LnUZT_{
ze-J<vnKc}3ScRDsww=;wK;itjVX5f}yK*8*CvY5vn!H-{DXM|veFS#GwieW*pXg&0
zg{Hc>jbmc-nChQ^M8-3T93kR#p)>7I7EE)NfKjg8KcnlMWc0E8_JoY~3G)g4e+&H|
zfol(a{z2NF_Inmd{i@eVDyYgSdO}MVLng{>l4;DKit^bQfR$81+QV8VmYOq_a%x{5
z(I(166$S^|LZHDei>xT`0pz$Uy!s8ydBM-VchL5|tZnC~Fa&EV^tKfns*K5P#N0F4
zSI7f8ZMd$3a253Nc#^L|gprVEVRSwbrQejUU(=E?DAjX)ibDuI4$7h&T!G%vG2AO8
zP1-2EN^t1_ogDfQYsAJQc6KEMKcGTr7)B#zpTY6B-AP)`e}cvu9EfQ09|84Vg-IBV
ztOCv`3W*{9$58DbpmXtUu98ovSaqY35Kyn+sD6%mB~Uf7D(N~&^)4U-HHx4UsFnfM
z6Dlf$TJ+S>m7jNjDAvBHnulMC_bc5VB$5|a2BW-w{?aI~0GHQdQY4bozYTIKG|TDj
zxSSfm<!Vx@kaITt@iq3Ce6At>z*#iX2%J3LlLZXbetCQOWD+Wq&l5mBi=&ov)Ms^j
z2)#N8HDV;ydq5YcyZP2WAE=sqp3u>iW<qB2aguySqPyH)CXkO1e1Y}ZD5G`Txr{_P
z#Zin)5O)bHE&kTs14_K&fT6xr(yTc!D^N80Iw}*~w+6w@Gz(6R3r=58iAD}+MAm5Q
zb;vmwdks47!A`H`@GHJ?ICE}{1U37DUKd}?<b5v9-tIu-_MjR1&*d!vXCv*xvHxMH
z_NhQM=;Ja%C3&l3xE!D2*ay22Vf(jGbX_Iq>QvcfYY?vHs2hQ*iF})mu9Olo6L~U;
z{Ksw4Xan8EJM$b44Ln6h2@k!FE?_<vOMlZ$#)S6XUo8E~E(js0sVs+L>+_l&W0MT!
z`_rkcJ6b?lI-m1Dprja4ktO<Ad=CH%i?ZonWgd;aM2Sszx~Hi5Ph?6qZH+f61Req!
z&e&eo{i(Fg7cu$YPWB)!|3ToB%l|2esfY&>o@c1`Z-8o$e>R~q`B!oIpU-1+r9i`=
zRiTnD|C3N#uJSi<)V+M4e3ET`(a?94mz{a2Q-YW=*@)cOfUKk1Y(OkDAf@OR-H$Am
zPQ`{Lzny8#CgZ-Y5CTMa>KIl7m-Llv&%|KUZM_u$yZk3@LXf^9N|)fW#L#W<TB>oe
z1tB5a*$lfvMW+y^Zc2|_#MWQW^~qlNvdyW*{;(BmfDm|w#4cY?_cit_pRpO{c4WHh
zJGyWc!~2CtPDZzEyjyo($Tae8y+<$t5!7H3q2bInSnnr^C;x_g!=(fGx#*6_yEBZs
zL)<U4^ArLc`6N`<4`QF}L+(+Jbj%f+9CbyXq{C&|b|D+Xu?`28jQd1sC%b(|NYN)r
zP+)e|1xz6x!)9m=4l1<?c{Laf?wg0b$WG8ZC5FaWJ)xd6fh1bL7gnByQJas79_c6D
zZB9oGu^@s9-fW1>8u_-efjlB(lhm1rY+Rr73P6Rgvo~%bvzV6}1M~qPw^7{+9e`r2
zf?+|colvan*K?RbT)*DrIAbXwvQrG*Tn5bDnN0jE0OLkxN(_A-LuXj4Io8KI76$32
z7~W{$Dc^h^^P}P390rROsKa@dzaXBSBRP>{%fO=aL+)nfnp~1?-hde5T|k7VWbzM~
zb&(D$FZHA_g%Es}v@4W%4BrW)W3<o}$kIJ4T!49vDPG#1^Vw+q3=G3^6~Nq(i`=+L
zbsa`&8+Na`yGS2!H?0=zy^l&5DJBJ+p=F|vccDgTkd+3ipvXP{Ybe4(PC5sjh<lq#
zFCc2Z4faE_Q({>5B*;r@(gz{~Na`S{W6aJwC&ck|ubA{7Lu&ApXg<?q_LT2oW_D7$
z`COLU2$jcP6j#rL1=|ov@Gy@Fi`*QVv!CExU#aS)$q4gV2oxnFM_X??Y$_#7o4d^;
z{pKmJaVy<Pzi6fqLMd5Zx;+*Ag6PtPQ@Xw6xgPfkg$EJUvbaKX(Ga1RM@4H}aRIw2
znJzq7gF@vUC<TTFHUpOksA6b(=CDw8Hg<l^kqh<pvE=#=-YZDP#r~F5PeH^xrC7d!
zaily7g`gloX?-#?9bcBn9WV$VQ}_z!pXV{%%`j-?3aTJs|NM!;gp?Uf$n#(WCS;Pq
zgwV~C1GozteS%*#8H?V)VBGAH<~Z`*kSnh4(7irLCC4MRc_7y;vDXgDXGaEBHt>K6
z9m^f}NJK08L>;Cu9mL)2%Ex_x7on9TBU0WCq@n1mSU@MGft^fYK?uVitB<p&D>I8E
zrAXSVe1VH{*wO!s?-86icItWBX2i8hG2LBnY10<5VpIS}q_)c;_B+S9>GFole;ju!
z$R7W1E;o4l@D|dhP{>SnhBJ5zH=_kkTvy`~P`~{)mP22uFPh+}N4Ox63eyXXxeSU<
zqROY?SiPAnK;Cc=<tCvP;{&U8Crk&;m)lT)?!1lw5MtkYOFw^x3F9XFEvH?_Fr29f
zBdsYw0}My`4=}iG%OGPVr>$VIH~VU!mC)M-&S=-TC44M~{Tr5MU_Z#QdjLDKodiVN
zu*n?Q4?xskhx#RPmP%tJmVyLT$pq3fKmz;AVfc0SmCIt7vv^~6qANS6aNM$&;~v<F
zPxW351FG@}gjLyKu>Wj(_)r6_L{NoJ(Jk73)Ds#E6Q1@Vi^@6eobV6en+xY9ko9kh
zMz*t6I!;fwCom=t?4{QLVNbegZ%RDtC<7pOS8yAYzZ)5qbh;BH1ik{8F5K2Z_H<C4
zBZl5^Y+)Jat1m%RWG87xAYKBY_}c_w0eyhjucV9N6bF`Bx&hspo}{H@oNzI!G52U?
zgRrurSpGSp4y{7to)i}@J#}<Z{gvC0&N#n*WapgFFl%UZ5-$DMyF2HI<?D+>9vgIQ
zJvDH=udwhnBs^Ay`)_zhpv96!?`Qar=lK4>H0X@e`0?c5ELe#4m0eIikDLQOI~UWj
zUNr?Fs~zd?(D-OEX1*0?+$GYlI0KKQ!@n3<pVGV7ztLJ!@T+%_C}-fJ=ohQ&K#07X
z8!=cza7dnAEHw>mN$K53l(x8p4>Cqq9$TN%+1Fh6Tb6e{6=Z27d>`RxuyeWx4Q6?y
z&%9TO<zR3%?xKL+H)1HItC&2}k=^Sr(fTp(kJcIX-UHoQ=msrH?ZPzfhNUqr!Xzz`
z6x{o6040lC`a^l?W2|>*%Z)Ile62&YVlb_3kbXBBAu>k8F=?PnG9PtVNv;M$knIg0
z*g(o*FqHbbRgQ%vh*e^MV_sLNNoNc!9gJAi%RrBhf9^INi1s>bGhM6SVzsEXz|`%(
z3nS&e9%!M_$t~8b*zkrf0g}HZ#dWl?qxWp-YZ30H`UPePkRpeaiWVZ_#u}upk8E*-
zyBK@z2W;gw(jKJsq!8RshF`9N1N(O|JUfu1puz#=9FW1*_NjCTl&*d3S3Dcp5p3`g
z^d5P#U%f6xk`^-f7{@@!<v*1o1eOv)d7)dBuga(D1qvc#!b6<_1_EyBoj^*qKi(N-
zVOtlV&`<6@vHW8(G@zGQ5T0>Pul>+{QTiBhIzp4az;x>@N}U~wFAT=C>xE^E`Oc2q
zU8K!oaI-I4eIK+~|HX1!F4d(~MZW4SfjGhHv|jk<BA|$&&b>=QDgVIRC+vpb@2)7$
zsbEX!%CNUtOul#y)sUTEor6cn{yh0bjWBs0No95f7jl%_Hen=AVkH@m9(@Fh4C{#{
z5gK!C>{76mc=T_`HYg0&U)jFsY+NesfLe@S=>V3=+<l7o1d+*eqFufyltb|Fx)r$@
z1?9G}s3lr$-=jRzKz@G6`3KT#=2Nc_X$#xdB1=DE+m*mAL`s>Dx-GWB=#oXfktrF>
z6<xvByqu$oljJIG#Dy<Es+04A$*8$GOF@FUIeZ6me<ryhxc>#lr1g^R<Fn!wGMQiW
zmtNr@62;|3Zm|HATZ9KQ(Kc*z7J_+@?W{CBLiQwhjm45uqDeNlk%>|{0Too2qk_Kw
zbQW{`fxy>?0qgp9!qZ-639}fReLOkAIR68_zG}WnSY^C<E2HB)mmFbu&m4z0I)l*q
zakSY)Om=Q3EehHHf{&yT<EUc@^=zQhl8W6*$le5tA9)D<E97ig(SYj304rat*G4(M
z-XJQO7f4OUm>p;5oLF_zp+<&@8emQXERpoHvVQ{!&VC(uSxW(2a`9)ALSX4bAaJ+x
zJqAORA7NEuj-9U)?xPdcG0lnxEEv~MvJbem8ru(-i7;A)w6=+S{)C)2pv%fgQfoHJ
z*+Pa_SW?J~%M9%Dey6-jt-_YULr9OD%j%Iq#|m|a1qlBYg|*E`-2<&zKBewN5ASjh
zOv}4XyiUHqF+(gT%bTwJ8(mqqgp>t0tQJwfLJgFKN37dJF^oLTrN&gTV7>1k@!pa`
zo0Ex-OgNw=((fhGUbK9zgI*bQI~*B6hixjP%fBa)*7XSNdT>+)jyqufP*PaiQj7yk
zR++P_5={6YWng7bOBN{jvLY^CpAd0fDg}4Gn{))c0@|YzBk?nH`Wah<h9(%Mjz%b%
zdVgYcc!LLFP|3_5Sr?5ClLlZfd_a*JapfsA%32iicCd<zOG0xxT36j&Sy|~iw#O}P
zX=>~4YUyZcI-cBXeJEv7Q)`l|U_Gu3W4u{UXe6lf!A=-L@;Qq_72pXm3pW<`)Dr1H
zN%=2s>w)5?Uy`v=@mPOX&WDl=33bjYF2_Q!AHsv_RbFHR)&!FPmp|{NPIQtZ1WI7o
z=(=C-wjrTwPtxvRmoL`pUW&L_v~DVv+;|7qzaAs@weL4{X=vEpvkj=0p`q%NsmiLg
zqzbz|Qbc)^k|F0;|Dw75#~SFE=CA$2rcNPdBE{n`L+hAn{{)&AJb-~uW%Elc_}+(r
zL0&RYnB_#E|GEyiIvIv(!-~F3xd8Gkkt@)^@5)t>Gx<2_o^rfN>872)WGbNOS}u5@
zE}jKR;z}XEVW^x9F(49>=JI1M2kFnfc*;-E>f+y+=|9oMx0VXXfx!l*5~V{!Df4mi
z@ScryRHbbPtqvmjc!klC&CtOEc#}(c57wk87!?-2i7r!Nw(<f%>YTsHWE5HeariMu
zFjru(-B<{7X!x!TP0b+eOl2v0C6*t79I>Mmn|{Nl7fZbI2*4gVQ8^{Fk~WuEzi=0P
zH7^%@INZ38dhL)<$`=3nbKSjm7F#idBe$n&<7b*@Xv?9#agy5D#d-&4Y>e6i62%O}
z%2wu<+6;>uN0HN<EO=!9{6%Jo7j~rmLMyYME=V3Gu^Yrm=HR^#(b*J0pdQ8HB2o^E
z@^1jisy#)|kaOMBX07-fy;B7kUs&616f2XRz0n3#V=8d<rm#A^PhvnbCDhDwsG!e3
zgMWl`C;#5lT%>qBun41BEPYuleO4m1us%eeqPHz*i@ZDf810XX<u{m%iTmI}fc~nO
z>*z+@g#8AcDc-t|K}qjR<PRN<cv6TVy#%8k*ho1EEdB<Q1ws@bfZ-w#uE1t6|KvBN
zJB}CFMi`R_EmHUmH6XEArMavUoEd^D2Urdp?>IhPu@&I!pcsC?U{TJ-9$M=Gb%r+P
zf~&p*dA=Uz#B^p(jL&CsUo?M}db}9ys@*VlWJifz!}&Xv*HL*CLT9_t$Sc~`>=MM`
zFkrJWGcaJ+Lq(WSl}_u}){MQ8t33PP_Un~A*c~d32Di=27v-C4#qvXS19GFj+)(K$
zxW*D<sx4x#uOk^y;s9Eug+j5`&9PdezBIAmptRn%KerK!i6u19>R+F<%!+q7aY`Rw
zkInjU+R<BFAM$DL%kOMLD^QD)Al4Tea?!tL1+@%45dz;+V(UKEF^m~5Cqy4J>5Q%n
zOb?y|K3@W`FC;3;a=f#ssX+>VNm|LoDIC;*+&o<kkcM-p*O|%c&<oY%F{&)r4&4Ql
zQKnd6;0#00hdedrHV8pK7{IXOKrr?t0~+6yNP|JXYZ{18A!vsJs9k9W%g$GlF{aX1
z3~RR+V*Zkn1B1p@;7Lsd{y`x=**TNYL-xhEdcjqogN~_IfuQo#YSOJbYR5c22wxet
zG$Q(-#qUMwT8Eo_5+U#lLVEH*I5l4tOP?1>VL12L=Lx|=8bEAm`_c|D`V{y3UD5{Z
zhp0!G390!g6#^@f#T4rXe2n;;OYkV68NM3{*U=WMw<Dm-s8Bj2ZrxJ}>x^j)gvDr?
zCV8Q*0H=*U<|gbCh!>)|Mfr%P;0LJA;mTDkR)$4G%YURzdCX#WZ1CN3MPX6!7a>3g
zlh~dc#*`+p7#mTy)G7q&gP&xu4TFmLz}~peg0Nj5VxmSPEt<S#Ut#d5FBko*2XTD;
z0ILuC(2!Q{kzZee0+J3MOe{ea6i|U?0i@t<CJ_mNRt{YSsQM++e4PP*-RQLtFJ$Y^
zpF5s{i#ah_hpHWj8DJc|XQ6O{5PTA~<+)`_5zGR1^zadIEYCLZG!ys;3c<S>u{n-D
zLLdc6dDK|EQ{2CuSkjhK%uIIvZDFcs|98xjP^2~Rll*fq5)=lY?>-<X(GBM&3L3{6
z+|5dif@R2waTValv2$=Te^eRz0cJoII#D=Ku!za@IxISn9x34crNx@i9H*hV^TDw9
zR<Sp*#qv>Q2x$m@7urbFPw%^|N3IY51`=1SxSG*wq@Kcht&NkR^Xl&m%<UryvklYB
zSRO{XM*4Un(iGw2=S5IM*N51xYAk4kSo`yUgq1m;f^T^LHQIw_`JU(E7U3UgnW-_o
zjJvL3OR`0|mp~Mep#il3jMvmL$I}j<%ZPY5kvrnsFy&j=6tydw(u~Sxj(I7^-1V&1
zoC`}oY{_!M{uLtQd37g}O279RqYHUW<rHJIOTF>b()A%)!2McO2R9WQb1lcb5naO8
zl}R7YhRAVT9OoI1GbY~cVrg@+v`M*yI2nWH&$Rv^5;JN9JS%Ct8}7G%Z@woq)^Rym
z-^*yr-jl+NkdYVeBrcMtmq<JKy=dm8j-`d$U>0$#sXTTarhUj+v;c?eHYhSqnLKa+
zGjYOhE3B_}T#mwvs1PsXP@xWY0N&{g@ScDl3!RRCnUNKKbvKimmUbd?zme<_!VO>>
zPBsNwYB9p}Vif!?Ex?9%ZQ7q=DvRGGUE}&nr#;2e*L1B%I)cMAY*0?Pq)(NX5F^C?
z6fe(XzVed>dU+<KgU<uFSiYmSNS^E#<w><g1-}Z9JcX{paLyYbtn4bR^jQk?zxLhW
zf{df=8WhFUBAI;NBG{TtQBz?hE)W*xAM#y*tCBd=_Wd>nR#jUc;YlED3-!2(B3`od
z-+%Xj`A^G-jTue11s6gWx!UQfa`DP&6s~jY?YcFFZ&C-YsG5~b6YhWV2-FDB!UvH;
z_K&gYDUw=Ux41?zD)`<{BOQipBOUf{;2$1A<CmfW(9402C>1QF)}}TOmI9r9Q4Xlb
zPB7GbhDt`26Xp|UHX)u5-DmqF<NA99v5ON>Yr3&ThaG!Qcb>5lrYfoQ!2%ka<*Z{9
z9p__cT<cPh!yerwm$>1nbKeHD-i_#P`DWdi*AAm~_<UE>Z>g?MEwt10ea^Sni1pyZ
z2FKh|4t+ue3V%%o^Hi}B@s&Uj?P6_)`&?<SvB;J)iFbM^Ivu~8pzTWj`5u<QWjqsE
zqMZMqm>p&PhyLNnu~_;OQPogh8%DKQIthiQQzGTUG_AK1`iH&Pf1!C6mwdC^EgdNm
zR<>{l9*cg{$<$uoqN@sh4Fp!sfnB6a+V4MM^J#||x>Dc^Qo8;_AykT6$<Bet*`PH)
zW8`1?6mtcgPlav4IceN)WBJJI4VXCKn_aTQrBd0x48+>m3fwNkEkYbj@jU}wt&=v&
zwmRS;ZjplZd;m@2xSJ>`zAChsPK`A;(EcJt`5Lwo*lWTzH|o((<SlKzcRNzhho01j
zko^WQkFL!8s|R=d+@V4%y#fv-B?&#jz{2SzP8165MS{vBZ@0IXEUum3t_SQAhjS-l
zWELUtBHF$;JQ2R1h<Tm<^s!U9NAdZKmx+vUU^BL4biL@1C|rTv&LQE>w53nrixtRX
z6+R@CZSv+;3fWD#N}6^d<Q=wU;y3*O0wKV|mUbT!#x_Om_o6*q>jcn$V&b}qKoN$W
zC~)pY*XCYCG$dy$(x?G^+h<5dSsc%QqI~{^q|synQ}|x%JjfIGIB1^|w!H#W`ibmR
z7QUs;!qfLF#nKUog02mJ4b_50q&4F-v0yr8DzosO1e=Z%5xar;Ls-Bg*VZDWM>ev2
z!`diXW1A2}{NZ~ki_t9ZcugWxP1Be>L3t<w?LuHKk}yWF?pSzW1n8y_xjVIYV`4n{
z5ZQ*^it+|&1HI;y?wcbI(l&6{<L0Ekfy2=++BR+Cy0ZHR`u+{~(|{rtv|tan2Oofo
zT+QqeR-v=e%xZe~gRffnGF-5pv+6B2Fy@k)+AlP2X_F8P5z+SR4WsLp$Gg=7&^gT>
z!%)#DSyG|3ZmgBmM_-Qm7FyNU2Y_?8xg{8+-v-sET!-^|t3vM@cnYxE;X6w}r6W;z
z_V8JCak0a2%#=pVg8PoL34QxhxEBGj15dvga}3(bUQ~9i21mHljn88R`y$2m=&0I{
zSG^fkH7n0wFI&qhLMK%#u$eqVdC?#rmRpw7uoOvu2*IC0Rv#E)!Sl!&2FKUiG%)8t
zFHhfBt9PSXgF7^YHrB4AO;&t_=3`Z2v@o~8Wy2BH!7soid|HiB<wEf2g42gpW-O4E
z*TGhM{VtY{lD&m$j~W5L2z%OM=_?#i;bN@vMn_F4YoW|IxuE+?%&{N`)Q!d7Rq(yA
zumcK(N7C`TSPnSGYueFUE`btz9WDtcLWr4ARZ`&EbD<H&O)vUO^=h<wXB)7K%Qs?9
zh*F9}Sa1-!g!^Cgy{c4<HcpB$j-4a7u=w4mLhM1V6w7h#7R@~^9zzJ`55J1<LTwfc
zJ{AJ+qJmfse4I}SftQhkvZT@uq!Uw7x)ssQfiEvn4wrIB*I<0$R1L^fj>1pJC5aec
zSZBh@e~vIC9E7<&?@yAv^S&o>)Pdzm+hsSrN#mUN*Wn)88B_H2Xp{|$L56ZkAx-oE
zYEi$?x<&2Bl&KC$h&<kE?0YH$QLgtCL64_#{7U`pbxc!eIO>Q%JL}Lej}qJfqpNh`
z?A#M$r{)ao=<Lyf9{G<n%p@3{HzBy2G!EnEmK4MKr>~zb>3g*evr^CFy_ctH^2p9Z
zhv<<eBUa4(tp1N{lc}^wQlTR7p{K%--8oLByNi1LB3zAp6t&-@+IRy4l}aQ;@%ix}
z>RgXHxM-l#R~n&5<T2Qf0gKt{!xTH+o60(+<o*T5L-qj=!oS1eKVEA1fr5A!Vr-$4
z|H$3O(6~!&11`lnHl(s;qL4V>N`W+d|AKSU8*RYk89oZ}A51Ln2884DE7ttFIt;B+
z@)~%6J+cw$W)S`E59*h*1k~1KVZ1r3qd|%@awW}HL;Ngv8~?aV<XmnS>6?W9aA*JV
zEU(*tqt$mn+6uetmTyh<|JZSRE3Q&Bg$8yMiq|)_B_G@2Z%n2WgM&pue1>x+{#YWa
zyE`>$6zWrbAF}A3+hRGk)qP1*eQM<2%v#6$1IfAAYYGu8AHbvYbE*!TndP14zcI<T
zZ-iTFa)k;z7D?N|19n)h?LXr!V)<rVuPAP0e2Cj4Zs}Wab8IW)2h60pFWFqw>0AHL
zuxoC7UolSBU7zah3d-JBjZoh{x~$j0qm5_a4>vd>>6Hz}D#Ty1nZGl!xBbNbGk3|}
z*NjbZ?x2rm{$k?O$B*}uq<5SD#uSWS6P&b;5FA!?h|2|exsL4s?c|d3O+~ohvAy-C
zOH<B)1!{C{ZzG}lTde>>=#XL(&dA=ND-GJ9wq@0y<$IMeK^6vcS)UH;T9H#edc~xV
zo&!uDe|;4CcnL7LKDI2=_3>GxjQYs#N6PEin;q=?PEhW9;qgT9AwSX&@=sPFtj>&h
zv$vG;n<!si>&9||<woiBD&s+vifVmZFeR#z*gRXmpUrqbI4P2T)VKf2P%totO*7^X
z>lYt&d%-rYCr2n5Fp-CasYPI*S?FS+WV+C$Fr5-vNMunW2Z<a?6e3YbiBcp=DKQ?2
z@sy}Rq6Udz9i)LTt<i(B4LnN^$}ZtqdQf%+&(edkjXX;a%5K3^ET7~CIhKSKO5p<`
zN`q>>cC0fL<_RnFUV><(9nAHI>3Mq}6UmYWcre@mDgz)qZYh$Gg1&3_Q8a%Q8^>cb
z<jPA+K}r5EjT0UI+Hi6~c4$1ES(X0+?+eFF%zwf7WV2(9pAhSZtBXNWK6sH#qz^Zv
zTCBwc+O7P87&#wP->0~5V)c<v4WFv5-I`DcOB;>+YOr7J`J>m#a5E}!K{8pAwj{UI
z%%aGD&+86Ltt_OC-(U2lUhNVb_@Vd@WF;3BLfuQodqNl6U^|f>HNh<xmC18Q%03Sq
z4|x<W+lnDu<S`Htir6QDUBj`fFTEAIH2M~%*u&`_;{y<<T;#=vs6f6{E~>`ANu_SN
zWFp%7?q$f$zhS)pM9O>$oEY5}jL5}%*@(;oi4y5Yw$1*LQKrRXU!C$Cs$=QI2S1@a
zY(B{N_VK#z$a+F~<G>s1e+LW;&NaIWfdve)5T&-hhzb>#<Hq|qEL$ms`1hbcKLsyC
z$~7s%L(M>xX-PaqM9Nbh6s=pLt=J#hk^sQui_do;-2n!Rq`z(%jb7?swn1-|lcZpN
zeCO>14$103k|F?*9p@%E1G5NjQfGhL*}_BQo8U#)7kPUR;NY3J_v#|t$9PKf<I(=3
zlz&K%vq%TkTISAZ{NR(%S0!82i40Z<g0?BZSLyx(=^x_1o$0JMl{ed22!5>j8wSOK
za6G8wUqeyt6#3yfc>I?>K`*~ki{#AL<p-$*{qAWL4%+$+)`aE*iiSYDZW--bO=D3C
zv9Mv|3idlq7Dz?ikG9d+>!_vP$J5tP?}7kcO>EBs+eoKUdNNNRBIF4?y@S%Dc)F3&
z#XP-?(oUX!jMBM0J&)2od3qhCFF=~Kj!%Ozm<Qkx%zySsk|h>=&=gM10ox;3X5BKl
z(n{+RRK_G9i%H&6SZHa1Na%RLl7fHXL34WG(c)hMNx@1E@-m|u_AfzI`l*x#O=%fa
zgGhDQzl?+EbF00f%cA5bLqe8`e3(p?CV}%ZFudkMU@{hzMKBuNGEG8C*GJk!(>ZXe
zGMu_5ZCss48w<IP6NGK~;js9!C<R%b8!Y8k9%b|vkTK`+JF-D_1csGNCGTARh*M}$
zI#GZK#V%e8b$nYPLj)7xu%f;jeT&7bw0Mp3Cy${48Q+ygWgOk2Pc?-Ub%F&9KF56h
zTz2I5yE21kFD1;Kv6{XXT(9F^F`Ciz9T=+!Lxbae+9Ry{eqPPn4^2ich|gEx*T*R0
zy>8?eBVRCSqVH$wh3=0cslC^ErvAW+Dwk+2+<+F^(HBtw8;CDX7RvQB+;k0yjc1E1
z`X#m4A;y94bGG=z>XZF0mJZQ=(ItJRg+#VPBmJ;e=vbyp9ykZqcqJWLyX99NXOHI_
z*ki#X?D0<ua4bub*OG|jm38>-&46XGU`B#c9w;qK5rv|y%dCK2MubDQ9`q23ngAJ7
zoeX)palu?3SnF>~@m?w{pl?X~+iWNuhEi|3zpVq(1xO3QGL#j`v%R457O3DFi1$2L
zTM)Osk32p+`2rrrf;&9IHF|_=<OtV@5w2UXsT$!bEs?g2xE0%k5u=$_kDxGfzKpkB
zqwles2qSL64sAr~2wVjkIGI1H@sI~jD$Q;5NZ3H3cgmChhK4?{p%rNo@A=On-VhpZ
zL-ew^{BI@oc{We+El2jvL+|D6@EMzvuo8lzF<^=H*s827Xs%1@=xP~E7c~y!)r%xy
z0o@iXme-K>D}88k(k-&E_i79oGy`!ar3_G9(09|97U_~HvEXe3VU%@?)$q{~yZ1)2
zHi!Vkt*tui88{ZYKKt8}A=fYNfm{RhX#`|SaY~^+i!}2e+Aon<kL;J=oCm_hP6?u7
zQiME7I25~{gTAv4s`;=7{C$4*nfhh~9w>pUlFJZjSKf{1cTn^{Z2L;P(~9KqHnL^t
zd)W5222~!6SGbi3OhZ0wn}nc0B!ywHRUwIGI&AamgfOSf_F)wvpZ31?U-;O^rR?~?
zdC@O8gOF|45>FxfX4qxcMYs+xVC=X7yc;RaZjF#mtjhvPr7Ls*L*+&6@&K49gwF;3
z3fU>IlnJLZh1u2*e`dCI9_SiAebX;Sx-(Kne_VueUq3>|w(G=IkAio+0yzWml-*<0
zcNR1G%JboJMZJ5K7m;TLPg8+DzK0=zLW6yz*P~0@#W``UnPPO~=@K@+Vkcr4@oh&B
zKZj*6uVi^JISW02(d~N*)v$P;HyfUeoZ-Nw`I-6B7CO64$E7tX!-20m_#;-O5E=kS
z#J7vWwRGT+!o#&4pp&JzTX~Q;rl^e=Dup$N`b0J|3$(5QJ!Mvvt{y?VVDaz;bQ(Gw
z1>c5h2qzCp=ZgTmX~TH7tB*Dfr+TojN(rO)n?`I+I_nFOSEm1qjbH5zdVISPbsfB&
z0>wKJH*|f@_K|$7m%ec{znBfz*N62?0k-bJHcsrco<ig65g2cbtblvD_QxJDqP7oC
zGA}b7b_dJtX2kaK>VU3h{lN%VGYeA6Cr=?t7+>Fb|40*<eCD3i<)bVDVyM;{9+Zj&
z7#?I)se77r3BEuk?LlBC!pf&l0)~0Pb|JLb_XbN?>^nUSg(RJ2Y$z|oMsOzXN9wfp
z7wPSv#8C_%ALZQB+P9pceUG{Q<*lrJNov=A&sh5>K*Z3#Dx*b1o^=0S@<C()^1YK0
zv)=+@dMr4C`f{?9B<3CBB*yv2ZJnfJ*e}Uxy*LMV5C^a+ngo`j-WWvt&PFM_7pZok
zk<h=Jf_N{5X!q@ABN>HB)W>f&Dn>Ty^A9+ifrFC{=qtWEsv|Nxqzoh6r<tAQ^q%AN
z8g(?N>=nRKr(r5F`){7lObgBj3fZ1m6lydh<6HzXYsdoeLEVCh!w2;hZX&RrK%YW+
zqrZkC;w*&RxQl2~f)-q(=CG|34*eh}lwNfy-Jq9j<&cN6GMhlVl~a!!!fHw(a&o>x
z_6K5}#^Qs{Pkvw$8VOeLR*SyvN56&xZ56r|jjW5ScY|0kGu=BJzaib5QoT5<JWrI;
z+3$h433?M=0J@1R5SE6UX!c?P-I^szK$@B5?`v%a>!LI`)BB}%@j3DdUpGa(>&J@H
z@o^kXf2taJ8|zbea3)JH<#=p<ksw5QTo!#UrjLjhjHRM1F`P_zBIcL&<ju$ClGcu}
zZhi-)18F&g_#>jaWZkm$YuH-LVyFxqDa>M&q*6*VF7TqqysJaQPNGU7-nA&k8Qi8a
zzRwH|*&>Dqw(%On6<iO7FF9m~Snv(}$WX=%vFRrqxX;bTWcGB0FF3L*@Lin8FbyFF
z?3Pq-cWef8bZ#UvyGiI>j(Q$butFdeVF@UTp=b=NM>T&yKMBRW<M*d>w^d5FrUZ{d
zkXmD0pkbOy7T<NNEHFpm!Kq|hDy6|4fCuFvK@QGgPecR4gR@xDk5f_Yz539#GeXxM
zA&R1~?(0fvW(RTY^4Ix~=--2{;BOI+{U$c;N%0>~k#0?$|0)eu7k0N6g>5<=MSc`2
z8jUF0dc7_mB(ctQR_=nfGL;D9dPQgNM)r;EN=Zyn>7+=XzXpAnpH0R_kAunGl^l>p
ztC$GBgO&cdDHdNBGOg{_BW`OCjJZQi0yg3~be{b82xwP2F^n-h!pE0hDQS#;CCV28
z?mIXJ8x?E_)j8nB=noJ-xU|f-TsM>Thnfu){r9J1=q9CmFUL1lGR@;VDAS*eb7GA-
z-kt<|goQyz)u+VQd`f<)_g@SirIY(Faed_E2(JroV=Ld1%}1-F#ezF<IyWA4GQHQK
zT__VN)F8|qrda+W3tDZz-@u`il8-)ValQt9F0yJ;QF`QK&cJ4Ey!ie^f8T=dwRGX(
zaEopiBiI$`uJelvbS`G?yeY-f9k320P8c(JI@mmb?GPB>HA_K64m(qFm@fh|k!~@6
z3B)w{uy?gW<S$@M@!DJ5gKjpgKm20DNj@yxY_Ngt3*I7~D;sKW(pdP1kp&;-FDVN9
zkVL$_1Ioo(du(}VU(Ojmpxko?l(+#E<-zGj{*cdXpYPc2{w~T>+n2YmFL#6kY49J3
z9u0m+Q7%jeC38F+TaEz**G<E1<H3*v{tgUciQWtN2}4IvDmdiD3keoF=0F7U4?@Am
z%0NmR?=#T567;e`hDdrZVWi^yB|@?V?@1ixD`RdWR%pZc;1F@7+%Y6t3${)hipFl#
z8S9C!<9oB%q>r2vr&q9*^VbyTFGIvFRjEb&gFFxQe*8v1n3kd?My{X*`&|mCMsR7m
z1#cE1kcaGH>YYtpjT#&s_4MX17O$^K_X(u9b<Fk^)TDdQ)hZrhQs8hjthB}L(f_r*
zbBNWIsKM8xGsyG*eSAQ1BIBX(wDXUceU#6GsBzGLn77O3Ah`%K<`?r2TNL_xd~z}b
zgOBa$;TuuLN)M&!s3sB5r|A<vkKo4g8r;M|AS7}&lOvnhSv0HY82T%ajfi;lj+>iU
zJm|FZgwgQA4$Q|{A0i$w#YbRI^?L(!c=6#vup4q70S01-YldKKxbyTFFSxSKTre92
zF1aYRNLW{b7=`_IU?5$Tf{R+bt}E)x!M|*FO6<!*G86yO5l~P{IMvap1DWJdlM7-^
zW}y&w@UZOc@(x0Hxe-{oxPQaq&agFjQ3)42?y*Ft<3-dR(Q9%W=>_CNj9;{+99)3D
zzyKohNo&fd=-0~{`>*Pa;MK|1KtnUkY*9149x%k4@3Ekj==5~75xoYjp&@fKQu}5;
zqkb2t_$Fe=-T|as+SLVcgbt4dG9MHAQ-7zQ_npbVg)`YxfftGIKYq!a$tZfkdI^GO
zgWxLY7&FtjPsMC-+L7NG{xFXJg#mw8s69URUmW*Rj=MCDtG*3fChfR=(C9zG>+Ijo
z_?a57quhTQ{VI;Tp5qRR<El3&qVIfykma;KR23iji`P*uLLKhJ|M&>(krp3LzZ4;e
z#)lyVx^Tp{XHqkZy9_-_3jNqiaHT{Eu^xXdQY~;|TLzUOTHHp_;jq8$5<FOn{%R5Z
zXm%;gGPuc^La&Vffe_mjBx~H0q-7|S=3$S#A_9i}g<7l`Nl{Nq{!|u{v^`3w690;w
zBxey&lC#;vpUxkd{82`akd6LcEh^+NApdBc^lm9fspBY<2_@_wj~x9VIVql``zH)4
z`D;1)0&<wb{(8M2>|Y#DF42>czm-V~pBo?^{p?S~NPhNrVG#5}_*};f`**~Xt?{H1
zPaf2g6#a3o-O7gb)?eAME}j=xV>j$1AJ(&witF2`5$u*W9KMkKU%)5tkEytG8qtc`
zE+rY&(85?iJt4SYA$x$K$Knb<k#@*@FqrwJxZxOlTNKtb-d_AXk1lJXCFS*FsK?%9
z#rqi$C$~Rz*tCU8=tG_@N{}OA&*<wExfc|1@3AMD|2I&8nU6(D>GDsY<8N+lRA$Dp
zzrlebTsGnHu<%4P5go(JaO2gR64>Q?ilVy?S}#29Trl0=W4A@=P_miaz;7D(edi<0
zwtqQ7*+<%sRTxoSY{{|T#ZshXQWJ8%TV6qGPr;uSLPK=q6rU_@7&BzW&~&`+iIez0
zTyV@$aUG`yTD}i-chC@fqJ2D*pTzuCyaY=3uRe?4NpBa9qHCAfh~VB0?)fPhKQTtN
zH=v{q?Ajbo8Z($_qu@B+k6A!#18xc&%iWB>ErIU~u}g%zm1FqM4%R;ve{_k$X|V$R
zQn0TXTby*d7<_r~=)AnpD0Dw<8~$Jd6sGqVJrGRhH<;P+={<9>!hsC<Q{JkF0YtUy
zZokcyANKb5@3Vr9g|onv?ziCm47!OqfQ9x@EyIUzQJKD~1-VmKXf8%R*E<#2pd1LC
zW?xBu*uJsVc?3Rb;lT+qZf4?gi*|W`fCEzGt<kI3+4!Ru(iapwgny4~bM<bALs*G*
zI8VMa$%0%@T%y3^GGV0^kIR+it(u^p!3LGqvyJph6C4*UlCH}PD%pYyj5SH~z4S&>
z56D)cH^iX9&<Pz&2sEQpB%&U8_33h72FeVW9Bmc+p18d5J&xGjYa!SJT%1W>IC3Gb
z^!S`T<9>=2I_G{y(;MvQ%U|b*u)W>P4yrZoc$=(#57dwFkl5d|S$!w!2OC-CRWuy9
zb9hkMgo(+TLl=7Z#+->9rqEnWFeVWC(;z*B1(%^yXr&2U{r)L4YjwP-)o4nOzD;JN
zfuHYjT<-O-zbLhjY_^;>oMXSs8G8vN^giXI5?j*M&w<MAO}yp#4-+lldyLi#K)|Kv
z8t{g99JBDQ{|OfQ%KH#xnLWh?9Y$CA3CaewxO*%a(E|$mzP4u89)cw350*i9&ZGxn
z-uS|FL^A%TE{p?$t_!$&co3_N8pSWz!=eD<C5MrwzW{~%%k~kR&(0WEjZdYJbNI;^
z&Y|@Orm4_SArOjj2&;O!rs^C{`M+`ak;Y+98fqaxp9oU#z%K}y$FCWmLk)Z`XYsqd
zi3UCw`<WzrX?))HeVk8R1<)jU+5h76CZPQ<Nd|uf0!i{Rrjq4nR!Jc+188y05Ed-L
zRtt-Prk152GqqH|$0KCF5IxW}>}&LZsWDXPG9hp?q{2Er9QC1^A5ab1nNIaX_D+V1
z&!Hm!6yr5~AIRnz4m{HQyp@T#SBt7&Z8pu*iKuv{Uc~0<AYR|Y>py||rg_??WHGLx
zr2ktev#2-t!)j!_w7EJP7DyAy^`H!Pzx<B%&4%W5p)@@h7Yej@2vY)RtrL||<3(QM
z#7vwH4n^nrykz|Mr2g|_z5koc{Ri>?-G5$R??39F-haj*O#1)sKZW|u{XZV>KPXfG
zcb(q<2jczjDFhCYF43%YqB8ZLYRJwLVOH@^h(Q-zJu33gX8r@HTrR9;GO{$^yJNnW
zvj+3JVRZEQURuW+#M(rbNA8AyxH4a#OnJx@Z=2O4&VpmL`cwj4UZ0GQAFcTdZN&Ds
zO#b+*r)kN&L%)D8a5)NGwp%BDL0e~9n_~Lcyp#3oQ(oVW`lrc%323O5T<?wA^#MR?
z{ps-cph0R7zhM82_;j|clIIRM^^2BH%)%xF0Msq`MSc`|U4y?GDEzxc9SkWd8|H90
zj`_X4g_X9x8+%ylJ0Q`M63}zoMU=q%X0|R!xaze?1$=>eTM{7T2H4s*P{LYo+m8f}
z_$~FepOIog5^n#v<AGo&JJrS4WinIDUzY&@u2GM9%<2h&eXv2ef+wsjvd~{Qo{rf!
zpuZ5f7f&&ChqXQhZv=i61riT}UBdMv&`5tVZzzg0_}?M_O9<dj7nY_^gq8TN$j1Zv
z`*scJ-;&Z9=T)=`TSxC1DsRqZtrknTKOdM*L?;1^*W|;N%IXQzE2YvDR~RlJ1^f}?
zl+Ob3l+XjwQ>RWH+j_~So^|-~s!~&vn*Lf{9c-){7chn-;VS@wdn;}fiT<6*Vy``7
z=yrU7ZMSj*Zw|h2F<el5p~HeE@iqqhAZ0y9gxbnPQ&7409Q1`7csAEEPtZfJPM@R>
zJ+Og9sKqiH!0P`GzC59O@Mqi)D6gPxxb=)Ll0+36;_jK!8%1tm?I5eGu5FqScnQoQ
zHB$%-f=rN_Aq2mp6iErSEOqxM^%sKd>s$Wj<hA{&GwAtCv$Ynm_^tp9t8j6z?~6lo
ztx7La#g(IQa}pv6Z1au9><fOwjKdGjH0_FT6UE-uU?A>>7>nfr4&_uW+YRBJbLB9S
zD*ZWft`CeKv|~~4g<ln)-*t17EWYRcdnVK!KX>Mn*l^zqi;cU`_~Y)6;-hZSpL9Q5
zisWuq>Cee>dg#Od;p|M{qpG!l-)TEgkaCMqsft=<R8UY*s#F;5z!aw1ViiynRJ4dF
zK1FE(6{I**>3!D$RDA9W`rMz-9a$90T5tv2P*f1NJ5~kdu?qD2pXA<Iu-NbW`2FbQ
zo+KwHCnqP#$w?A#9D5=YcD#e2c!fRoHfRyb;hzyv_p!*lR(Ypvq0%LyZ@6QwOIqwi
z>7sM{d*+MuvgZ)H9`uS(5wF-%qE#94)$oc6k}$2|X%%E*o7V7<3ex^*4Kr0xSl$p(
zK{-_$n?P;Vmxy<4jQb^fZ0ZGh6~{+ftdux7edK3~)0In=x~i#4s9_K761xwgNVWY_
zm1>Yq^-*Oa)duQMf?g`d|0^*IhJs$t5&uhMOfIq`#cP5hntK-=T1BE&8<%v(Gm^j#
z0wkHKlU(a2K`l%MgI>q?BV=dO%4oSndn$XW)-AHQ{#sgw$@Q7I5i8&3kTnIbWbrE2
z{>^qDMeh_=HyQS+5|)jdaAE`Bf1Rc!L(}s0&55dRr8zY%a|t<erp^Pir=y<DP=v@e
z4<Fcr9ZI^h9+q1$mXSq#6Df8c!Jt_oTRV`k-W(funiZSI&vl9yVQoIUEUEl)@$%0|
zlrR3w=7)OQgd^K(H;Ym})>e(v>_a|Q9O1GEq$bD({RnNbh^ib^4yeaOZ5`rHyphO|
zY8+)+o$b>mnl1L|&+$C*H)2FX=If0a7a^CjFNU$0^`e!b&rfmvnEfBl*fP#=%UbPT
z3Jm+-l}yHr$s+R6+$mSFmeFT?>?JEjF4_mw-V8<oeFL8TLcJ`$joJX&Q_h^+O?uux
z)A%BS&uXu;$@-&Wsm^wuDs_lXg~bLBm!!(Ln|AU0M8f{AI_Wl;0D)g!nIJG<6DaG?
zpEQ-Cr&}xf<eHA!;SiBR;%_U2#Lw4J<*9)X)^kk6pO52spmbCGV4oyRAuHuaE|*8<
zA0{!a{=Y@edacwbu0!r42)e^zy!+)+ZZoE3@7x#E#So@)iIpO(?283QG<O)X0;=a-
zRG{&LW*!|~-)$uG27jSYC$vFf)L*DcaS3d#3GC00qHdouu=y`?Q99K9I8mCee-0Ev
z8dsprmont~IqXu;bJ4SiK)q2r0%+J@4-!Pc0~3n5rKUz!%8=WULiCic(SCEek_Gr1
z=XKEBZQs6%S#Hv~BTP#cDQh<HPBGYc`(2@)dAwFJ=WA-8dq=Tj@r~kiE=Q+yDRuU#
zkj;#5H)_{ipTWJub*`Irt{ifeBpwUji$aZkuQF6aHkKT0z6BX1!d;vSFOZhi4fE=A
z?1V3iT|u1_`U(8=*QgdgRO6pOR?d4Tt{Jo+lp-!tMHGSmJZaGy$rH`}P@2Q?fBtr7
zY7#%OIED;Py3111y_}k^NDvR*t2CzEq6psZI{j}N?^M!rM$2VS4(UnLO4EB4k&tj7
zYv81^f2jheUaKj7kp2rSUJ!YjP9G+{i*T_dz6b(R`0>0>pRUty|A#s!mQ;i(xju#;
z;GQCBqq&0=)0U8kf>tkdx(f1r8ELhA`zS`7cDbJ|n!9K)iz?Y)1jSjpxO>S(OlBOD
zOXLxtP+><+h>=>OT>Ga&u=_(*zY8^j4Ipr{Zmc|5)_;-JVfg~d9?cz2zS!lOq-Qn8
zG>vh762>SPb>Tz6z@xpY%Gnb%j{D(lY!9-Y;HPU}=F;?IE=$M#=$(87QcQee&12`(
z|4;h6+}4qgoi9_(CB@rNtffrZBr&m=P3^0`RSGn6A`+dz4}ua9s2bbGcfycK_`m8K
zzA}CGh?@W@k6I(L1{I1$)2KZK6d?|#VoAbqE=Myu-O+HPvKLqH<`x}M%kmz9y1-MM
z2A%<n**{bHHI^3c;yyA^sXIL1CQzRtoy>6*68of-Zf_o!DET5?awy!;M%{$^65oRN
z!y9#-K9l%e+^o3B;016xsF0z~k>7rK_3j&u$aV^--pv{G_f_Cp?vEuPV<?`i!<Y)-
z!g|vWozpHrpkkQTXwXAxHn`JgenJ{Q!mUi}g8K+L_3csFr+RnKs@F}sJ_9nO9`Y03
z)RG#<x<ibt&r<4Wj?IjTp&EUil#5JmuAL$S3ctiN3c1{IuzsErFBu)~Iq`3$#4}<Z
z5PyF>9^0_buKz^Z-Cu-au={LOEUo!Ybx<5!<4Y8y<^vENV0?90n9FPi7M}7w3g=>Y
z`1E^<hx_ULF(C%*f4n8WoY@Tw$8a}D3>o%`d#{x}f#hzdyAD~=Ozt7FXZh#rjIZg8
z=jn{gbw<CN(LOz%ZMO)HZrR((Ln-%@SdrCMll8cel@D3=qyJE?kmwK7w#d9G+{k&K
zx1_ew+%H9!R%9;F=Zn-MkV$(O^9~_Z(zjX~2hlJh1Nb}46VXnJpC^r({4I@>{4KNm
z<ZqehCx6Q_A^BTo{>k61<Xfr_=cdk8ET1GA!t&m|S@F8Hw$dE}4_ub-q#J3Lze6Zx
z{+-Z2-P^Iz!JR?B_S_I)1;k39qU*gE|IwKeC3FEHc*=R8QQXxZy~|ez4@R3Kd_9sh
zQ^c1=ww`t9CiF1JmR9kn)NI4O-lOEQ&`o6(d-@xTub+}OZC?OnTv$?hp5@*BduKZM
zek0Ni{xN%;A?KU4ck0ZwqK%@tH_P_j16*L99*kCc(*o1>PautPXN6D^xBrBq-qo0t
zc&NQYZw?2qsXUuC;#)UK6R!)~n2q|jQ$8+TclVtW;u^z>)n!(%)yDLHo+O22??Xd#
z@)UV+&VR}3PiEV4*9A74oQ$fzVgI>Mn`X?&gH~OOdT%d4!knt(b-ykv+*CQXBy6Xb
z7>m)Bv8(`<E_RYvev1>qw0%PV#LuAkewp}H{5m?^cZ{cM1%NwQ#s#_Pd<+MfD|s2u
z`}Nk&U|GUe)(YV)1vAO<#1`@El;>O&Q`(17qmp!u_8jiMQ+5a%B;Lu*^+wI|ZqyYs
z1aNoPjvHb$o_g<f6ea)IC~#Oj{aNYZ(Soh8v8-Z8KVxx+30x6dGfRQJU$ABz0I}mB
z7GGj2B}}XL9t$ERFXjq#cX&;sR6wn?d6QS_V|wrxie?^(g&>`q;fAJ{M2BSVFX7&@
zJC;H~Sy#3ixp1Up?XJ+YKaCTCM91;q(Xm}2-=D+xLirOi2CN6m!}x}#wX`3>T)=oH
z+nbSHUDDFdkM=!7-2hY1p%eRPV$Y3skkJCQ)XT@niBFu6z%f$F%2z|Hz4JPxybtm!
z&phN+ibG8hH-7tk*5g4-{P`Jq2StPa{bkY87P|xi`;%TsuQS3AQ)(%f2bOS+aClFS
zQPUbt%eBHiH^i=h9gck>7_CZIx+C^4fXVXf|KS>OsbTL<jv3^Hz3YEt`fXQyC^HfO
zrQCy(7kk~EZ;~)y66V=G3n-Y#eAD{^StM~@>=kA#W!6n1IA!KXfrZy2qcUFMkOMo<
zr$<iA3V4>9O9RvPD0ys$__ahOmQ}19-LFrF^2(zC>_8sNDmDzD<%h*egy8u6JL>%c
z>6P{`kDZ#RpHb6JS6gjJ$F5eRjlab=(3PNgOGg<bqyj=~V1Z4u1Qv?MEsNe_mqf?x
zQRgPnbRT@3l5qmZp_<8fBo!s&?9_~xjcGRHW-39(;i(zFzpB}c&+ClGrDlBZOQ%&1
zUdM4dW9+MxI<C8`*^FoEjIX3-oS)w;SLI?q>NqhqV}A1)SCFy9D&+Ag%iC4urY9(2
zop#P}QOC2Fn&n0IMemESiU><j2`o5VHEeEj!`>$1Vco*6J(F1_69MZS`?6gSR$<#u
zzr!yc2THKl|4*p(UVt%CUDbth3z@U+-jrwm@}4e9iBOlof}N@)@iB>ukO(5#4^`O<
z#&1aGa>$zZfS`F3D@(FK2^vmL^&_$T3oLXnZbB$`#TL`4gl=7PyLPctTWl+w2xv#9
z600kgt2{f3#(>-fMIe#2b=fsiuPt_gB3m#BmjVmaP`HqbR_PwnQDY-0qQvr8Y5t(F
zHPZeB#={W7s<zZ+0M@$tqDeBhC~<h`(DK#04lNGno8X5>p)Ryq`c;cXHXIM?OI0a#
z5<FW<!70_d2}@cyG`U4mkDcP6r%e->m1M`+{Ui$?L?n(rTPPRw3g=ydbL8axNjSSU
zk8_a52~DNsPq3cTMBOgVF=zDxz5VU#W~<&Jjwdq}kDwWC&gvm}9&8@ZqCKjP(DOFd
zz9f1CPwlKz1kHubqnQ{-Q`Hoj?t<o!=F#+sqdBE1G~EQvax5{)Ju=aH@rH}-PHniL
zFS+49UaT5!V^YJ7b8!BRFx+<l&Q0{EgfL9iIC-)nK8ST{9%tYHoVUbrO4m3UoYO{5
zmQy-OXjfqLQ~mqka{Du?Cs}Td6ttgUK?7|gu2M;8Z)hIvy$7Iu`Z$*ZLhTfdb}EBa
z655W<qwRYD+Oy+mrRSaiT6)>yB%I4IhBm_io603~;LBrOQU&L_cNET@NjPt89_MV0
zll=FP|A3xi&hm+Dc5%?SqeT<4Sr$igUQ=lD1<kh@Z<`VE7I8G0O`+)|XdY@FjrhI6
zC@S^N+f7s|PtXi*9?hgUnh8yzk-aFpP4j4YT+N~8)TYqn2$~gGU7O*}&)Z!zHg>JQ
zw3Ix&W8dC9ny2Du<}`&yY$x`a&7&C+M{{XYXfg%O)@99BDmRX%eN$*eOW4mhkLE*W
zAiBZdU(f_^_A(CJS2d4jdK^tnQ)qSxnj@P>Qxr#Yc2j8nCulxlJEfTh-@VPP)J|+*
ze`)Zof+pHLn%ClJUTF%=FM?)3^JvD#(OlaU8d)0HjZ2!XlrN6vxTes2FKFg9kLK$?
zT;6P$*933=Eog3P9?ievXl6Hs<_SS_QuAoekE1DT3e6*e=DWIPd6N}K)1oOfvjxo~
z&7)cJyUUx!Sndvxo7!0q2%4eIqq#MXX3}5Ln6qXHnzqfOIX#Z1XH#fcM5WpF?gahd
zlj2{tx|RAFquK$LGG}!WMN!>6ny2Gvo@xqBtx!|gJetenXht-JCL(D5Sk!ETcZ{RS
zZ3<1bpn0)*G;6j9Z`xVu{*JJLi|bj=`MVNSYmo(S%34J1b*x2h+PWA+8MdPY2ki%&
zFX0ANf()qFgDsKw4>g}I|A*~u9>+;>99^2ialO5SHDxm@@yFj>Dfs@4ztCZpkFlpT
zkK;*jP?4uVV9k3DW^gjNCJ&a?SId{M2NRym5jec0s>*t=;aIHX<H%zEOr6K&U>_{1
zeWTrfNW?POmiH`JuP<ij!oHQsp;#ot9mR&_e-W78-Ra3nA-wOH32zE|GNv^whmIpb
z8nk9f(PE#gnL(7ML?}22B|pA?FiIxBttcrFO13g@6H4yl2^c6jHcrX2OyUoqM3$*g
z69qA={#~q(|I*4g{1MR2eIqOwnp0ao&TdO-V#;hGrLt_^zwmFGa6N1D9kI^8x=na2
zWgSq6Sw6~M@OL=0(P`r^E{?BXYXZkedqVR#9tH<Y>A;Re(v11h^k!`{SLuu!Fykj>
zoXsAZ2(PkpG;J#Dsxv;BnsEaX*G$H(4T{ujQ!}o6yjhFaTRLNp)Qlz9H=FTxopGml
z1t->iIU}3RSWLzei{s1w*HzxQ4d#CbjG{NNq6#dO&64=~wpBdu#MHb8&IeNR?n0{e
z$3FO3%Jm?aMLE15BzE2DBb3<Zo(8fu)s&)aL&-)=^N!i<fyC}^B5%IVy94LjgXNti
zd51QU_j~MUIM6Qmo4j{P-osViTWsO5vL)x+i{?4~=fJwm(l|$hQ;m_DsMN~Tf>fEm
z>SDr-6vS5_4Dp#7arWOKj<|@gQHWEyyn|yh)b@QGaNU+nCF=>PYxgE{zO8fKbI_cR
zNX~8cUt9JLopabhb3PzB=Qoivq;np9(40ylrZ$nYt<L%V%7fKY$wP4yIX{uBDy`fX
z4w_R*!yziC*jwY$@XFkSNW&c(<1jEPX%NPzGTo7dJ+U`_QnH}TxcLgVeTj=!<vmc+
zPSCjbt~gjdMH*t4DYTxZTAV(}1tFGq0T|3#ay&D3Dye}y2Sl4s>#M7Q%fE)x&=u2(
z&|_pa3lR{6Ku~ZCQ00Tn2>bEoR{xSL_9Jg9T{x6DJBQgP$H*3yMW=Fs$UpWZvmmzc
zM^$F8q%!5npLm(=<7GaGYI4i;9#E!avAgIpzs2*~euT;4LCYLSnKE)({&z^bpq#=I
z16;_e$}5RZ&9c8JL-nm3cri1FE%y6wq>h+2c@EfO`TYk~<?BG1q>S%ve%zR+Gxki)
z*t)z~Ek0Fe+=WFxsl+*@&1M{+GcHcexN3j18MAf9J5w`mY`%`4e6N^OmYVUfvSv$s
zSZC~zn(>`;o6UF?8MUop6;}R4`yxWvmdmfScfXd}q)lwD9396IX$r?k`_1NYeEFTC
zLv8h(oq{E4t7n8gws}mmG$wke_z53SBeQ&%ePZ)CO5-?QYYN8@`@2`0<w{l@#|^1C
z^e#eqx&2u4NS1AOo2P3k5@{Z@ywtw5c^p&YIDYu6!QLzn*@rccqfZ>ioThLD?RBp-
z%aEPlD&Zcd5X4RJ4-Ra0<8hJBcxGzGoaVbzjn23qBYjfOZ;5MZGjr5ZopD8K#zD>Z
z{PsHIU8xysE^oGuUv5&&8JwE2&1ubMoTD=yk(#l8^E3Z3WGu0+#h<{x;=kzkGzN!6
zZxQ`&?;8kFJiY0C5(|Ht{o8+2+qj4|U0`7bI^La+#@Z*4&LU4!NS||&{sT8f_P?4(
zx@colo3~GV32|)R+K&s7&gSirp9>qkd$G4CZ{AizqkXDVQohU-*t~5*lMSIHtqm76
zVX-f-v>RSZWkC}-a^g59G=*cF{cQ6%-v7p><Fux5TyIx2kE1q@<F_UZ^;j2<X&y%~
zj^l-<aE!7y{HIxdq=ADb@%+1UTJ<DcK_c_AWCp2r!jpRC66SHZ(n#B|GlP1l<QXK+
z;FU?!awg&f@gtG5LF-8vw1yQGb1%yYR=K+ITb^>ZLZ$Nb$0rgT7c|!xFE1%v$*Z7J
z8ri04{BlRae08{w7tp!)k(t>wPl>SjtDkiyXh}r%eM?tQiHx&x&PIJta>&2HLh+|_
zr;V}0z9w~Ifw}l;sd&K{wgN)Yc~8(;RCmBxh;92no@Dy<5?#Uap7<i_NxP&38lCb2
z3tNKOtdUzWoIUz^UnxHJR67f<`s5-7`*S9A$&5217by-Gv><8q?ZaTXPXYWZUifPj
z-TCtYRb08itzu?!6;FqVq$=)RpsFbQ3sg}qZb+))bfEUT1Eh*U3jS*q#W~Teky{{~
zDt@{_#2#M;|HpHnw21fvG}74qiV1HJEsCk=oHTpb3z}ztv!6Fb<7Fm$o8Zm=3tncj
zMYaKMX0lhPnQVIVSWi?~Q`e7k5eQaCcd;9Au$8u2K{lYg4qU6;s`HlrO<uKze7T9d
zXY0Hj{wA+lMUGc_mC}EO4!J-sFF%0AS^Z$KDE;VjqMvs^m&)EIl>X5QshCMh!I?m3
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%0DRCXKE
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%0A_VVvYPL{>LJ24syUp
z#Ts4ti2tpO>lIGM1GAlWbY-tLnAkEok4b=#zU40aakZr{2mJ$r*9BH=DBd7z>(}P%
z=Jz&<Q)D^1?S&eU{j~+pAkNTCxkYW}VZ9O$v21}kW*MVz<_<11_fb`6mXE@m3iu%L
zR<{q%=eHr-Y`pcfBP&zsU`xBrmbt3mscP+Y>EA~~e9nu@b%ED-o_sKCEY_!q^-QTT
z13LTMfIw`=$`Y#=R4Sf>BXgXI&(s)UGUNEE#t0MQ2?d%RUSOtX;bB83i?K};Ad7L&
z>oR{G<pN(EszCmTi7hNZ{t`~XdHMz!xLIxX*9YP<$1?Wyy>#bPEHt)q^b3{5)MIk<
zAGJ2R>ugvu=`YrS@nc_7o4{wB)dD^%R<?LH+fe+Nqu>?THBxxMZB>Ec2LW{q{WVC%
z<yl>`d1JMf(}Kw*IU&1|WNpA>bF<~?VE5PrUMN<cW2|_HdcW+7$$@vYx)!LlP<Jj1
zb+(>q9pz8an!ukss}B6FSb1nr_qbpa_+gK(o+KdY)74sZua-^@$#neP*LRm?f(%jF
zJISxU7&|wb5SIr3>zCO?W?HD^_%hk5>^0QdpaYv?6_4oRd=^#ysMZvLJY}_s4cvGc
zTTr{W)8v`mUu5=qH(v!#cC9)PgSLnOgY9H2Uy#i=g6+8C6XauU_mxD5$XYIvOle|y
zw?u5xJXJPnstRTw52^|Ly0coqZ-|wT4b(4#V4M&?armT*RDl;cs}97V)e{(OC-ppB
z2KcM01xxuE5;@0xCG|w)D=w1MlUV*&BHijaM>lsoP_+38{IlO0wt)O4;k=$uyLc!`
zw3o}q58PH2_?WZmKnz-CfHU289r!_KRe>Rbr0V+gc4hlejM-&J`E-S}qleZ6e#}`d
zAV2>oKJa&!LdzAazyqCC2V$#WPE;lRQP)bUyg*Na9#m_C2wWo8n94E3ZHRxnTpd`E
z^)Z#B?c=K=R&bZ~DT0)!;GNA(S!FY&MFHG9I0Ozls|g$uD=#S2Q7%{q9_y?o@VI4k
zp-u^c@sWP97}uz^Xn}0Gv<FJS2P9QI*4X;3r0jtEY1sm{L^4mSHNU`BJlZ;t=aZxD
z#RPcUASN5$JTJ6`izJJ~OA=W@B6cM>CAr3ng|Z7|cOnqW6ii(reye<0U4B(om)W|U
zJXNjL1^A4=upR*ZRjlIiz}5+Fs{zDj_OMXB>}jz33}C1E^oh!U+5Bge+f$x)vZ$@C
zE<_8CM)orBR}Qlw1P{37)^UPt3dqF3zX)RS;PXpHe$Z_rdtKS8iY)c+7+KT{HYL;b
zb&ZmFSW@O8mMt)cnV$r6(>Kab3CYZkWedz<=H*~+UYWUAw!j=_7&J?EVVSvDw!qvw
zG;me5W^U%jCCSFJ1?HG8%oQ_taGAMSw!qxEit5@B-9){yPKF|uEii|f8)UBFSm67B
zPX>=WlzEJ03p`HLpua_}O=#dp#VTHxQpE;}ySS|ZV5hBg5lU^<u(h+>Y5_ZK6+CX0
z0tR|cXp$6na*y?01$hixFdVb>*yXGKc&P!rNUW@WjW*P`gJ8T6eL`I)s?D}_fxql(
z$qOsgzUCrTAWrSsPV8)oq<3+x25=9t^1z|$LGZt6Ynt5b?(V8UBC%|MeL*S?ia+(d
zmWwoid{!b)Fjjn04@1VgVs(PxdVvMRRzZo00E0zW9&eWSnQ9BJJW`S5Aq^t$aVyDq
z^C<ie;ZYCpKC$ux9qQpAD68J2wi-pY8tv3p4{_CsY}E>EB}YOUSF^}gv%pqT($v=f
zeU7|&AQ&5DD)W$6Ik~#6s_Ppr(ge1}%0~?9k{}4YbQwXYD}tbpsQ^wdbdd%S=l0SK
zi0Ax3g2K5S5<ooXf>0rjWLgl%S3Qmz5I32vS{n*a799{bxgb<<n#`Y%$=R`LvjrIZ
zWe=pUtY%cjPB}oL%R*=t#M&&1wb@Q%P39-D;;CTaSfIxQm#MY5fWLEA3wWPcd8kl-
zcEKj_IcK$ie_ciwipOOIPrK958iaPQo38^2CJW6L6$w1yf(;;^b3v#OM{@I##!(}V
zKe+h;Af7YxwjfD>y4cJE^0?71xPSzc>q3RllI^YEk@<T(jw)I!mOp=dlcwpW9a9**
zjZfhkaC@=rRoQSG;ypnwp6ZwnBFVD#8$E)4SZ#I?fx~Ny<k&-PsXvfUEMKCo9|jTN
z74GbqN#Lu37?6)ljjkLsDNb#n&h5Nqv!ez0S3m8yfG;{L2{Sd+z|fyus}96aK4p`j
zG}3qZh&O>RIcpI3vRIj|W*cfvufrg4EwOSzsO^FvaQkHhmmgh&=w9&XT0r8-Glg2s
zowk6)lM6!42!g=Q=+e82g$jX??Dzz}=+O-Tag#Z%wV}3grvt!Fr|IoS>h%9l1I7;x
zp7;FgjKiv)X`SS!2Ua}t6!MR5sQRQJ2JM7|p|`l9<Y1X7tsUG@6L_4nW&!yDhaH>1
zOM(>eQnB*c9fzKJY@{ArsmBH$FLIA9V5i4)BBmZ|smFoTV-1g;=F=&cn(s@^52oh(
zip&@6E>gPKwAur)X*+I!*!+JPq0Qxy-=GxScE>qqw^l^;5vgY<9x&nA?>d1*T69;2
zsgL?lSN9W~8(8tonxZrHbU$PJC#UvvRvmbNSoti4njZw0Z@z)2{avdC#9+RNLIv~5
zi<ix11DiI2Kti^G0AjG`=x50MfQMSe#%BX7&Ut}e)qLIG-ZX)~bXE&^t5|tZP!9w_
z;KR;p0v}mM_y4bPko=EA0t*GNb5<RApR<zNhwrCaanAfg=;dGqxVn$n08n2Ks@Svv
z>I*=Xd^nbGzJdAiZoUQVw3V)~|K(8mVblbVE4h)lSg(byRcmE%==H0Q5*)2IuM8Bg
zS?w?b?y-y@)cjyEu4)=bgE;o?u+?ZoebQ|;fS4a$IqMU#{VSE<2VAX5RE@xzD~P3n
zo6~u+e70IE81Q;$wSa6o&kF|iOBZYcFY@{)3moPzkk;tRu~P)S`M<M#hxEg*7?SIp
zXA+TQ3jIeSYbk~7{N;fORCV^*-_Jr#;LTzcA8n~(1H~KN)*!IcR(iChwrbd7Z<F2l
z0y}M`7cU3M`C%SJ6?m<)TEOd_l@$1Nb)6AJfI%y%`2ro$m-><21aj$6T+dXofg+#6
zwHg4qp2%!9k_(lB*D^eWxXR<I0yp#o2Z5V9tBNOn3R<w?^lsUFBG?9o?NN1L*bY@-
zI~fJaa;t1-7gyjrf<Isgd?*b(`AzVXGQcC1f>j0ozwhu5en`BPE5~MAiKlO2zfEbw
z{CkH2c&RIl{JoA`0p_Zz`7+kh0htx&Rdl(@h2#6=(AGlWJZIH`d`Q)#fTv2Tc&=i8
zH@DRQ{*SZzfG0bv1;mX#&;@pSOjigz?kQXLmUTn%k|hlpwv?IdHf6F)v<$wW)=J<|
zt7dTtP<+)D8xA`Z(@Yjh;bvEC0v{Et*dvPUy0O{;I~B`4{>nYpfSrozQi{j_b;Ukl
zr($}ChvM&Cu^-r}nEtc_#otTOhHie@yXbk6`I0+n0>3F%aUrYf-9IP-hkH^y+!Y(Z
zPQ`Qt@OX$T)_|Rg=?I|6Zy0T34zN=(9RU>Qy2pNCr(!w+C>|rlZX+;7GF!WoCh#L-
z6^{Ul?{mcluv0NDB#OI8v0HRi9fk+0wZ$Fy%;;R-u8V;y`XWUI<f2mHVttjc_B>rS
zDJRO=hVHZp<hQKFB|&j3S8M<~71NTSxSbTOBn!);n<<&2-ANO;gG!S9?G*6N;@Ph~
z77RnMho$I`tYH63ZodIU&1|KgyhZO4*Q)_L^wK|#lj`*q=%wFQPWAfHTR%(<Aem<a
zXFpq$!280k4&Xsz<$_Qjo#2xVNK(0=Pc(rvy1j{x4Y&3J3`jhgt-U=uJQTbsW5h33
zv9s$3@YT-Sx(#02XU23lf2a<HOc(qO=gnw?uXo<oZSXp}&dGGaGo3f14c^yzTerbn
zwr9HFr(JGF8$3qOheuboZadcKWV)k;r#o*(oALUf#w(KpGjN%`c(|zNonE^cZ7_R<
z?I|JS^q^0$A>a!g72a4C+fJ=%_6dGEu($%HRvphvDS@%xq$(Vx)>y#Py+G63*9(8n
z-_p$j@}@qk#a-$Szk8bnyijkUM#O|EtvRK#)BQ-81*E{m#ZGTmFIACmRcnhnFw}aG
zT8APIQbcB^-Nsz4dfw%AtpfSkib(<IXquTv;OovB1Wxi&SAnExwt)ZRg-A{|gw7K;
zTh14hUA$hcdD9_#-ST9w_34*9!DAXS1<m!6GIN`$W>nZ@$G<t}B?kyQQ=ZWTGTF-1
z64{evmtiv5gUjr4ug5`Pva`$V@_LD*Ba_{vBnFO+A89O2_Wm;2n<eu^kgZHBvHPNA
zW`{b=FUxIT$#lprT%PPK>DWC?yhd>x-x6HkUuKSBVk4rZKfkQ3`|4otkX^Vu*;)R|
zIt^1@x2Vl3UuNz;$t(@Bm9kM<H(Ktq(Jvb%7OSVElcir~_d&^Y$Sz!-?4!~t7$rt+
zH31U=uIcODEZ|yVWhZ|7Ll>fE1VPNj?YrH41BjMgouyYx=p$^ey@3<lTOCLsSy=Yk
zI|(a!VwRfk!~AM)eh`Sk%zR&g`9aLZEjI0|I>5h3#x9aDJH<V=rV4HuSg}oL434Vo
z4eY3Bdfm#d$~`@RDlo(}KuiQ;PxXKyrsM?jcG=uV?U>4hH~cF#ShsP$WH`1z!i+tP
zsFNq{B?A2L$BvO|*_nc$`yQ*+&n7i6?0_2pUaSQwpVUwf`pPx{{Gtx~ToCF#{w2%-
z;3vh(1)*C0ZSZ896amlkfE&QmoYe%fhtTE_kf<|{jW$&9n7l{8BR1^-15y{eQw3r$
zGhcJ_RbN)>!1Kk*1)=^H1c9$CBM4RXTGoM7FSiKwUaw^xNV2&g(}p(9w~u`P<rN+R
zcIMmX`OeY!+x0P!Nsu}1YeSKa2?Dp&<yS5U#TP(L5IC-5?)0^x`1G&|0@qXta*I$@
z!30U2HZ4IvB|s~)l|G;OoeK0vFH{xC1hFgbI8$ShW?jkKbu5s?Oe#*uScFW=<<U(c
z0^nJGoDMQ-KXg_V$avWWF@wa<3oIxg^VOt)H~Q4A0-2d61>E1~Z9kBiYEnQFHIG1s
z&7^=^`P8lg86K0OBD8O)BCCX)fnjWhUQ+Ln&)@-WM^_IC0?FM5;#cZraE%3Ia69HM
zA4RqVfnl77fLnX9sz4Ubj@j^Uml}$X@PY|4s5nFD$vK~6oAOwYK=zDUD!{!$JwGXU
zN?>tD_*-BBTcO0jF!`#lsh3h)5I~kt%MQqAvP=rtksxEkl4^=TephIUz)k%a>}RQA
zj7$pnfJ^l_T#Ot?g4qIcB-j-S)BT%1s8!&l&f0sC;6u);G7C63%zQc<lA->$hUGn~
zwp}aSSa$8rA;BP-?B$!5+)aI5_8tj#A1<?dXfz|u?#6E^vCE(`q9%K3ncevCGugw+
z>~e_qYgA44#j@OxVRD%4B;9c*ch|@)40aDLlSPJ^Wp;Ngix(MI3X|<GlSPIJXtJ-C
z)eISCrpX>(R)=`8HrYw~WI<8~ruAi-u-)u3xgQI%3(9I1&w8`FTbV3J#x^=_nCzl5
z*(G{-6n3{Zfp7IQ>j3Z_V%bmK$Ak9?Vw{0!G5(rAp=toPa;+gC2D2-UMjI-aPp)24
z^EJ$G?&e!S3|j1yz`=NOHJlpn!}ykNd=QAi{K^X|m`_g9JgHm7ZB>EcPbb%b;cGt0
zjTXMDGGv2&a@nMxt#LTi$D;|n!dWfgkHpGyYPO-m&gi6MM@!)xw^arH&{=ihubq|T
zG*4X%)E0jKAQmck$B>F7u1IUKTy-lS)0(Ft9S=sXQ=bI^WYbh$J}AD&Yl6Tl^(-_O
zgu2<EkhXvm^K(Td7lhISw2D~-)|E^yNZ7RR65yvQrU;zlY1DzII;#)(MQ7E2sizWu
zQ#<l$5{Nefb95VGP0y<i+|*fBVEBYd3&_U4F_mLSwU3g@XVs4Qg`k8Zk`NTpvIX8B
z`~rCoYf{vAeO29FdIR;11ABmMA7Y{C?~vRG6M_fGBcVXt5F|&pZxO+7pGMSGU~ecM
zHL&~eI9X$n7m*t)j>A|u+C-DYSnfxFl5gt;ssa1OvQ37g2;qVt2BhklSR6yfi#_tV
z=)LO5F6so|DPeo=#6fhhI~)M={dGGgnHwR&<l#zu2xRYlI0p8Y-)x&An1jI{i2#q2
znEk?RRQn7O;mD{_0R|;=At`S*Rvuwk2dOFQc7Mkv;3qxnDlm-nU|eNWOh-C74J}kG
zH><U8wtaiwWOOQ(SkA`Bvk=%sYFqhuB_{|(-tHoal^fK>!eR$v><E!t%B?V4DXgvP
zGs~{-*qlAekMpETsYr6jAYyC6$iLB*6DG!i$H%`#HK{DBc<j2Jmsmocl5dlpUv`a*
z%;<2wTT~{?0rbHjTY70RQ>VRy)Y@?f{PzFmg(%!}aiipa;d)izH?OCZ$5p@&if6VK
z3`6`(yPLDUAWMXw?BIb{41p{dhWLz_nKJkror3Wwo~B68P&;yQ0<qZBXaVnaxnqah
z5cerOo8ClBnF?n7vobM3+1sh;NWp6Z3;1)fvWzIvh3>EKI3;(sS~C`>_`3YfaO1Ox
zlCl*%a7m-A?k@v`WXlE-J?FNoV-?&~53;(W;7)<HkKq1+^=ZLV0&AwS`h;g!C1FOj
zVC}j?2|uLPM1a)75(ZM1k*_a*P<iYV@&SgdXOVRnhgrbOL-0T*wE2wdKH`%>m=Tf$
zh9r|GreBW+!<LD~o99bLa%PI%nrvl@5?P|zUeTEB>@vFy&nJWI#bvVbxS8D@%3_%G
zvwRNEP@A1?PyBh#J4NlN%0AoPn6tj3)>y!e7Uf;GvfO^eZ6cmfYjQ6Mu5nW?XRLFc
z&f(A1j;Q9W@c*L72;<!zMin??QLbvX79COGV9^o5bdGSaz|$PKL+~oMKL8|6TV;S(
zDtx=Z0+NwQ0Z(`~cV|*33tsn}v&w>EJWLDN&=A=h(Dy06-8{|~aL8HxzzfB)Yw6ML
ze~5TP?ReY#K3ti)_2f33%@z?|Kak>DG$*L{OF;^FiC81Uxv_@(Z9eP+KTy3WmK~))
zidC?NGfb4h9)SYCs^Q8OY=-Uu<(2Wk446HW2I4pq1BW1nfDB$H#_0X8Mls`o|0bTL
zzVHYLhB*_A{}p7lk+RuB?U>4^j&DP}Lrly5K*1w|-1s&`IA-@|JjZHS##c_V4=qmJ
zVR9P|#W16bBovO)z0<Pny}T^!lzw}g(Fw;@oxx$=+N~4w^*D`}v4Ed-Ru#CV!ZRu6
z;*SH1pf~loR%hD%>+w8hQv~)sk+Vjo>9<6@>CY|)JWZ?-If(E0F<+-X*9TTSZOkjP
z=Ig!;)Nc^nQOm%H0|+LKspb)d|L?2?;8VU3w1A%#Yn+YnNtLPXi$(v)MXSI+h-H6v
ze0&??QJ1R$pLA9gIMF9z4Y;PWT1?Sdfdve+av!F`LqQ7o7qLiU70rV%YxZIAcU_d1
z#nubpC!AFSvR18WE8Ljb@61ob_BYG2-}%tTqGgtV%&hEO$kdwYQ>zBtSF9rI2deK=
zK@E6L7qzde@2a2%yt9kiAJq43Py>#;IWJUEkgKb2np(R_2fn|H+HUF_3~IpRyQrP4
zzVm__@X9V~H>mHoK@Ip!7qyqww=}2$xBW$VN#3izKDAbo?+D%zSil#>Dk|>3)VJa-
zxi_-}oG4b2+JO4L64ZcKbWyujeNP58;HtkYPj_AQ?W)#-1n$>G?NIfd7Sw>>?V@&-
z`hFeMfPd?v_Nw~Uy45QQ+(E3ON`63n`vf)Ma2K`t>icF;1K!$2?YHWCBd7s4xUGBu
zHc?+)tqlP1@Gfe{sqcG14fxA0YIh-iyH|3Q;AFK$m3)i(`hyzq=q_p}sP6|s4R~7@
zwZ-bI{K|s_ZYWk!kki!n-k=8Dzl+*o>N_o{0l(Wt?JD*CI;a6(?4tHB`tI=D))aiF
z+M?WMs&DV020W>Y+UL}FaZm&PvWwbX>ict01FrJx@~OOz`nFPQQyEzAqBfwuV}cs+
z!Y*pxR^Ly98t}0$YR{-|%x`=EfSZd|GypTyw?|L|9??bZc=eqX)PO(fqIRSD?hk6f
z*Sn~VyED(}O=@ibfFBgAD7QV;cTi9RexZxnIqLgiPy^o6MeRZL{XM7w*T1WLa!pm=
zyVY85z}a2Y4pHAJK@IqwE@}(a_p6`=e4&flKh-x;pUSr&f!m2yGyv~Y-$#QQ@PsaE
zr>pN9K@IqeE^5C~-%~*ixYFYC0a#0YTdK9(fVD1a`>5~epawj@i`qBUcSBGEKH5d?
zY4trD)PNtjyF9l&)OUbd%MEyX7qu^`?>j*a_^U2z_o(mLpaxv^p7J2qRp0JvEy!;O
z-Wyn(-<w<5U9Cx-D|kg<0T+u^G%Fua-%CLaxc2YL!`w)HTdTDIfO~dPYpL(Bpa%SG
z7qu^|?~<Sfys?Yg?dp3tr~#LDQ5*I9JnwbYT5iA@Vii?#NA-Oqr~wb{qIR_Uz7W)a
zmvvG5k@{{6YQV?4s6DH`SArUFl|PgZ_h#zbT5UGmg1dE5J3xJh2Q}bnUDVp@yE3Q&
zAMT>IRDCPmmnULD0=E~dXxwV*8whH^IbGDgpuY2h8t{8v)PAYH#X$}DWEZtJ)VI?8
zAveK|)fVOUF7<sdr~&)Cs2#1olY$!X>@I3QRNsw34fvNXYGWVJ@uoIA-UMf=Ey`_Q
z^&J<~&Jg@oV7)H5?jOByM+(jhtlI=13M}A1#VQJ+@?dUs9kmuYaJpDUYVT6tUO^3b
zNEfxE)c3id2K-hRwePEMQBVUu*hTG0_5CZT0oQ&gPrE3$jnucb+H9o|+_Q^XOMOQK
zHQ-rY)Gk!t)j<vT`z~sasPBoO27J@Q<+*LHz7MFi+<*skQTv4YP7i9p?{raHsJ=Ub
z8t}O;YX4B*YLEDY2Tm8OXx!eVzP_LaoZCh1MD?8))PUD@QM*Zfe+X*8zjaZ2Reh^J
z>bU{mDppZ$+o*51pawjki`pmDcXChzUerbHQuW;s)PTS5qV|aTUJh!&)s~dc$@SE?
zrCOVlzz>O4RFbOtW(PIkMP1Y`Ro^v14fwY%YOktq^~WkB|18J@1y2ktU|X!BxGz`V
zO+gL#L>IN^)VIRp9sqDNv5LG+SKsbI4R}}=wYlp1Vo(GAsEgWl>U$)p0bl8&#;dJ`
zPk3&?e~VR=Tjj}Ie3Dul6W|GA6{(%BzOMu|;3Hkso>1RQK@GU|Q+Xgo-rlXgJ=9u|
zX9->uSiq~qDzbE^`tA>Ez!$oxP54tD+}dg_0N`82D)P3A`kFxvcvcs+3)Od3Py^oC
zMePsjdm*R+C;Yj*xNEA97onCLuRqUMm$9A)KAl@KR!i{M!1}~9c`q;0i;BW4((|5m
zOF-V57OC;Z^drx?8jzQ$MQXWl_&=|yulqS>>OkIA+ODQ}??Uz^8FHHEaaVz)RPYuz
ze)FHbWsG0rnnPa05}y5#`#)_0;*Dvh3tsU?;;-(yD2FGg9ns}YCU3?^n7Lf||E)jE
zG2U&*#N{%AzOgXDHXCE5Z@!190fS*u!BLK=#f@^C<pU;!ag}52?|E;~hQ@g&3*P#s
z+#a&fys8~nnLA<wnpd}PPG1a<nXL`MdQZ%o+`}Rl(7e{g1vIaDdvL*9-%BDF(7Xc1
z1vIaOdvL)U;)f#_(9b$QFO<_a=Y{RT1#gqrl?r14&8uayfaX<m4=#A~{E^57G_Rp?
z0nKaa9$fI2dVb^rnpf7ifaVo;4=#A4eN*HDn%CR7faY~~4=#B7{YvBldVRf|#sxI5
z#(QwVoASNfRDPI3^9CIkyhgt@l85G<`kIv^EAcT%AMe|H2rqv9&TNd|!S`T_SMsOd
zvg{%Q&HH&Wh30*I4=#9pe?#N~`X%S*hbJ`e_Iq%_tN!(Wxoj5Dy!R&yX!Zg0;DT)d
zpNw2Uf64iI7SQY&=)nbB2(EEc`K*KfgY$D2(Cjbh!3En5UUyTu3+Rn*rGU8$X!auX
z;DW6QA9Pc>3+Mx#pSyr&-$D;A*v9Y$H<i19{=V~b7tri+=)nbB9`12dxeI9aKQN=9
z*$>f!3${mWdK)#*T|l!}0vFKio#?>@TPZ#rxqxP01umf3XVHTTwq4vExqxO51}>o4
zlhK0<wrFgw%@Ztl(CpX11vL9NdT_yZj^W4!G<!R60nJ{I9$c{X<KD;xH2Xks0nNUU
z9$c_ZWHar=pis~sa(;eXK(mLW2N!H9IowU<lNS0*&d*&yv)`l#7i>Sd#!clepnvcD
z+yyjyQ+ja0R+ZP>RPF+LvUZ0s7SQZt>A?ltT6T6*xeMq6oS$a_&7PMYT(AY^^KL44
z0sTGa=PsbxAJc;iw#(e@rg9h1e{+8B0-C)vJ-A?N&7@y1y9`3_;QZVLH2ZFPaKSd5
zS#B!N0(#i_xeI9a==9)%EjyRFsoVwht<KL~K(n8x2N!JbdEQOsE}&P{_8BHEG<$z~
zaKTofZQWGv0=nV+JPT;{3H9KDZ9|`NQ@IQ1uQ@+=0nMJG9$c`+=w>&SyMTV&`MC>d
z_8;}&g6&8Xw9|)`7J3Wk=PsbxtJH%Fwk}oORGtO&9OvgQpxM{dgA2Afebr6nE}*Y<
ze(nOAJy1QkU`x~^ZYp;H{U7J&E}+>j)q@MRPrXGulo$)>U7Vl0fM#!14=&hh^$9nX
zX90bt^K%!_?8EB81>3T&c2l_v=zE=?yMSiTRu3-N!u6_~%3VNjpj}feAkggZ>cIuu
zy*}Wkau?A1IX}+=n!R8>xL|A8d^eT5fWF-MxeI9ajrHJyZDhZ7Q@IQ1zdAp60nHw>
z9$c{HY+dc<V$woy@BG{aH2cwdaKZMpK{u6W0ezzLa~II;UF*RGTiGsgQ@IQ1Tb!S}
zfM%at4=&jDwyt)Rd7(tJ_pJw0Y=zr1G6j98^Ydt-*(cY73%1Rj<)-q2Kwshf+yyjy
z>Uwa&7Q5fOsoVwhOU}<-K(qg@2N!I|+eCZss5vy-^jIk3y?V&AVQ))qvx5)4pY!uj
z+0A#p^Yhf8uW^1Z56xD;9#UiH-$QOHcLDt`=jSe<*%sJ?3w8-k({4MmhGxqk)q`dW
zVGl0YQ8*a6fM$CkE}+?N*n<mpAD$PvfMzQqE}+?(*n<mpD*iTd0nN5WTtKspu?H9I
zY8<bfe~bk*TO4r#&6dX=T(AT31Ca}8wnO3qn(dK2xL~*BiIEFvwoVp3UZ#(2l|8s)
zm*w@5J7~6C7P+I3?U+5dV|V7awUd!Cf@T*a1%zf-WDhRbB>7t80-7C@xPWE{We+ac
zP<f^H{E-DTdjfF*%^txXT(D(uymt5D0-F7UxPWFqVGl0YUdUcTT*Mm+;j^poZ0#3>
z&(^}bB0e<x3<(vQeTO}S$~MFmwN($-(CkUX1vGmUdvL*)#hH-{X!bAS0-F7dJ-A?d
z<EJ7Q(Cl@@1vGmfdvL*4$g3h3(CmxE1vL94dvL+F$!8-M(Cnea1vGmqdvL)P%W2xZ
z$Z$im-x3$l?7!^61=}(Aj$A+=>-_xM0Ghp;J-A@&=GWa+e)$1?gY$D2(Cq8%!3Enq
zA9GW=3+S=hDoLTB*#p{x3$}#5%}wPlpm%eAo&_}fMSF0;_R%BURPF-$Oy}n=pxIm6
zgA2BrUhSrG7tnV*KX(DmKGYsuuq}0|o6224ucNJ<j0H4%R(o*47S{K;soVwh-p<dn
zfM$Pd4=&j5I?qkzE}*~e{M-dJdtrNU!PeN@-Bj)Zntieq3YvYhJ-A>S?I>+EWdVU^
zPc1H>*<;&-3%1<u7`cFE|1B<{*^k?U3%2JT9l3yJuP!d2*}L0=3%2t9AaViCzFu5F
zv(L8&7i{}|DslnM9$;KRueKzAN6>?d^(4BnT80~XOXug47WzZt_uzu<#QVCbe9}T6
z?)=;Z^hLe9xKyGG-Bj)Z`WMd6T|l!hxrZ!Xm5G%ftBm}kP|$2&W-Qpl{P9R0`ZVX~
zAwjdjxrdP0@BDo?m1hloyYq7w&}@e8!3BGx|LUf47tpIbPBn5D&}^LU!3F!Mw{cUs
z3+Srza~IHTvhKkJd#;ajQ@IQ1bDW>MfM!E>4=&iBz1U6VE}+@0&Gdj~^L7s|;=SC=
zz<5J<52o1Pz4ns~Umh(qo4tt^n$6!mxQO?H6K%X9ya!Y44}U(27P|5jS>(e9&F1kQ
zT(FmXz)j@^VMBTKPq@hW&<8j_cMZ)(?jBsTulo`=mAimulXuZ$1p3$j-h(^#gD;8P
zL9;o$$Q^xb9PhzhypNn|5N{@jAMYrK&$e>58^ecY?{T&xnEmEwKeOzhK_B)k{Cv=$
z*~{HST8Og0IdcnUzd9lA_+0L8U$yX|*&E%1+uTt2|B*N5_!nwzdo=~&%VY&Ru0Jd3
zjTYtFh2Jh52wrl;7X+_#UsWLAN3`!}0Uwams+FTFGp22_;)JCe9BbbsgN^I;Lif>?
zZF0G(nIPd`ub&Z=3dUg)03KG9hs2_H#1`ThGr=shLJK1uv4ux<5?E0`v9YcEz+IeG
z2OjOLYW!8Wf}akIm-LoF>))EsOf+*BM-<P^?DM5%p93X`=VjJpZ-48U5sU5EF0R+t
z+&0<yWwOW+rpfMBCi_nPu;krpEhS*fS@k%Y&GZ=ULuv~OfykB;S*bE-;w$5~_~-P0
zR@(4_dSC3}YCTiDS8ag@M6Q!arw4dJJ@LSY9A4H-CG)VpUbgU_sKDusl14jQkHA5#
zb<SV%gnp>D;8UBar5SE%Qw1{eu|jM;FIywbxL$OQ(o$?=e%;$j<`S}h^Wd7Xxt%p7
zj|x-s_%d_6eLEx+^2>s}h$|@Mb`n85D<n9mwa90R@+v4~YH5aBx=3C|YKE<T*(xj~
zot)dc6%yG24=yR>C@rgRR%?~`kRWH;g5sbRMEnc454)jOJZNY&Br=j8=j(O4%^o_p
zkdP(4v~0MMUB7(x@WZw1d<CgKBIuVL>C%Z-5NQ$5Ztg2d8m(vLU?geu=5<S&PL3~2
zdghiThYYf(c_7J1w|<e2$G6lL%+!6=^>G)e0{O*8;hbDcH-)p*7MPx-u4yh(1s*6?
zq3KO-$)ny{ZNX$jWE&Tm70*0gnel~^?5|QRU*?^O%*%Si_l8=F1~}edmCdP)pZDfA
zG%hDrK2;gF38$D$A`SpazK2p2WGb_LV&@%-<lSm5NZ<#fAfa)&{2-C!>nlY;rZU?l
zK^~?^jtfBo=S4w6<8t{yUL^~>#w-dlmDx54@<!SDbqEspKolf2E|(wV%J=0HfES@f
zL8da>BtcG+ooQ-qxPe=Xm3>1un{m*%Tz-&9@*SJ(EEvz*RA$FS27NwkQ)DNVc~@cw
zeZF*4WG9u`A+du#pS~%wlggwE0{VOlr^rq!lOD6^^KqOaJE=^1SS`}qbY6WI*-2&6
znZKT{S$V%*WG9tLC+BB$b^TSf_D%3=G8hP*Cn5XOMw8-6h72#x?JqctZ$qGHe=Y?W
z9GYBg?9e4S=V-NKD=SqdmP#EZsiLrMRNw7gEg^MV7fW|NQ5pGnkJ?d{M$QQTPeqzY
z-z%-Lm18d+lVozGo|j#tw!n5O(nR_v(lXmiH%V;2rrs6wz|2N?W~tCv2^EzRL&(@*
zhSYPki`4fEzNRF;5Srb^7cxBM8(SG(RB1z@X%PVNm<z^n@o<pOM-(mPsZ6>`UZ9XK
zRclK*@Cvb5%As+&{G}X8K2}i_WGa&`!M|4|kA)zC&qP5&<8t{yBDsqmN)`o~%B1W2
z8q(iLtyL1ZsXy<`Pm0jETz-(VWZ_`7+43<qnTJSyTvA1Io+ltY0kli}&CBj<X6wny
z$>9mh#ImO*$XpR*OP})0e0x5fk5+3j99;H9=-8j;vfou}vX__1KD^qf5#guQ7Tgpp
zQh0Z%wF3^g#94j7XT>W1dyLq6Oi~uw-gk`|i69x8*{kNE%~flDfxmE83wWzoxnHP9
zf?!^g@PEu7?;;K0&CaR=F_f8aB%xj-1>D+1zDKNw-B$9H??`q1(nSV<7+NKBx5?=7
zQ>KldvS}MG!Pt}FkWY?IlC3YO%`OSR=ewU8@FKBB{<2?ei}*g}dWpLw>U!Emn!vw0
zs}6kGSxw;I#VVdIi&x2~z>8{a3IN~dwg!OjU&a>H9xm7fww#qDgvWon#|H2{uGIqK
zBcByexUmyBFnDamRen~U{-d_=)I4Y9ybvd=wL$<#d!%*X24dw!g_`PuP2hIUN*>P6
z{%aoST(#NJCwRZJ>cB_DDjvqvRs&lPxUCkj(^h(@og{^aU2!n3=$sdF&P8f1bl}C#
zssk@^Rug!sSa~*3*SKIEc)hclz#Ep)g}OTk0`GNJ9r#CQB^OoyF9}>JvqWvLDS$+6
zB?1z1@laBXg|a!ia`gDP{!278&-oBFfp2>;7q*oPxTRRRKd2poV43-s+<XJLg=@8d
z7|hH!+EBrKay%0K%Q9bhJpM<WW94vy{hcl?(y+#REKT5qR60&>(epXycC|Jzz}<az
z)PZ}5mDdhx{~#EfpQ#A;3&8=8c2)~`iCDRLs3(J9Y<`b_<ea)%I}gSp>#1u8wd3q{
z-LaL)?R`XlE#iM)^p7KcZ1-GU7){$M?=jcF&7IW%9^|Yfz^7zrHy26P#<%}1_wiA+
zw$L9UcyeF?zarLn`=Zs6m8qMIYQwomJ=wku>uF#8_uTH!)fU_VrmmZ*>t^cum{Qjx
zJ?{DjcijXM&4kLB>W`+ybswRRRw563_O10_$|diAIdAR468N;UhSrulGB3FN#5Or)
zS2W-+yT2Nc+7@2X+$i}6)n=cB0~4_QG2uTbK%z4ia1RBX-SXTh{A;gSaw@{;ma2xW
z6O}1PPdaDp)ONpE$D~~+i*<h5b)i^4PP?uZ>n61uy04WgQ;w|I@-%b&7Sp!ed{kxK
zwc7hB#lzKh6^_T8thSe@_3Q>?Zay={Z8L4m`QWJo5+KJ?K{6)2Qo*uNYVu@5b&w#o
zj1_BbB9SfBu3!h?jA?C1M$3*r0y}qENk~S>HXYcYnu*vGrrsg_36;5=C}3?Jy0Ssa
zF7#nh;DUt!!$G7O`~I}Xc37>Q$==$A_?eitP9CoLd%Vx>9oyjVh-aT3d?QH?2j6g8
zb>L5&H3+=U!#H}l4M7+qe+oVhWP}+<Qn1NlLs{NVt*ulCYYxUWL3DeG7CpK^W`<;J
zaL13cKe*Y3fgd|L$M&C-&MLkp)PXD^meuHjwWD5U>aQ|6!OoPLAFy6lm(360-&5(>
z@U&NQ&Sq+@T=P_}eZ~5i+KIM?%$R0>p75N}<EKv>KYi0SJ)d^vV=L-9L#%JA%{Kv!
zneyTM20z$9;I`DpBVs+_U1N?{Y`2ce?}6@AYcuzW@j2_Q6Y|zr1A_Yn)?I>2)MksY
zLSAd7T=8vcGn<0z_^nnIxPe&f*~xUqw1ULqO21iIbX0o2vYDx_bJW^jRs~)l*2v#K
zhIrFIbK@qr_R<{gsMc8T7W`a=Ld-f-kg}N+m1~W0se=V?QzcD`V$Sdi&Z4OQ2rMc`
zxlEBV9qg5x6&Ivn>cs_F*%NKzHjHI69!om}H%P{?Ia(1gU<C*2Z&c*_y#7_@+y)*&
z^*AMbiYHz@P43PJQzp)mvE^u5#pcVH+571*_@q1@rFNCdoXVIf^v1S^N9SYp6SX!&
zuNC}VU;$UqaE>h3pVOG0=VO~(?0#G((6hxAt*^OOvNGZAHEG*Zy!+o*@)QplJecg#
zGTBd!&2#;kTKhh6T#n7g<sxURwF}0J6)3aCSRCnLj9SdoSA5u7%#Jtvd~L<<SYTER
z;}7I8vA-#w+U~;*GqL9-14V+{q-3qJGr>xW9^GTw7TJe(%fb#Z&LTzvvg37mTG_b~
zHNq)6U!JPsoU7J`c+&ezrUNp!1ldJpvW(u98Zxt6Et5s&fgn4-Om>>?tq=5j>^kru
zvFwz1amf|L6p0`@x{|)w*itgvx`$+DA+n8&B-au%)iq0P;gg71sOTLqGP}#r1Y2=z
z*Y5b4liRTHVarQAEl6}&+C>RhSI-a2hFV*2flaaUhX}Fp+3GzoC;~tBf2i0fQcNEp
z&XL)<!6WdPt{&%&&V!$?)^Y^i?5sNQ7h)BseTI6!s&-uErEe_GOSnvhV!5#u+h33z
z?x;)_u*iV#c2*tu9<l6A@pVIOsP{Ve<x$PV!;8e`i8d>O$2+SIJVC771Jtl{yLnj6
z%{720IcoseX)7J#F;c*QT^<8h54M!BH*t<*E5|IgS|_%eu`L^vOfdR4Q}iinZBT%^
zzNna@jR4foRO5WcK>b==QwKh~j9}!pg5P2H+W=xS^U!ER-RB+}z)lZodGYXh_fP|p
zi=BgkYj;FjYeV7O1cCQ>95rBP9JQpv*m}Pd?fh`vAtmRXs$`DqLH2CPTpeWRm)Rxw
zhl1?vGTA9>=LMUt)(-li@tR&L<wz6D*+eWj=x48x>s+GNCJ69}ae0>&7x<i5`Q(CH
zRnP8Curq)RWBvzjz5zrlpGIYh=elAI_-Bu65J)7Mty&uj4+W2Ii0foG-v>l1v(=Z(
z78LJu#eU#lJgy-ikz}^|J+8?s=Gl&_^aFqAtRdjj&guseTEWkI&Qd%-RhwO5f$wtO
z)=3PRT<o#v>J0l6m1K5-0NzwQdn7U3hS<}qQLhXBpi_?0P=U-Kfh<+(MOPst^Aoo}
zKzUyFiVeimiSW_NEZ-yxw+2f^K@s4`gY}{~iFu443<JRNVilzmThC<hw9q})e=dk;
zyTig^FV=(FP^?xkmxu|iY(B(lMRR1Df;`dVo&}uetO4Mu&Z+{hch&%q80<zP4x!-Q
zV=EchUhTxniIsCkjo)F~_#HOgdfJ@IxT*BKPZFy~5>w-ubBP4Mqjq#<+hkFQWo&o*
z`J64?UMy6wT5_Nqsu@{S<XEQAS1eTEtFm$)*$33x!VmnWvs%FKiIpv6%{J6kF4zPP
zte%_g;&FG^Y5*~qnQs)BZ^Y(vL9Z=9mbZ5gHQ=Sr8U%Jat+~^XK=Qnwl1+76eZbF&
zWuviR7^2fbpF1Fx5mAWmtdggY<<-}QT6MLYJ0c3Pk(jwC)NP%j5ag1JQY3E`GvV6l
z2zah%SO<0{)9=aLv1)G3)+6A3&Z+`G>XV`l><q0xIiR+VLd#Y~0-$6W5B#9VTa9a%
ziBY6o6-UPNDhOOF6H_!2nGE=S;@OIGyx`e^g;i4PW}WD)Ua^|7;+URMOfQ7=fWgo}
zYA8AVEs}wtHI!-%#qR$qt$(UbS5taklf-gY(`{9@cdMOHIjOSB8}@I5HmsezvNhn&
zsdOAGhIf$YYL#IbK5?ln`)&A`EO-}&3A~M|oRIGH+(-5g4p9OR2~mz!PH~iIBU-Ta
zE)_{Gs(&g+tO)sH$Rt0#V|_^Py3pll?SA0m!K7mI1=AJVXpJmevEB$Xu1l<GSM0G~
z!9_e;xA|B!frMbEq0~@P(3>czmagmwUR8K|U(SYr$2n^jF!&ov{Urw${{9<-fNkRM
z%!Mdz41O?7oQH=q#}9@fm_!9vhp~hF<fM|+yfgzqN@R!As5S(V*Z~m7VXQcc!Z{Pi
z(U~YCWr~*%L;O^+Wmi>T;usMml73Yr69iL`qQ!kkh7WcJTPLTNSjHUAPc9K-p@NI3
z`{m<h_m%#-F_y6>8XJ!*d7=@^7P#C><=DNWEb##x%XD)Y%NDpiORhLc<ttq5G?pq@
zA`sz<Xk;cqbXrgE^if5sV8KJ=T!m}b(7>RTtTt%f?e(1A2Ctzj6gyak+YmeW<x_HE
ze_1wOcU$Syi)9L@UMy5FC>Kx22jB{|mMw6`N_m%Q0k;(^8@gs2>ZKqUk0$2tbn^}1
znyys^VlbZ>P#+3{z!N&+Xtbfu4uZg!mJuwA4*&L25s33Fl$vLXe-i}aJQsw*zX<|g
z>Ifx$U`e5__d@jn*YUIlfSu9xd33i1L13rT^k~58ny%On?DWv@9!T2mDu84>x^mWT
z;Io50;PYZ-V&Ip=%SxBtF6^vc9NFt9Ab#?B5|3)CSTa~;il6R?wM>Rk?2;3RTEX>S
z8d5XWO4gL!6vxLrp7gX3%h(z{?ue4pLM&Ub9DG5p7&a?9kWnixdaCFXzf&=t_$dC~
zlRRs;KMJFnO`3Qh(EE~PZ6JV5ej5lN*0bRI+OhqdTjqfR*wP5ZoK-NkRZ!HgD8z-H
zVmgkojE&=;HYgd#Shm3BB0ZhF%O6}efel|_>c9c9vN|-|Q0D|e;04PF#s$Oa@7!qv
zxW3!k8;F~HK0%!o1c9AS(|aGB{@tC{fY{7D)I2TB+R_Z{^pMU_JUs0l`hetOhY8NG
zX)GYsE1qVU54QS&*vu6B3liwZLuUf%O1gn+x}Dl=YjZqy$ZRSZyPi0x4Y92cN&|?k
z5xFvB2o+pqEg73Dy{Og>F5v(8TbMd<PqDH>G}};pK`@R0^BcHG1Bg~;E1gcONMUoe
zqbuoe;*r6k)!<`oh|PjWAht&2;z%cIR&DRIs|h^NS#{vY#L8cvLmlMYtUUh*9(D^J
z%Cz1kk)p@e#Ey(DS~CtUS+tNPIU8^w>IKteqTYdSt=6=FpKw+kc!XGab)b%NZeexQ
zyPcbB0FQLm0I<_mI(fE|!Y;1Z0PgCn<Z>S^63aIiK%rQ?lVCt*4^vxoCmYKYlzFB`
ze=oIGX5h#5_Sznk0uL4|KN_J{^$cgla|!bYyZHtXt>UBc5Gj1x6|2A}oK*)t<*X`j
zrbk}~?&Pd0p)Yk-9mvafTgGM8o7aW(14-LU>xNEuLsj4z&guu^V|3*>HwrjV;C!{&
zfP&xdrUtea49N_n$qe9#WQu0Tw`A!WwRQ|YU3LuLB$>Yi*(ryW9Pi&%0(Yo2yR*w=
z^#k+D<Y4#wGTAA)zsmM%vvox9c4rL$e=Sx%RiPFKK}F{c=8toc2Jn~8ssk~Y&t9lt
zK6&_$`FFdm8t_(UwSXAR%-7mb!F+PZ@EO@SUG3;f`h^)}PIG?^AZi8ATxRQW#jroN
zXaetCGq0YlE5L`v8e2Khb}>Oc?%Zr4hMJ%)FQyJ$O{`qq$3}oqKI@@0fRA}7vw*nC
zhX@J}1+SYwzeeuoOtslT1AbLJyW$4E(IEz&;bF9J`2MvhQZi^4Di54=I{biJ8b~b-
zV3fKQ9p9HJzPmj1WI-c<?<$a@Q++IBhjZm8`3y=fII#0Gx0h~%O=Z%zcd<;tea_8t
z@u0g(Z>?e(3w?gs3Kz>3oGYJ~t8o+a5iP1#EMqP|U*<BFEpRzWu4Z&`8OxZ<_mw>#
zj%5p6en74cP@5I)6D8w~%={p`uuK-29|qYo%PND+t&%OObSz_Wu2J^<BbF^l`wh8T
z$B*iCKE*QT^3jt@N)yW#xa^aw1G>13Wz6NgGMBMzflFMm)S0>6K3S3h>&Lwc&txwv
z8?f<Ot=3m-yBOa#L6?PEyhob4`kQKtZb*@7NXDM;08txTIqQnyWc5K2se=3um(6q4
zT29xM<&VtIJdWg~j>r`fDVnFTjJdr2xssB{vIQA%GT2O~6*G5ySq8Hub4HL|Ty}W=
zSu!sK*-Dw+Il41EO|4yt0k3sd9eBN1`IT7bY{)RS&U3{E@H%I;fStC|yD)5BAjP8L
zh-IvPi_2y;vLx4$CoT#`Xu48-r&`kjzDKO$Qt(@XFZumc6L^WU>cC6I%56d26$ItW
z8$@oAh-H5NVI>oBv1A^1b4}orV%g2AUEx7(m>aU)>qWQPm_ynQX<(;fI-;p!tw=F_
zboZ2^eAW}Fz9_hgLM^z#Lu3t!ScxW;9WY#s|HI8Sfm`^atrl>)Sb2S*-sgf%VE;0L
zK6nB+ea)RVfY{7DG}=&mxQ7O?(?dbUW%&j7Py>>S&3PbhGN(0nx{Eul0Xv<hqqU(F
zFl$d}<IMl0c-~N3bZo~mHhim=T@oP6nAuSZ#6`hXC;2j3rUk5Z9XJ#j1UmwNor>vr
zphzLDG{8>9w5BK`WyL7{5yEW6{#hTmCh)$lX`y(OD>i`Nc2*sDNr$aQ8ww8vODQ7v
zbSS2eIb*3VhHjT3D@L{Kz+SX&KKH)6Uf$Xm1OL}qb>L6M$`5R)r-EQSkukqSZtPNN
z?rvI|I%Q+I;vanA@Ig7uR;*+5LnOIATC9D@D`@YtB?jEfS#==W*7L-m4tK#O@Jz9C
z!Oj#ijMLYBTYdw0pxbHzag*6<_|AE@o!dbJ#A(4XI!<QSQ(LsfJC#XqLSvaxm5;{B
z5$-8+W!2yO$dc+W)ULGA+UjG~2M#)`4xA-cUR0=W1i?5I%s=J3=NiDZU8@DeU|wga
z!(Ffeyuev4AVK81aUB1N(j09+RgV9~G6iSie?(?Fsx`(#s>g;`SJz~<MMIy;q(hGk
z<+ArT)iwmi3#Q&N@_V*gn-4o2RWcuD>z(kmYAr+HeC@xrg$#JMSowT_n&g9>lmhd=
zb@L4%+W7!NUF=R9z$cv50^+fF@NxQMcUlAD#!9*LBnbBI+er<0oqUeSLEzo?F9Hc<
zL@u5O=gB|L%|7smPWu>JOLgpOjPltk1jJZgjo4aojfjoG?ihE>*|^8H3eIU5dPT`*
z&j4pAyP2Nlv7_1$JBwK`ak2F~*|Lc{>+q6^8_SNa?4F!zkZH@F-LNkhZbRXvV86@?
zigA6lSyHQMbQq<ghn=yW)hkvjDB)U>H(Q9%TGJ1$DiHq#kB%wrhrPtJ;yKBPj+J36
z@%XZ};cGI3PQkuiL^xJ$Rsw@o^28afAd)N`Ka%gO)fO$_{CFeC%#G8n;OfU-lEl?a
zDRHrHhXU|Gb=jZ+4{}x$_;InaBQ3oyoT*-HT8V%kb6YJSHcblHX+FI&U!qN#e^+bK
z1K**CiFTv`cMvNN73!zD2rM`xhxD}hNVPUM9~T_!=BvPUoRw60dui<%44o&pKXmt1
zV2CJrT|Fr>lpTi{4gLqnZC4Lz;KPCk_@lIervyK^Rz4KA7JN)Ef1dRBLIZyhe0Cj|
zsw?J0J@$bk1WC(m0ZFH5%^;tRl$TwJzgTo7ew_MG3Izo6Cahp>`MIQ@RGS^|WjCY9
zte`rXZ2!?E%kMnNgu=D<QVqv>m0Bwc&JV0F3Wmb9bQE~=E!qBwTAP-P00s+Y>I)jm
zwS6evJw6MxHjs2j9v+7P&o~jWvQ+1ml!Z8{fytg<CQB}xt0E@5u&mt3>=I<3E|c9)
zG8EnHPAZE5+0RMGR*yLS8#M}x)!O{rZuf#aMf!L4qpNjHawxSJimTjV>rugQbR{$5
zAM(BG8hLc1D<4cw_Nh#IMIFl&954sT#fe>9r823jSf;?$Z{=c-v|<<g;*-?kMQQ!r
z13WSwvdR<cds?ksc>;sl+(hk<690#*CElkh)=kwGotI;of*UK|RBskikE3~?x_0W~
z>0OCTniMWN=4I@PYTvA?+Yz&G*&>Myrw5a*98<CyFxkJV8E&%ommP`mQDCy~EsLQ~
zY0p(_hvY|#4oUhs%h~$JB0W1yFfw87GARzlx38O*s$k*7_UVdY<g;!N!C@VTm-w<=
zPp#ME5y8*`SueQQy+~aP)fSywW0`_Hz89G(n5=s%^v|lbp;`1y$&kmgMLS@S8InD_
zE&1AT8wxK4n_#HnPo-Ftax7Dj@=v6WnSzv;NMwa@M3kl+%NC^^%M>Jst5tnw*5g^x
zP#2Te=Kb+S^PUN|il(m(*luOVC^AfSlU-0I%Snr4)nuoX$zqQSMU%a~OqMIhGef-d
z%g*jxQeG8gr<BPqS|P9C-_+XK9r*ci9N7cFFNl@j8$jI_1modYUtL?fNb5s_A9hw1
zINw>V)OIVj{T4}MdvqoJYe%U}dK!*p3Qohs{68LGGVxYa*XM!=kX-Dc&0cMY+k#x2
z*g@(#O0CV|>x<^_*VKQV+HC&JDOq%MbyS%uXEx5j>CUPHXNXmNyE;d`XS-q(_#0={
zfxmTI*$3O8?s0C>4KW_hb#o2i-Od^ScG^nse!nDzOI@)6yv$k2EhJhbmhX6m!hlr~
zh^^vH(2I06%xhv(1YVYpnC;PR0e>V`UVf<O^h&5;xyJm{a$}DMfM{j5(&GF@3a`3i
z75Em9s}9`ESykYCXVrn9cUG0q|LmbB$IV1ZuNSoR<;zMnuz(F`HG#q15bo}Fsi70(
zd67qu{3@RJ^dz3|*?}THI|BlP$HCO&AkKMjo1KBduX|vFz&Q#m69b1}2Z2<u=zJb~
zw1;s2mZOzD?J5u_CIzHOmSgO%;DH_@56gCTikp-BOYXR^d_j<1bVP|PGCv8jFP6zJ
z(9eA?^Pl}Rfv-BN1^l;I`SAp`njZPuu?XyQR&usUJvQ+8FZWmn;v+xmpo012Ft|%L
z?r~dHEl%Fh^^`=isj#U6ew*5&=@IMM`Vp%YEGbLm1#dPt(0Z#^DT$Fx5w*FoYuV#@
zV&*rW+3Bn7o#afdPn-sA%z*rMB;V!(b*&WgA@>>zU=C?pFM<4g#!3P_y2DnZ4TXn-
z+NI`enCDkIc98+ZU>0hvz<e@S1{KetYHet+aZX@eCU{L?#brS20*TlNRLVwciGKL-
zx>_3n;I{6e4t&2@`Jg~im*PRe!$ddN0Pf(d77&{@bihvY>8TF$E4!^4a7Ski0I_M0
zMSz{=(_JjDs4nZtmeum9vTcb=G!Xw%YqbO}@bV4;zbRH;HK_Z8An<`@1mnR@oi=cK
zirX3h;wE$2XhYo*1c9AS3yL0PnypWGo$JQxz)y)a@<m4oev@Q}3~}5YRO2+U&gWHa
z93EyI_K_NvJNsfg(<Hl{T9Z9vOv#yRPsyC5)-Kq0+C%f8(=KvN$=SFA_jXpJQzOIk
z)kX5%B0+}HG1*V9Qxf%yI?qm7A@^v}0Jjt?KYXD+>fG#_9qMC29eC<8f^j}?SMT<&
zSpBeIGq7T<F78f}R`Ife;#^5tNvdU+D+?rZO^{tsDyywDcdE7WIrRO&1EU02P@BgH
zwU!Gufm<#k2sOh6lRK3KNgNI0z)gM-Lv7@?8bHkFf^q5b@GH->2INzt_OJ$so6J_N
z4K>M~)_~-e3qlb}!Q-E6<o^wiqmKEYm7FaRnW_kE{AZV5W=LiqkG2Wi-!IHsz>kZS
zCD3d`%@2ZcAwMRwM}<%p={x;xc>B3}J++u5hsA?jYcSPHJ}5a;{?X1>Wia8}=lTy!
zF6VnuwEB8daRHXd@h%G2WG^op3qFFlz3*>m0?&2U0PrHQ^09#WW)O@+!Thc+(f~G{
zRR>}yGoPO2Qd>1_ebsFZ0tqgk_fU8!nD>|`m~6PfUvc{_AQtVi5EzUn_cc`+Xt<#&
z@N3SRl^RO6jSvx^CCs9X)iPc@5V4-U6OYvjw%;72*zneo?8P2-6&UhQj-X*lpXOSL
z$i><u_j|Rr(gP=IOGQ5Ipr(e67C=5emJ7x;xI6Mt^vdiviOk&COyy^hOh=@DP*-sP
ze^l?k|Bs~X@SRh(GibVM&<eExUb0Nl;v{CPcUY}CSy<*|p=5ro*761ZMyxzvs7He!
zkliuGg}J_04{;icw3}kFTDvCP`7;IAgt44maus|oUl$>jGxBRWdsx^6zUr(&;D4Oe
z1YW3%JzHLYZL#viq1dBt9)LFn-8f6)I@3KifM{jr(<Kwdhg`7+Jm1|700}O$Rck|C
z6$F7dII9LEj)FymAU@?m^a0VzJf>eILy?f}V`IScJc1UGcr#o59z7lko*(>B@oX$x
z*|G_q?e^=33!WHQxFY$Y1sCf?{9g)wqM{mafB0|uR@vWqih~P1@wB>M1=!Lvn+1G_
zvxb0MJF5yj#92eYP^DP}!mKHHb^Nd*cuMWW$_ddI-RXHz601iNQ{$xSim9cxXwP>n
zW3P-ZA6}lJf=dQ|%<xaW8nUAqxRYN!4*_>|Ruj0UuGH-LFK`{PvT59GLrr$UCU940
zCC}Q4>nV?`0Yob^pRN}u5}!Sn0giTegFu4IY}E=vtr6<hK^OQQXVrj&)}_!(JfS`y
zT3Hb35|Sp=pC&X=lu&;`Lj7q%18GA2X+p{EBypXsIgza(;2--une~L=tARz)$-8Ln
z!8)nh+5;q2Tc?3o%qsZb&AO>H_V;wEK!UM#da9-dl{Hpc(d3!<7}?y)ZP$VC5^Hp2
z&RFouKL6_EPelvfOk<oXj<0-5t1ZgRjL<{)#2$L$mF57&cbMArOYHO<DT(ENiT(Q$
zyi#rUcVYF_a#+`?%Z_m%f0m;|I*t{?KazI*C3g6jv<Js!Ch#_<a%}n~_Pb^O-Vh~_
zKN@0DmVJpGZA1&s{;5c^j8=4+zLr{B-ho`_n_=LC%Usk$ebg_7Tflvt)darktQK&r
zu4v6E@L*>p_m_map@-T4qE)=&qj;(-)(HKXzyfZdIP(=B>g^tV4fwyy2ttvYO*!Dk
z$|<)9HN!Kl{eQ&0d4L^7)y93ZkcBk_2p|E%zQ{6x06}CEkg)jDGk0MEvxG%(0SN*j
zgk&awAjp<T5JcdjvIGGMiV}PQK@kuTqoPKAqd~T?8a9av@}25Fzf(6=T_NxCec${s
z_0;L7PMve=RCRUVzJ2#rIB_{*m{Yj1f!W*v<f2PXD?mJSopv;-5vY>$59*tyz7xnR
zwq-#DqR^@DH1)(#7God*l(s-JLRdheCoCWtAuJ%F6Bh6|i()6x`xu>)$bcKv$Fgr!
z!?|2JvT-`7Nri~Wln0_K=Y?a2GDszplt>aC7twgv0*kOpdI4J-#-Ap|4Q*&Pu$+zp
zMJrE<ZvDlSXvV&xAsnV1mF-hQj$EX#KegBhM>lvvZb>xDCTFerPc?w7DPmkU?c&In
zX>2dm*xoGD7!L^=N&fPAfXyU-`8)`F6jqpnbjQS!xsPt*A);7OG~y^?k(clTy(_lf
z`|eh>-g^rgu?0~=VFBF@lW*D<SA=*(wEU4!tv?b5s!OxvtQDkd$dPm%nM&7?TavCf
z1RoR0nUGJ6cD3t(25=7()q&GY)Bv8NBA4X#CN+M#PK*HFZEfqoCruQ^9#d~olVu46
z(yDyvq9M;U%F+eg+q$b_=hsctj-B_JD88Yp#@ug4bpQ#P<Tj9?iRr*T)7=fk66Z}v
zN&LF8i=c@*Adx6Jzs6zcBn+)Rc9!(mNsp*^rp2#5{;2vwRNb@DH>nH_?(I`x;#&3$
z_3t&Hn7C@?)CUI)DdrmHen)k;9z#YSt5#04cHw**rtR0#a)fN)m;bFhj*NsEFrqsn
zxPFK>kdyK!np8SeDB}gJw(>&zPzI@F{!Z5Wursxk`3ro}L{%V9QWi6l+H0N|T7dey
zj8X%(Jd6WGQTa5yR(0@$%w;EIICLW6JHAPUUv!r60nwH7LgSZehw>;;{wJ{kcA2OO
z>{d|`8*0aTVoLq?MyUa5RUU}Z+F-nvWpBNPgGO=i(@iRS_#T1i%6XxsJm&a<-Ab$j
z*R^%43S3V`#e1EpjWVfQ)KfjYWH$uIeke!IT#c6sPm)~Bl%WICMadlm?pJV;DXoA!
z?kuf<^VEsr$DgTv&!lC3(!*z!C8-F!%R~)etFCxocZ@bbL5r@>d0mREzychT4_V|l
zuc^_n{L$@eRLiYemfhA0IYo4=dj*p;8_u%ysRJ)DQ5DFuC^8;EeoeNRZT~;1=l6=s
zuEOvTj$~`{ZR>Cef%pled0DpV-LWs&U9vi`*MEWw{Je^aSxN1SCUx0L?KR&V_@)uv
zR~N!~XKKPUGo=Rf4a=?yPtX?)e8yf}(AEUsXfGk?2J#LAmw4b)%-HVG*pf{QFC*ml
zHOhuA<jBz7udkJkJP)}g<J8okeA|N45ylT|7Ad7{VuhTNo@oAeQxmVEAxE4`z8W~>
zmUKB`c;O3A-IT>M<VcsvSNewBk}juem;9VYS(hP4x=g;(H{_Odd9QZK^W$Y*h8*cK
z`AXlAThirUwadZ!gt-e^>g{K6w)5QND}DD+&XJy*e5Eg($;vHrJLHI+$yfS@+!D9v
zXjgZvpv#aWT_#`Y8*)p!oT=-~<ywlmKc%MocFJk<-2GBqIQ+tLS@c4V^qqWFaL6rj
zg|1juMP2e$!S|{Qk7y}RW!zu(RK|09{6#IxUjGZ{1?9+A1V}UaD$xV+>wjqotHh^@
zuJ7AuDL%cO3OSr3?3@r?a6{QoDP^M)a-_@T>wiOTi3glkukjxIIOPGHpLlNa^}leQ
zZQ-WgBREEPRr}cPst&B0s0ys9sC;*Yu05<_4cOW+-m%hfe{EP6`;a5CPrmCHE}qD~
z2}l<u!?B;9eGk@BS^*DNQMum_>d~isL*QZ)Re{f_sL(}iRegfJ#4afEL{t7Jo_D5(
zbA)m>H+6L&PwN*CtW!H$iRGT54z|o+U~9v8MB|3-Weww7$XlsBA2kQEHid_Kk%rI;
zDD6s-5M7-L(In;Y(=Ia1z<aHS2Jk@@74f0=lo9K|CCd@bG6i&ci8ZVN(dl}qHL3m4
z6M?Ng#1W?lzF;9YBZ2rLxdo&f*J-<T`djO?9oX7wJX*JD1Jp{Vq32VSa=Dgeb35e7
z@Fm~%3zso#89urwxt)c-jFz+lKBI<}&j1=S2r>hJtqtSxpdo>j&;VN-#xbQKED1*P
zUB64!_EB~ltqwd<MdfbMaG*7;0e3Y~706fCiWH?r4<$<$lw((DM95l!qE1yL!AQRA
zmq&{~rk`@i7y~=jDbiBzVm&>b%Es#!!XiS{=BhNOQh9bcDz)1-Xwgb#^$lCKQXBn|
z7Alo}Rah86ZH<jvs8mL(u%J>qsg+u^^8X3PCKiqw@J<u;zN?TQG?wT54j5f1IZ4Zs
zNB_{>Zi?E0Pul0!UB`?l6rH1`e7X&6u3a2*{>am+TDx0Iw?=>;S&m7K-?4DFIKiup
zEObgYz#~;ubVKcAmAV}(_)L@S+T<4?ez;s~YEP*&e^n2ak86TS-z3s8nlmCIVK&t_
z7>Q`gsKVH9X(^(uG@UxN6cO-D%e3JiG^u>k^ME&*XyP|C5AWAfv^}cuH7{DGaD7ch
zVUdR?c@gl;mV|9@UaGaVHnO<?Md3SMG+47}SIefZ@d`<_Vsxk->xn=zu^>L8gkO1L
zVSxW1=Vu4`IoI;D2S}be^&L%WtJ#qD02$hXNbO=9=pG;gUJ$8`w&Cvqk_H8l+IK7|
zdVnNHL8Qi_Bafg08TW!n?N%G|9w6CJ5UH^?iAG>Y%cyrWscmRO+yi9v3yswN<%vLY
zq99Uhv+?W!k|_m|8tEW50?CPjNR8D~h(MOkf=G>pRER!_3KXYOC#l32AKbo57eba(
zr@pgEZ5_+GDv)P+3L>?$JP}Ab7DQ@OY)P#GnLh=Q8UYd;fjC<bKiuDm_`AQ&h(?_I
z4YGV^%koB?&y6^98=NDLvK(!kq>vPp9UaRO$tI#W!y4og!!4|MjH4$2zM!Lbww=y0
zX7W8Yxx0p{QP`WG0CrH}iDrBk5GUk&S6|bkOvk+GPgKa%%Y}RBWW!x|$9G+wLAah1
z@7LKvuIIwzbVI-p=fZG=Nj83N&vgOj7ue(uIgpf-4bj5sR9>(%wY<4S@#|WOzd+8z
zq7KLz)Ab5wn<X@|h&&Mykn^5v31%#W2HZfyn%m15_`r)3R9H`>F;RTn)}RdNQ>i;n
zrS34e_Xi7sY*??`Qa_Aj?(^V|9Gk<ja8P8^MXU*?h{7O>h#3A+w<WC|GE2A9ByK%M
zp#N5KER48x!?Mp7pj8#Y^O5Qe!*a2P<vN>Tbs&qR`yEyAP+JG<z~8FK(TL31wrM-F
z0>0I@XR{xiPKDX*8sj+Yl#{Vgy{W&v;ba7XymB%!hneVP$Lj1nT}vnXiDFK8PR7zi
z);SrG`=h3vlYxi%&HaPZsSsjEBpbI;qLYD7Y;8=1RlyO%zoT?uPPPHcfLt%hgnDc`
zDaDk{g@lwnNG>F9tl_zkWsTEQE~IjTpL{_4&3QPCAGt7e<a%|0iRe}fFzMy4FThMn
z#{)AN9S_V3>3HNHGt<e!sp(|l+;sW~Aal~mh#zy&$w)s|I;St3gpNlF5h=$DWAb&4
z2|f?6OsNbTv*oZcTSq3g911OMITRY)awxR1<<N(jCEut2ATlTyhNk4g(1=_ZcApDV
z9kT?<odO^sa&sgezB4PKC5{&w;$)#6Wpj@6K#wkMvZg+$zv~+fA?e3iS<YENvQehP
z!s*Pq4?hdOraKMRGSL`ryG0a+4m;>nHdu7IgKdFq|Hi&YSaio`MnrLU4fd$)ZiJPx
zp!I|hDtFNiwU><m-Ym59O)n4!T{Ao+s7`j0dW(xr7MdaF&Cm)Fr5vJ1`9y5yj3#{&
z)j}HfT1dlw3u)N3YS2ZN2p7_nO^fWT+tvh+(rb_W4MbFSvI~+PApYb$+#!VS+AWA+
z&I?^}%US41*%CKb4V`BrnE|m|y2RQI&DsojxQTkPbv;Yyl3|Q46!`_<5vC}^!;4K(
z76y8b+KZ9SH}LAJsR*D}h^}}8{2v8+WrB+R<hU$Qoih?o)`bHn+-1`f+!;X*3U^FO
zFV1m~P$p1#Yfwa-eYwRaqVMWPko$Hb;+)EDH4%m5!PWFReiVV;f@*9*HMXD{TTsP<
z?d(Qf2J}W%L!<t!#%$Vh)dk*0Wy33zWd#~NZ1U*l&MF!gADXG6>$Q|?wecFKhL$1<
z`+rIMf7J&C_;(X^1F=>V0e$GY<Ivfqp&z{Hw1cAAYPXvvV3fPvP^jI>7@0%VLDv>c
zmyQ>D&A4A}E=B_rQU+I6tqfQRMO|TEhiE>K1TrI@N&Pf5+#@ZA>Y+OBW|M)UZokxI
zd{)E4&Zamau$5;mETrt^xl2(<xw2tNDL<vqPs^?Hu%X<24n3h&%e|+#RkTN-6+XF>
zGahjp$H_u}oGeuDWZ_?^Up7jidJ%=%MHDJ8*<qoZ%Pv`@fVd+&y~We%@F`7$Tu7Ij
z>E<pM#+^pX-iCT>kDg>l45U*z;e=g^DC|%~bT?X8c}c!Mlgr3R6*)HfmBd*Bo4f&4
z3}6i9t|kVMk|GKXaG&#p9S^LGkLKwPK@i+R@i&!iVD|wV^hk_L_NXUltFyI~FRx+x
zk8IX<0)OsD@agGcs?Agt=b5Suc!`NRuTuD*Cdz<+GEwJ;=^kFmt{8mAt^Lg_24AYJ
zuCUe_kiJ%N>?;OS<tGz{IC1TY!PIY24a1!Li<#&~f`u*JBEslZDxI#64>No~r30n+
zo539qD||xBftCIW_;+5WpP~Cc;*i$}IlaiF1b){#tO2pUWPic0MtC#3fWB4cZ7I+)
z%@Fclrp=!HiD?6Oh;2Hf(*yS&run2^rfia1k~+NIQj+JPBDYqCnw$((+@5kWFn6b9
zsd{ia6>jmAExuu=vWA9ziij@JRI<{>ih5&3y|JQb^$ZmiC%{lwAq~})pDg+C*pE=x
z`nsh15z5fjqj&q{{0ThP-vGQJT2r_S$4v@Jr{rE8FV@xWOX3J+s8U*P`5;=yTDJpH
z*usv|UXv1P*)EOFJtsb0Z=u29;}P*UdA;$r&IxV_7vsZcH1t+TFIBJZ(6W$nLxmf|
zg_PUF+!`*Vp~v*j&1so)Vb>xG`z@K7p&~btLQPH<sw$gs=prPN0--7qg_=YZMnXhk
z7(|qc!S?n+VsG4CZ`@rpEqTs?K`Xhk8KHe#VtqA$52;AjrB|oNy)|Oz8aQ{q-u{<y
z0W$2eJqi8A2FBbC0eFeo)f1ZFXt51F*x);i?o`Abwl(Q+hIQBrJl6to+N9>6wX#^t
zA@ar5{>tV}>O<|(h28@dp6EqDGRf_*V!zs&_;r*8vKPPRc~KZheDDSj8`E6bE_YGA
z%vu>Jx?~Lhr^D%^`<#VRHt@uUVB~xC6-5Knaw5ht&bcs*$cje#@7|Ur(;2pp`>_JH
zn71UF2W|ivtQPZ@OfNBSNpv2XrY11uoHp>ymSEE>eU;J8?qGZz_XjE?22K`+V1nwQ
zFUJAXmu%00^OP=Q%>wYSiUwDvRyJ*p(g<y$rPBu{WWy`N|Jh#|eVUk!h{0Z64$WRN
zea?XVD9L$Ji!!i}yFBwnTFlimjq4SBhsyE~`$=QM<%nPgNZdU~BS!=s4NNpk-nbE_
z$q<?Q?zM%Xm%}U0$HDGUI3C20fVc%@MLc3F=j=67TV8a+Ejg)hh;BvQ(3HB6TcVDv
zIze+o)cuQVT!!EPjdANS;(l$(u`p6$A7VzRT12775@X5j+q|(KN%<afOVlwhI2EiY
zlp(i7T{s6s-KJO<rhV(NFkI;Qye(mMAX7?u4>gt;1e*!i>R&kLT91VWg?gl`uz5-E
zY;}IGdtd3{!qlz1v(;4|TPXIFJfy&beub31J^?7CkLlX++HyNs777;eg3G$VLk)#A
z^ctIZa8VZ0&>#_o)`%!HMMNbJc%`}{1a4Op_UB|_hfWsu=wzYmP8K@uWZ@rfV~31v
zXoiSFD?}6;A)?R*5rrm*C}n{Ud~a;Q3ZLVNP3etCAlhZ~aPT>rLbA&Sl528Z$`ipP
zPsv{VD$V8}+5~O@A6JpQZE#F8HnTy*PSIsmatBBb%Z<q}VsuEv+({6;^ZEsQKxHEE
z9u?&m1XLb3UJr1Ii6#Qc3fDtuzLR0UH+CW;&IpJhq5atEqa*v>|8AGW>3<)xAN%+$
znZ7b!N+6d^5B<!Ap{Hx8>f<f6y|JIWl!SJdX#dfsD)#oOKBchBL=%B0sVE<FDi^76
znCyPetjrlay7`(){5bE@d?8p`%f27W$YGSr1@KqRny#x9;`89j^ok#8I(Lo17$SSZ
z_be<}<cMGv{+t+&g(Iehf>|NoYr-r#l~dM7IfI9J(0VLXO?)p?cZHkWr-a;+1#t~k
z(_(4ZBNSp@qJ`Kq;l-%r#xdlUs3TSkRBJql6=TzSEVMk-BVC2fOM0i*mXR`N=#`9E
zk)xp==_+hq(tCJ1k{;%#wl+NWcC+637Vg!lM+A6&@I?QC)6CR!RKHWsV7(<MdOwr0
zVWz%A>pgqDRvoyme~0FS)55Wd+to_i&0mRj?IrD&u0*?zl6J2~?QT@R9`Nr9i<KX&
zU){e)OIZmQO#6p^vwSTdh6PFW*y2_b@b|p7#nY(Jg<N<7TjIPp>YzuJoTsJh06a%!
zCHoBA#+FvQHrF>6i<k4JjZhuqw9JL!VDtXx6YO2b8SsmyY;yciz>9itnU=#UR}9Op
z7;wdT1CdP9x3#P)M`qtOBR_`h#MWa^Ov{fU`>P&XqtX!h(Ajzz@m~4@k&*e~K{A?G
z42Hw8BaP!sTAsr(dDJ2QTemX%NoT<FtciN`^ICfMkPzMS_Iqp0$*^)(I2bD$+B^Ix
zF0qtr$*(0*e!Zr)W2s9N>|$Ct8Oge~&I%{nN%6-`Hns_#ZL;|ETINBhOV+G;saJE7
z)azRA&5jqEkW~KIO30G*Uv^d)@e8#dvLPoi_|ItoSGMKCX(cTeM&q)!Cithcbnymv
znQUwme7VVXX@ajeSz8l)tIA}}0N$aZK^2+8=j*Kaj+Smm2Y%dSZB6hCCL7xX6DQY}
znQ*3t$;tW@&o!Cc=u<r3WMi9PLR_}HTu1xIZWkvoztx*RTS%p;4dmW8eqnFU3k@#$
zFoXBJ|3UM@ePjn_+?=go#?5_^7tDCL7de7k24a;aj_u>^1>&Ei+$Gbf;EY@Y0(oQ8
zs`4njJO{Muj|YryBEx5)laF{_Hf%y;1Q|UE43NQ-01mK`WYk1BFxp`g!VdGU3y5Xn
z-Q6}<uuZPAfnLAx!YPaXAvOheX@d8+K1*FssXE?NwKc(~_}K)+e0eS+4s4sv2dpo7
zd;$#{=v0uUaGCxdQ4~j(+iqQMg}d#v#6uG-@to>~+m_lwKBXs;e`qP(Nh!T>I5h}&
zUWz+e?d0?z+$AY)xB)A9@y7R6-D2<lgw$CB4r-<AnJF$g@Kpu!s2K2UzmbejI&r&N
zNxQjGy2kC=OWMU7*SK9rNxOJgyrnkWOG}w+v2sXgbW1Dvb$wh(8a_9T%9|>ba|^H~
zTF*sZuc(8m`kEx^VDU66{)Lbk@cLFBm2cb2nKEFDA@L@AMTUIJcko}+I<(TF?Z5t8
zZcX>v9-D>_E!rN7w0)pK-CSF`Q2>uqS;+;!id?$akNS<%ZczOXYbgQ0F*0JAw)mHp
z(jjoDK3bOV9`vvkcj>{g`f8IQl`h#uUp$cdRVrUCmk;WZ=it6H5aA<wa7{Z{m&WG}
zME*BDKEjU6^-Rv-$Ul{_M&*jZqMO5rZ!H$e%35-`xJ1zQ12q=JCL;Vw2}^VUA_51N
zDIvCzBU5xeiBwn+6>O}r#A<hk9z)Mmdz>uny6jGVs7nU@!D*qgTo`K0g`sJmSJST1
z(&Z@lR+Eiwf_X`h+i8H`HC|g2JVeLOZLq-WnQWIPcuSM*+6324Hm(Ui(`54PYQ-0r
zY-|(EE2y1);0rZboNwScCL7xX`{CK8Nkl(l!?Q~he4xqNn&8Z2W1C<<w7WFJ!EpA4
zWAT*wv%A^W)&x&b+3@_P?&x7(AKgTBba3eE(dIcGwY0*qb=6=FNvqh#_yX|LI@aWk
z8(%Pa<9q{?BW?o?CP&-`8cdG3cjAM|k%5)nEnmooft5W<a$~&Z25}o$+0$Zpqy|cM
z#6VI+=Ee=vsE{LrDt-NyFoaSXhanVE9J)QD;U#ph=rGGINFd6^j3s50dC4?7c+1Wk
z-9VP3ym6RQbV_cyIRIYO;!y<>HhGU25ZlCD9Os82MFc!m(@8EZFcrH>F2mT1+@|J=
z>G94gB$eL=2w7!oCN4a!4$J;=OltqgiG!1>aNAN_cy=g1*Fh2P(v;o}^<=S?mcmW$
zcj0cST-n2h<BFQYy}IO<xS<@*SJHLz2F)bBW%>gxrEB0rDjHZhy#jvJXq~`ctH`~-
zrQW1A)V{bMxk8udl-vW-+Ucs5=&FTbxkWoiL5r@(TI`D7het!akej@~)`sy<0MHPY
z1h>hfHlcMRb}l5_YANro{nfv8HE89Ayz*ZZ=68wtqO}Ya@W1qHo5dKks&;scj>VyV
zOn^-jRe|G{(?#ttmCED>@;&jQQ);JpBJkYhG*Y|D6M^4aj!5kuPXzvQIbzD+?ajFw
za97jS0ODbhbJXZTK8Fs~|6J8>Xu7H&S4a>fDK45>EIv(S_$|lI;TSSpm1DCx_F>%)
ztjwMe_gmbcn)#)F?-%#Wu{HOP`{me9`=|PSQQa0Bulz6@U$DqWvmZ4?Pt;}SYpBAm
z7i(BowXZzZfft*o3cOTBMLtsdswbw@zib0p172dS8bA~lc|y&rkMd+I)iFU!@pNj+
zQ#haZ+^bXE1$rlIsNEc^1NSyj75G^d6;Yw~TTcZ3b2%cl1NF|9%zI!}MTN#NsIhf5
ztfTWHg4DiZrqqC~J;Y0Q+(Ua=5A98Q;J&Nel>)Z*5Wn-3hJ;2&Zj)5X-=^lbaA%&E
z$Y(eNSM*i~CAiybln?Q@79UIL<t5>#>Af{MGXQ^UqAKt?6&2%0jTg(wKm*s)SzJEQ
zai=vpMQ1V4)CSt#p$2U2As*<shjx14UE*?+8Avy-)AlB{_s#!yAe~CvFnMV;K~0qb
zIy5!#n<%G+JM&A4!Gv?V*LzG#?^l&`ujf9N(z`@CL;TvjL2B8Uq=|I1mXajETU1m&
z&@?>N8Xf~g!GOxKKy;0)yuG6?R7>}LYtTDu@3>KPg;d$H7=S&s6qA5QY*ieRbOg>&
zQDG&upLrti(dCHLKD)JP1b$UTg+^)*Y-2>=PgPVNAlx{@+^7Lt8^#Gv!$YlMJFse^
zPT*B0>caW|H0Qf;bC|i=b-Tj*ylAXC@?G;WngbZMpLN#(^cFN?3mRB3$hvC)G0NRN
zz^Wg38W2O>MJtw`VU{+4{VH<z9l(rK$$kxo4lsv0fvv+6|IS}c8%(z-cjGn<OCBp4
zrR*_UIx9b=zLI$E?g;5dJe;gZJpX@dwcv6sUHrfdh6@&EecSpR+XRy%j>iyfrS`Or
zhY$W(3qDbGJa1Kjc2=8+lB|`LixcZ#XtT^}%=^9tH~J>pE!x9Rv@99hkRmr04vH)#
z`!=$Si@G8pJ1J!q`5boaR!yqAS<4K_kSa5b4ho@_8b&&h3M<+VFg$-%Q&z+ssS|`b
zB;2;t&{XvM;s<CcYcTMq_I>Ow;NvPP7D8$#`e#GKIG}!_sjmTP<#d&-joP4Q4cmd+
zm|YFvt}S-8H?eCK{f3Do&S?r4c+vX`_w)~VPg8iC7yVe_zq}~r<Dq712N1g?;W6rC
zW<eFBp70_dcDk8|p}Uz0RUo#z$&K+p^EBWuRpizp@cK4r)s#b@GKV^WKeO0(198la
zW2eQQ(Jfga+f*%Y7;wgeeZYFr`+;`pXkb6Gy#$dcIU0Cd3q>!mEMkPhH4S5dvA<EH
z9S7`<ortmTwipZc#!g&0V<-M^jU}4SSnvxrm>odum&Iw;*?2&RU0bmCpkrk`$o2hi
zefU93z`+<Sci=Ji>6U<ly}3OrW3FiX-x|w0<UZm6?_^V@0rd7~*w1p{T4L-%T@RcL
zOiH^CN5DRp$Jy-nxjZhJ%cMkWdi>MU!%SoJ%QGRvTC8z2@L-#G+5a@Od#XV_TFOam
z@db(f1)NjOi7u?0X=`h=(;cJ(G+fJ7DrdQqKGhL6ei?9!<(c7HfkJ5Vm9#s~jz(b(
zwP-!FECZ4Za=Hk0(+Wzt?yBlM+H|)AyHqq>zQ4Ts2l5wx8J5;irH{K}`(dG2b__ro
zmOLu8hGqomQ1S($kW%g<-(%!-x1x;@+{u=X9bsH|*VACPmZEONmlJ6=Sve2esk07z
z@gs#|SxbN~tEkv3QM*W=_!nYm3hMvM)YpKtD&H&7@b}iR9r#xhbpr3u?=Z+Jy=)ql
zV_S@EZ&I6~(ws^KPn<37O==tKcinO-l~1U%1(n)lmF83`tscgA<nZtbbEgA{Tar+~
zwbet{ZAX(Du1a!-{)q@bhN>S$TWUBY#L$b9T*ul4W^E@BBgFT`rNQqk3;yD1Wx?+(
z3;yD1*ovXflg=hJ;+-2nr8W5Rb?|W-PHcAzJ(x&}y64QuhkV*RXXae(6XdyR_i5#6
zE#)bt*9g4Nj_0P0(F)e*-C*?@t;}#T?XF)~#z1*u|H8B93?4cA68S%B-5s|bP#LvO
zldxiOIg5zmLOCmRpqv$YRL%-rEN7*BK3;uav(i7{h^^#(C|e8|yY<*Dn|tcG5EF^!
zC1;09uF|AEOh?^~HVsZz1x^Mggzid(NkqULFVz2l>Scf&XQ=AkMoYP1yG<b@BO<gO
zW=YcsmEWz#|Ji0<#-c#Riqo^s#vzQ)g`xGikj!I5a$(r*54F4JwUm>{q|`|S&bww}
z4;?Qv_oH*eC-e}8ukPlXywak0ZF*==$SyyV9-?VNx{NAx9<f!fdh@YcC$xv{%C(=Y
z+Aq^mV$!Bh+C(|=vU11+;eIB?WynYn;Vw(XnvB_BGe)=%rnue8xmip1pp*uHna$j7
zIYe4~N!Oy5L*bx=9TdB(P<J5>)fUo}#?PzCYq&G|kS(STnZ0n@kj<Nj@km}vNN;Pa
zxgrX?5>eO>elr&&jLFZf;P8_P!o4sR@>y!dGiFU4_}ZAl2>Fl(__m7N`K;cgcIf6t
zEP(%y`hS@E8jw~_SA6e@hHqQLcHjpl>I9-oR)!^gzV`y5YKgV$0McGIF2G&%YoM|@
z1YWD6Vn0G{{Y?t>LImEnX(19bZtSP>OBEKasXeVyX$}0<n3mSWcB9R#7vQ!kDil(i
zr_#LdUuxy`Rw0$qHe5ZxgH%+gEPC|+3E*oMz)oOG;NOk{KVRcUc-(0QOmxKDrF|t4
zSlWkUU-v#N?YmAZcq^Nh5?_}_rkt&VMYkWR%znFX&S2?VzN|k|Myq8*5?Zq&ZfN9+
zxS^pd;`-nh2>U0uX4nj^;8Z^JSbyo5qGc|8Kr73o7`7A3bmkPA{Qqq=npouq_AoW(
zI4xylW@@kA6#2rF*HWN;HA$x1yvu+sel6~!GT-Y5ws^I;Z;WOL*)Co!?jz4XW~rY6
zN&TD`8h5v5{Ecdya}<n0a(5NT<aRVL<KgyZU<{U~%yS0AH3j2>(12L$XrZzE`r*H9
znr19&Ez@*vf7tFf${(msx-)d@%nxTh8?7!psA%9zKGUD0V@8~0=j0|{Vs8_&<;44g
z`1jy1(j2@|OW8R&ow9RsMSABHwky|uhiZLFONq&XixRgaKC0dwq@{32d?mqsUODe-
zDOoqGKOB&lB)@|5VWg6q8Fcc2cGmJ<RYYryDfG&7Ilwhl)WQz?M)7c^uI5g=Zqwu5
z`-l*I@;qp&JzbU9K1o%xhO8*4tS=8}8{uA^8Z72khi0pAllv$*XL)XCN^iKhuShSG
zd8DpJ!d;r0aI9Q=dG59;8|LZLAq(s&kved;elt<-Y67oNkvr$to76tGdNEifw?BWP
zYM<3o%-${a1kDgt&I=jjYydn~4-J=>C+Z47=RYwkGvFgJn{QBhQ?oF^=zgTOcFQGr
z6O)Z?g10x>E=}<6Cfl_MKF(z0EMnK0tgVS@Lp6$S(Fd<@vR#_s?M=386O3E#lZVi+
zPiSA*Aw#f1>cOO&mHVic!kv)fP8w45be)!RKN+}>K0zc20j#R1$Q)`v^F-j|%Mn9o
z==4_Wv<A#fR}YYGT&J}rHF_vnK`vLdcWWvB4@{-&!^-)cHwE~66ZM1+#I5RKtHG7i
zmQ|u*T&6ll4=q%RY4guboH2G%&fZ#<o%usf$>gQ^tExsQ#PDbfcJzryNGa<)<dk$C
zz7eHNO~@%xbBfwNOG^pc(p1=ZnaZ~6oNz~_Mj!4g7MprF)T^kP7IoXE9tEAH+`D|&
z6H?q8wkUeKQ%jk6z-LWV1wN;uV&YMI)f0hBO;iWIv0U5Gzdz|wdXne^>E{2w(*@fU
zW~{$$QHt}xaXTQY0zaps!VYRX?`T9|Lq!FV+Rr@^_?zX3)ZX<(;Cssvsr_On>l*kc
z6%}1md&!7(;OaXUZ3|+7{eJ?pwgsjJJkA2s1tb(sSFK5n&Sg6eTxNFEfY?#8X<t`6
z|A>}llNJuc)-r-LE1Ac8tH!g;z32oE<&c)n!F7|3ZGw+6*)C1+$tK&i38u@klj}9g
zZ)zz^#$%~Rw%}f`TyfkFUxBvUt|$-CQq;}7WKb@PP6%+G*}iBa!|{O*G+A9TLUF5V
z+$vhrzpeJ%tEFtsfG?S-0esU$8E{uKvH?8GL>bV#(uj?UJ~Y6BpZf0JQn;?yT?EJf
zCjiGQResuYdNQ_<%JLXR6I7906h1hkNsX2zn~Yy*gFk60!Sv=8D5Qw)yZa(5_fao<
zwUlgGn97z%l|zVyJLb|vX04%17ilEi<n_+gA646Jjj6JF&hU%kxe8fDWr72rT5g>T
z196S2|4%K&l({Lh>6gw{WcHofE4>SMVM=dBUE4}a;qH?9`bWqu8GaVqZ+dm(Q=_&>
zIn0I?xx{D@2H|ddSz?4aZ@sBu5bo5J`)lbLU^gv=TS?jbE#*Aqxk<g8VFv1HP4r%v
zS~_nSQ6$DfEoJEh9%R2kSOp%eqT)nJ?Wdj?W*O?AGxas#C#_Wjh{EFBNzJQ|7OKZp
zEkA%Lp3YBw-2-)}XurZu&b@1t!_O58cWFv*oBBLmONk)xD<-M}hYl=caw#&ur%7#X
zle(*aYWt{E<}~n1Bf93Q-ip|i8m6FAZgI`&r?QK6Py^CI&NIadV*TytA7QF`f%M`=
zv)!E9(TMFp`Yd^H<a+J-MlIdx0zAw#HNx<eJQzPkHDIuu8-N%pK3{FI8E4uvAa>?F
zRc8gtu(<5R28U#jfd$g6$P3e|;CovBMoY=Z2UFKiI}a#GnU=zBJ14PP-K3l!c<!VW
z7tSM|yEJ735oKJ&h6ZmORu`-|Rs%gtOW~fB;@+T~AKBp4f$J15R%B-e+(1ReYDH})
zBi4a>BgVBgvlPTV*64A4Q`7^bk75C%wzm;$K;L6@A0zIuogUXVMGfG3DjHOo(buFx
z$HmN}Hr`sd1HBp1()y%^_%9af47jE#sve^7bT0yW-B}paU#rf=raS6BrbK~)f>|=7
zfnIU6;U*ebF6lNmmGW?SS&DF%rMP3%Nxh1eT&e?gt5GTPFbu{l4c+w?!a8uCiK@W6
zR8;7q_D4?))k9gJ6!BsFxdo2SAB&aqim9su#rXVB-o)TeJX)Kmx6aBvLmh1Q*@HG*
zUrSj5fg4*7?!uYcEuILxYdIn{Oc9M?2x2?hv4b}n$;=1Rb1`|SeaGzR0@8Cqq~`62
z){?QRW2Y5H4Hn&qX+Zi|zDLxRtX}9MbP^n3tFBs;n%5OY@y}}g5-r^c4m@C$BIa`5
z1+J<h`ALWY%{8?03C{x_*2)V<Zj$zOo|cllzfYYT;C#(<Urupx7oSA$St%~IZ=;3^
zchSj-2}C@+^YV)ip;MDp(Pds?aw7`oyPkV_%1}5@dG2>oTsW_L?w3<sIBRO!N&uQE
zE*$bmxDTedaE|bLr>0h>1-c<0Jd#AK1Nkj&$!*|NWfjX3wYRKol-qw-_3J4`%$|_?
zY6a?=o|_!L$CdM(=U$l7n{8gW)~}_UK!DGis0w^RMTLvhuGoU`L@q*ES1ID+XHuVw
z!`Z`glP-QvIbZVJxhcJEmloz7pryS2=Z+r_DrBwyLtgpof5u!=v^hje(RN>%wvd<5
zc5$I?f|jD~m!;YQUb(i4?(5gqQnW29(-!g)+Ab<=8>6LYd#zMkz)NVmu+X-)mZI(7
zrP=~sxwgd@6xv?bQnao4V9A(<ymD>(wHMm1)lwz_@J>x>xk?27T1CYqpw>OH&>=+N
zi6*K8Uo=rK@KqHR>Zq-Al&LF#|Btn^%-R}oXa}vTz^jfdL{5FJN$rO!mE{X~T4yVf
z+7y)v5r}(*MrwE{+b!T%T0E;Ysm-wvRDq8!N2K<oCjyC1(KR(6t7!cpRt%>+;{wER
zxvpN;M+MV`2Sj_$^P^CpSbqol835Ux0ExaczoTR<8f9bA(TvBUQ8pGG&De_$yde5T
z*VMjcA#MPPenF)6D^COx{eno1XqDUxiDT6n$Eqicm4y9E{REEq$Zc34!O3}42#@f9
z#3tuaAv*HfIUu3Qc~l6F=mQd&oJWP&2oFeLavl{QrRe(dCVf(BzLsvo3;v|dT66z1
zHa~lQq!8!Ch%<E9@T0{37E>45AV*dmtsiaeub0fS9Q;b5H_Dch#b##}qYg9O)l6Zh
z7hz|=7ZE>iR5ZDJbOHRcmM&D_H*9gtfIX@}Mq*a~$y%AJr7ZbC*7=;r@=gZkLMqpr
zpBa$g=R7LpmNO8{kmN)vB$p$CU(}f7L=tFKJ3VATaw_MA>lE(dn~Yyb`L;%Eo{t=m
z2#V^NC6Sw061i9Vey1t(vX*kAWU0c{EQ>PW+9v8;Pouh>k1mj06GJYvMd3!}<<?PQ
zd5~U#zcziH*XvZd#b!?iyxl|-575XnjG`+XC=tbTKO<)uI$<$zEu%EEKOBOGHS|yT
zApo`{@2h<zC5DOTulAKB)~kIbN%U%8i7l`8g|;x}tj8`T!J}=`bOX0GQ3Hs{^5`-K
zv$%-}$lB)ggCEdj$Vc=iT4BABU;<mxVP-!SCa3hl$g@c1`lxWO5FU_og|me`U;z^v
zuqEs>`w2TsnDBrkOWrLbLAvC^aFNS};Ydu-S+ki2VwK7+Q{*?KsUBzIU7eWNELvXt
zSFI8yRYHVVu~i&;s$v{tnTD<N1lLxn6qcx%*`Vyuy>m6$*$c?{0$T!obw8D3Rju%V
zEtBf%Xi}}Cd*bV~bc0LQ)-`LLEX)fh3vET$OxtI715qy<pHRDqLggjfBXoO3y|JR+
zSW$0i<duQL5~#RUba$LtTeFF*3!zt!g&Va*61=U-@|Sm0+0DY#v!}wWl}F`7&jS*L
zTpw}3M%lB39_2i5YJo6r3)7z+7T6)d39T4Xyq6&w{7bbdrpcX83?h$26dG1?e>806
z?)!YJxOj~^{h4-32xNI-F@48Isv9^+H;v*I@GKR{(z3LV*?)wc3cG=4`LpQKzDu;i
zTADWwSHxTxE`PZ&9EaG6UYx)@xopNbED=#?hloNeL=@T}qR@iD8ii3lKyj;RP7s@^
z7OrSc;M$WqPHxozFH)J@jP7qzc}az`0=&v`9mt$FNGpE88^mf|8%oiKC)=1%-kMKk
zoVnREUf~g~JSr!69*_aaClo_MAjIf+NP5B{$(x4Z&7BK}Wku2RfyxNfzgvO~CSES(
zgU~UNiQk`X!eqdaJ^%#N$1XcGh@JEiMvgwh@Ch{zUPc_hXbCkDNRG(_S`f`Y(G~_-
zL}7?!Sxg0(Y;x&IINsB6I2oAHmsKk?-_fw&PtmS8AG%^wyJAzL&#B0TGE*5FX9M^&
z8@fiBsj*#+&<Lk33|Q!)tj)7hYx7wez`0rqcf^f}b^H;v7E@)7V(+!SU2*hot&o$5
zu)?jFh}ed)zZ6lpyA)Blw-iz6>>@Slbqi&7hwiTK^t-IE)eD-uqs;DTRYc*tsyLtg
zR<R4h#t?-YYnk(?w0R!zfL0!RR_u|*i7?<r>7v6>V5Ca}@F43m!?q1n<Y-__lt~E0
zL>2_<?B0cn!E0FHG9a;ZKcf*kAuaLeM>;BHnTuOwm>43tcvF)!Bd3suiG@7OF65Z?
zsM>%$%roR++7RMhEyPs<;zv+tl5fi)CW*|k#i{vtooc>O%i)zT^6fH2bFK4s;H@f>
zFQi^5Uja{iAr;-Q<uT*<`<O9l#;VZ@bB^|Ro>_S+F9Jh!rCFH)ziy&-Aia%rH?W6n
zk<A(0SJ^!AO0myqbK1y*J3}JN@NK?Xb{du;deEBzd?;r7;VTe|?^Ej9_U^OX@~QHY
z3=W~S<Qt=Cp+oT@jxIMS@73#F*)OxG9%a+6n+sUKf_5{tNN;Hvx`FPArn?UG-Ps!M
zyX%d+>y5jMR_CL%8!qr=9iY{H>D74$^>U(ltH67M!c(+^e3hhfwmH}6Q+Q=7kIG!n
z0}_N>A5q61S)Ic$l&;PM86(|N2llpQ*fvYea5OL`O2B}aD2tPO=U$UKCJPmVGYeb>
zB$oN!EcBvfSje5S<+-kgk}=W@h!LXx!hXykeR5&gXD%ce=rtGmQ7#an`@RiVl^*=a
zM5```FhW+{`QJ|LY`C+;ZCl~CrMR4nSonoI`1=XH_v<(ewp_1sYC6k{!n2Ru#}7k*
zqW@BbZgjvO_`!~qXQA@4amBo?)FyFha>{*fysoBq?}fWT>SQ+QQ-vRQXeo{Xuh9!t
z*`x!%sUr7bT)jzcPrHvC?Y2?>GgDs!{?kNN;HoX^YfWlZv!e>!P<wQC)SA?`Gdrq4
zOe=`tkYU|}W=cEo2@`b!uQxk-fJDHlZ!d{QbfH9#cbobSAl=9df`F~ocSPq=blq#Z
zI)T@ksolU<Q#(scjZQ;D|Dy=kXf0h<g6FDCKHs@VA)_TCy85nJQGHn<Lsjy@5V{{U
z-HpFSx*M_XMyy*GAwS$$ve+!r3F#@F+Sli-`)snp*<Q5K5k-q}TFUYYtgA@Y$2t9r
zw6e_efbW@T;^u13N6oAZIL<^9_g6^rOP^Cz)Mu=Wz<l3}fZpqg#A=ymF(l(`_UJJm
zo9i^g9<@x%!W0#+<9p&w<v*pRTZq1ySciAeAn&B*@QUqM5$)~A0l2@3+JOhDXst@$
zg36r1rzJP5BpeOgx8?eyS$2)8yID*3t`gn-BD&oh0lXt-`*0Qr#WyN-Q04RiO)BUq
z*`Lzx25q-yh3#|SvWjeRk$V-<sp@aqlx&u9nUETnPEFUjmbP`0XRu{VeGP>qQ_1-e
zMQ5rax1NB%ZOXG)c@`=!J3nIH&sCGSbYaRRCMQdlaFg4EKk8(7MoZx?Na=;^=UWu{
zF?vewun*Sjz}1c}@<NtI;94pwPPf$lqG#EXHS}6lyTH_Ez^6?#5k>1-kJ<4G&-WtW
zn$}$xa0e4*z=nysfRjy>0k1Pr7w|q4Wxzk0NP(X^bJdIAYbn1PdgAKQoW=Bu)Eilx
zCg^jxUe$rB;y5j3WWS!;B!=Azci|0*g=`D$^gu0zyTR8I+^dzdL`#`A7pu>6EC_WV
zAsZq~&@g$S_ftyo@rv?|4(`zo+|&U-Yn^6sr&*}HY|>#ic_FT5DObm-v1EsEXI+^H
z3yxxgaFY{s(kaD|Ua6&o5cuq5n^C|QRaDF<YTKP^M4ul8Lj5;QeGPbziK6|+D%#C%
zW<j>U!lS+D9EDeS(Y*?v@FI+S$BRNEzpR$rtfj>3xVsavy<a)MO<ND;A*B>=mZA2v
zHLL^CRsIT^m$bn$Ez2?~<dm#!vLDF*Hr7&{eDFI7Co8)b-1D@QqyS!HqAuX^dlc*<
zDX4u>rE>WLJaai>(WvFWYHnB$HQ-Su%7FhcQ5E>Uikuy_CN(-O3yC(^-E_4BY2|dq
zFIbP`(?NXxX}TIfEOELzO6+R1#2|;)sE!*<R|Z^cqAt`D@RE<PcT_fUl<g3ZILdAq
z*kih*I}Ip;B4>mwI&E;U-}LAQf!@E6B6{K%%08g&@l`T)fqv^P>T`EZsiU+M?$i`_
zrgGlYQnDJj#`wZUi6L-{y$Vs0)!u~yq3Z?HRRg|kq6~PZsc!(=_Vns&O=_2_RBpoo
z?_7>ZZ4<Rlh`?5Z<Dg>jlV)8zu(e^F>%^nOe8_+e6LkV{L;?w{n@<_=920fn(9cbj
z0hgJm3%L5nil|A}0zYY@E?}35GT_%t)CHVtq6|nVOQzCQ8n?;jb2kn$QgSaEZ@i-D
zzQ6^lV6K+K<oe^x%IHswZoZ_FHO=p69`+~&C6ex+No~5|+@WoR`-K$ud&+rIOZlS4
zHDzDaz{GXb#1-j87j1-lMyme}R39Nt_5Xm50&`6kG$3<LQUmz9<$5EWzbJwt3(<km
z;_@+##*sdPvzmI!d{{01n~#JYTSGJJV_J&mcC1@vUnw~j8cF|5E?KbX_I2%6L}9CL
zJv7Z*HUg_dE_30hYR#a^83Up)+^z@j)pDK68H45wkR9~+EsHDpQ{`Qv97K~0L)h7y
z+J2<2T@scoW!Pff?!N1{@xV>>uAnS^z-?7jtku-^=q)S|VrUBL*V5@Jc?A4ei>_Le
z+ELbN4TyTzX}sPJRn41g>2_`49j(_4xSNV353lW~a%f9i@X@|4@K_V|0{cyr0k1Vt
zFYqQ6xgWX%KWwtLCip39ngO@5c=Qr(LM0;)JYHGOdGI+V+ocJ<+O%cBUzw;E_>74%
z;EN{e1-`E$=M;FDWkLpA$3(rrT}+e#8RL?tGFCK51bAp=)g^;YlgE7#G&PcP;HCTk
z0^({di0XKC#|{w3W_W-AEDH~8rGD+GrKt*M#o1~dxgaMrdLu?6LLD(G`3RQS?5hfk
zTZ7cTV(HWcoTH*amFWYTREUY3jfn<{C8F4}uGlhNJ-nk#OLV);1aG2&lPd-KBgl>h
z{;|<AAfcC*KvK`O1e1G01NyjTK;r6Jf_)xFTLP^AyG6CryIUYA?<z$W-sJ5UB20LN
zdsphLy`Lu3RGT<;;OfT|U5l&0Q7S4HX=-0Q)`+3msP8cKHQ-vNz6*%LVmYSf)kmqY
z#iXLcy|k2d3wVZ!dVx(7Wx)GP)cH}h=RmWo^9Y3}nJ5FEX`<e5D16978E}D$@>4=3
z_<L1j@`jc!S-`KTUGgM<pR7Gp-!k#8PE3Th)^6nM08Wf2e>QQhB<Q~KaaA@!OZP*I
zAI^y%<O}tboU3osE`Ft@WaP~E2j-ncU7oI16Jg;lO+D)eXSTLk5tp$bD#D$gvf*E<
zZ#B(q;dZ8MfU~{l&Ps8|DW~eW52m<ny2U!!E)(m(srwe=Br_9umWqm*N$n0#1b%lp
zBDE*>H;o1G|0ihwCzu`Ci3-p6q6-w>=tVav{HYf`tnja1^eph>Sda}=IL3=MQ@F1e
z?WeHEi+UB#@S;A2*Lu-)3jfoK?o;?jFZz?he|XV96>hM%nYy9EJ-leV!iE<esqhRh
znxb%y7hS3F`(AXn!e4vQZxp`aMQ<t`v5(ocw!)pgs7>L2c+n9GPxhiOD7?grE>(D&
z7u~M#XI}Jz!VkP?jHcQ?mWA2A3NtU7ukfS$ne}@q^jR5Qh+LqpZZ<{HDf1Dv<auvV
zMcJELtL!+1r+X2zhd$)2!aTuP5n(UJil}hF|3|?ss@pA3sjH=V2NdlVYbjTSz`Z6E
zhh$*|enLgXbf@;dCj!?zgtm2Hw|#^iT~lGiV`fARNUP%9?0sC`>ZRInP-XZBO)5_v
zhz;Gq=S`FWuRh3Fz&lNp0pB%IH*lR#(l7&VXrgXln~5^u87Arm&Nfj7yvjt~!0(zU
z11>R9H}C@!Wx#_E#?)@$aVE-upEXf8aHfee;Ll9d4SdE#8Sq6Dbp!uxq71mNB~CZF
zbc`1PXP77ho@b(N;MYu)0UuIPo)uJn<9Wb8ny4H2jEOQJsVx^R+iG?nZdu+9JkmrN
zaJq@QfnPFF27Js!-M~MXC<DG{qHf>@hcdVsa1#@C19vk~2ApZ4Zs4^h%7EW8Q8(~j
z6J@}+Ow?`gFtclb!p%(74cyyA8SnrTbpxv=%7A}2QMbXveUA$FGEp~hf{8NVXHC=%
zJjX;C@DdYs1DBX61HNUVZr~oa@?}7lwUR5~|Ijt+JT2Y+9Q-|#jctNA(51=UwE!P%
zvbH98y2-{i!JBECyS60a^_pU<R1TUhyLzhMH1UB>OhPgoPQwj4B=fa&vc-yDX^}Br
zjELifL*ZmoG?bkhKPM|j*#GZQy%%aJFZ%EY3$##A4x=o1@*N|^J8CIsQQ%G{ssax*
zQ3hm`WG{S@9zD~ufLEHR3cT4w8Sn)YRe^);e3JoJF;NxBaEtZ8HXG%(CU`GvnE`uE
zR0U2pQ3jl6qAKty6J@|(ny3nV!$cWyteuvsz#~kQ0W%X-fv1=#1Kw$(D)2!QWx$G^
zaH_yfOq2mPHBl9~zlk#7IVP$Cn<mPDH<+jj{IQ8L;0GqE0$1~=8{nokHQSn;969f}
zB?0_NJ0oO3X0qfaklE{6f`8&$0-4p)61can?5-vFC|m6_;L#?k0;icM1OCWFRp1jQ
z$_(0Eu5#w^%S>An%+#0czfxPU0*U>=1*R+mE;LaU$dV+w4BA3o9iVV^6J@~lO;iQ4
ztcflltD6fVxW`&%Ku$hlK9DugwFGlQ5*m;blJp6jZ~CjipQ*?x126D2;Gz~9nA4l|
z3FP!9eFBHunXU>PWsA40x{5gqiZUQ;yeJFT?=GF%%zmK&nf;;&$m|yukl8ORAhTas
zz)k(M1Ty=D1!VS%E@0Cd{+})cC+fst?uZdU=8hNvw7F9$n@00A<2f^nu95`aO2@s;
zQo?pfRWB+@){-pzmNp>u#MF|EE6J{sRQjK#&FwlYKlZ}|{J=zID{x7$uwVzD-(i+=
zdBD0X7v0lScfVP=F4AEUZt|}B0=-2x>=Q+ga)Azf-b7X4-&9mwpi{fWuB)TZ08qcw
z?!?uAv?{;!rXj}23-y3&Xm_q*dz0E$W<)!%wTJd-YZv#>QPx9;^{~G6&;e}iA^sl6
zHX5ycERfm03MY8c84ADbMHecZ?M1};9WNTM_GD&PHb>!gUKA$MH&nrsT1s-vN<HyP
zZ0Sk3V^Z8n+9f6kcS4FQkGbZ5t7$1o2V7l6MTUjO&pN-5%-2#H0vBFT9Fmm)_(v5L
zx~Tod6I1H1G4(azAFNdah{7U)sd@F$eW*XF+V{1T5PdK8G$)*`wO`>@^lj=<Cc`<z
za~Gua!ug`-Zky73mU8a)+$_b-Mi#-mNJ|+R;Qs3{G7aFFDk?^X+6$ftd}TQzwO!XW
zjlh4ZsL)95u=R`x>{3xdEDrnsxN)VqQ3JL%tVLr$!&%m_9eBFA)dj?3XGD9G8a<Re
z<h8ZxIM{S$z)llYA5gf!L>Z9K$@Cy(HH%^fByPe2j<yhHz#~mm^^q$OMjfUW$mi?x
z`-g<ACpAbz&CZFl70&mfu+`bx>KZL&O1%2LK{+cLjs?p3r<U^FyHH(B>H08A>9bf^
zPVmL7c~>ON8m1xNPD|lVO>r5f6FfKhto-T9xlc=(eJ?6}+lzn<EnhcaYWQ)jhmoLz
zD^#1?;)Cz89<sR8EL84VhT1WEk!q5#bk0eHa7#_T{k0TsCB>EZH{^fgwUn>`k2X;i
zc&Cbrm4Vub(+V9jC4k4DUWm$<khs$toubn<tTm}UZl=_Ltv$qRP258}J=|`(8bG=!
z)*5O*Gh#cCPD?)NCPdS%RR+AxL>8Yh7P1Vumx-#tP7`Ioff`teHE>H4Wk7FdwHOEg
zAEPc-qh!KP81gyo=sqoT;Tu|cuT@yp&U&@XnO=K=&R5;^QT8*CA!mrQV~h9!#*kMM
zdIpT-lYF0+I=R1~rnPX}ZcEG~hJoma-sJLfS`a~*M`8R#6h==(VeC-!RaNK~1Mod6
zlZ(e#c@`=!T}D*HA}z(G1u6G;&>=oVOW{sUaVP0g^HVLwG2kCmR4fJ5hKwp47b0*q
z6_u|U^f1$UI0pCw6CDern~{~bcN|vqv~=IM2EDWPjvF;O_M&eF#FPP*V}MvyrYRh|
zS=$tng<6Vpz=O8K-v;nMR8;s&ZT1dEOsRj})YpK=Z%eBlAPSxOT9ew#W=9Y3bK4hf
z3nI0qO684bz(<xNQXBJ8>l*kY6%`t({oWIS&n!oz)?p#&0rse<&`9kPPXrRaf|!cn
zOBTU);F~7u1b)MU+65$xPJMexP`k>4+TM(V+Eo_R_GTQ^uCk!EH{+mol?AoE83(ni
zEU4|xIH+A^L5=SckoAAD2zCH#7Qrf!yUP-=3cO!MBP!F~x7Lg2(&g(`n>RVa@71~`
zjaXi830egb(}9(-7ReEobyXk{b)RO%ajeD>tH!aZrc&##7KKh=Yfg4XJ3D^dnG}-`
zB#9NtBqF@VMG?ih(j9x#9edLqd($0y^NbGM+ctn1aBCYtOZJKlMF!l%L|wqlL>UmT
z<Z=$j=6MznM}@`E;i!nhv=>pB;35hgyj&e4>Mpauc)ChuoO}M8>bu%xmC9~TOm$<8
zhq4(nTvIXb;fsnxe^ea$q~g#o6^Fh(sVTUl8tkS6xMs38TfR<F4;&9X$7F3yFs?Zs
z?%`MKl*1_}W1#TJ$-<O$vM?u|EcELs_3JGyWkWLIn#A6XUoppD**2c3E`3GIlAYv@
z8l8u<bX%TO4`?Qn$}A2!a;<-7{F;q_Xm4ba^g7}j3BOng7p0w8Q)dwKPSnj$Il)jJ
zuB)VQlUv*)lrzUx)H<X3Coc+fv}B8mqAzGGH}}Aoo2D#Qo`uTGwz!x_=7~#_Q_&ou
zw^EPRQj7&2KD9_cxzGZhsv>vtuQ#ckf0hw}SE#5UQv1R*BLZits31~1-xGm9T8>EV
z&>5x?c!Y`yjnt-kBJfMg5vk4g#6q?IPpnS0Sk-_FP1Fq}I?j%o#p+QDYBz96OHgY~
zYWrJIyMctU&`52N#i|=fbP6K1X=f9wZs0FeR1m4X?1{kM=|$UuNNu`G<x~v3U^ybS
z11zZBKnAAJNX<vT+sC~?ME@iUbvy9rGx4lJ)UUHRH{yskh~2Xm<OcASmdtH$Qrq5w
z+&Eg{WG@1ezRoAvpeo@S3uhyaa3hXogQ)%4!rMp%<5&wu2k;CNO$5#}Q5W!T6J<c6
zC^s~g^$|ysG#3)dbu>n~kP2DqRwUwkhsC!G_?y<YRQ{kscLoVVo_9jfiEu6?z<<#|
z=Rzv$Xw=;n7yL<+jctM%oxE{4KDjU)p<Kuqk<Pg=%;H>_8oE#02y_C;erXr~Zp#tM
ze@{ynXYi^v0Wx6AXwK>nN7J=sFw4emD~+h*f&CQ7N=9Q=Kcm6g;@X1Gw<(YTTjD;e
zKa9I;8;0G<!l*l07<4BKV}7s3=Vv}nz)#ph(M2RaZCRTENoctjKpgh7`JVxai?B#k
zq9P(Z##s@C%d3dOg;Yf37-u*Ug$|ygjty6DWMAxlr-kb3Cf?17sp7k`@&7XQU&T0#
zcPb7&RB`B~ibGFT9D1wb&|?*cUf-ls;b3*o4LzyOh&dT+4*^`+v|-A<*)rw8%rCjJ
zqD$6Fr+!7VYonIg1t!R%jyMxw5s^jAC)Wd*fD4VxBG``he>sha$Ga`@0J9VgsB{1c
zkt}By{<oK)F)cv?`yjQ4LCX7BnK0$V|E~hYUeFB$n5f96>A#ye?C+d9u#ZW17!&DX
zWg;T9|F`3@p6>tl(NeBRCfuI5zH8Uynxds}H%M{&l`~sQxm01^-(ZV)bfan=T`Whj
zXjW$MQb$DF`4a_jM-%DW4*hC`LMU>PJ1@S-<)}}9F0Z0MA*J}{dC2;uE_bXklG4li
zK8#eZYN|T*buA^>Q&YiyUOAjpggY<A9jPYnuBC8?-H{k@mQCC$yNwWX$|HQ0t{LC3
zQ*%4;S``iVV;x3})=(vxLJDgw^F`cB-Yj@c_dMfl7hmUWH`9y4GhNBe0u-&Tt=#Mf
zZ*H2hSa}vIcP&GgFpu+uxb&ISNR1d%wC>eXj0OIF^Wu=)QUWekk-HkIH>r)-%7_K<
z|51PD7$`O1mYX4}0vj#rYfWnBnjKXjJr`G+)CO!}8i9|fs31}swxtn)_)rjw!~Q>R
zd~pm7+krDo)Cv5H8QcrRM5n&JByhdHuL9BI38uaSNH_9q3-ESjIrSY)YQM3z8IVX1
zs`M|dP$AH==*;Y=GQ*t6fJ8rUOyz#%<&ANZ@XKeqKw_WssJvk#mH`=%!j+LaQmbi-
z<*kbd`TxY~^X6|SkYSZ}??vnBTgoR6ZZ3fdgEU;$SK{lkJ{-GBeaM+jt=#1uD{&!S
z+V|7RaH5|Sz$qr02%Ki3b|Cg{=6?2g&R`ix`R9=QE=gXIa))gPR7S1S482*2Ciwbs
zbE^vchKg1~OBjijXyOOCKrg80Z(0O0AQ6yFbLgRnFt=_VWI#VwU08UKEf8J6P7`H7
zl2X)%b~e?%o3zxAS9aIQvZt1-RCaftx=_UhWruF4IPB|)F@@wTEoIWNF0`coh5cc>
zcID61Qce?duNsuIqEpI6%K3(ta!z2vRxB`$ylu<B4)vbAl@$v}-pcdcz)O|A&4;FN
z;<t9_4n^fV3Xaav?!*G%)h6lyGLZR?<;)q}?>@^-{a6l~X;Z#GBPAZu&Lr$3u1<t~
zq~-~EBit;-C0lOSHf}gm+;Bb%cVTMikJA}5Rm<U(>HRtYi2C)Agc3M2X163p4pDrD
zQuFtvQ$bJ3`_gH5wzgZf(l75xm*3`=ccmlq&Ff*e;T#v=lN-J%n%nnTj@Oqde9wyp
z>dDEk2T`Xex>8%YQw{hY)0D-^vru{2h7a==sU~r0*w+W;jz=^327SEb9ed2A4t#m%
zB33fFfp4kEosH{FYA5b$#4x(3Ut>ooHQ;JHA?gB7X;EKmQk!LVbOGtv*-<k)=Cqkc
z;4f5E5UDlB8WH#_6%|BkTkm2-;L$27h}5QdB5)^-N<pMH(PGsFBzy(2=+OTsg2OC=
z?Z9<R)CnY#asv@a7@hj|lA!jK1-0FRx{n352Y9ZDsz4%JbV7~biZwtYTM(%cTp<F9
zY(b><X^V3eNMs8lHG(S|fvs_lpYS2h@7YA?01{j|UjYfO+*tt<=V5M(IA`$3Mq8{e
zwgm155_4yCN0ZuPO7tp7^c^hZ-C=5bavb(<!hW}=w<pJ;?+!!n$ze|WBXPXDiTAOZ
z>YnVgx<JHyfKOx~gC*POCDBg(X5|xlw+Mn625I<MUl`b2I9g-5pO&sQ_&}A(HO+wL
zr?f)E<t2+iLY*rl$X98QbKwnIA@Z^f3*(#f!qDczFod}<jNZ<=fZpU6QsAv7Y6m{7
zqKzuEUzPNnQ516Kp5cDnP_G3b5k%RNJF>j;Q~o(5)V$)GgdtvuCSed|!%PUT)u^q6
zmN1$t(IkxZN;C;aVkMe{<8-)Y>yeh_8IU;3ji@k=B4YCIp?N4GAR){Xg9=kxcz@S8
zvTlk9$hujYeZpf#A8Kc+49JWYR_Np^x^%5=Yh4EPPWHx5_A>LBY_g($LH#|`{LX;5
zDlAf_UtN_62J~~Tmn_-OP8=DKfXK845*tw;=8CYwTqt?z>UVUOJ))&tqq+B()HNy-
zwUi4zC#Fh-lueZGHg>Kg4EghVrdrGA6{n|`)ib`(dr{ks(sr^voS%AlXjA2kwLThT
z*<y=(bfLGWdVi{x?v|{q7{kVF9qm6u>Y&PL10&Kos^_u~*B4Ste_%BxofiKDD8`>=
zo!SppA)2O#B=vxOCTa)Ln_M$KCQE4Fimn;ylr|EMAyGI8!!>5vbi#{>RbMW_fTX6b
zV5KL3#30e(RodaI757tAvlsWtB^ENeDY-(UITnahak!Z=FIpdiI<HM!w2ak>!L*VL
zzB<JXCzEiOrnsywoZW@HL5lmdE>3T2IlMBNkC+gBpodm3eyL1<RV<vwboK{j7q<zh
zp`&E2SzRaKC@otoK(v+3(RSc=Cdz<2s%T`T?_s&0vBCr$tX$fZ*u~0uhc3Ai#pD(B
zJmtJ?%X588J@0I5=bw7K@J3hEDEg%;a+^Bv-%NQHE6+mZWmnXgx1QQ0E@jsxl9Ti2
z5uUpwwY<*SpvZ<rTFS>Qz#n|1I3(v<;QcCc7Y+3$wE-I&F-)!ZRqZAlLdk$LOw@I!
z!e5yv1J=xl9^iZvb?vrMp|+-_EQ7#46LsCK@G%o*z-LX=1spuuOa+cJQ4er}i8A0B
zCh7ssF;ND**+gByCry+AUolaSL5p%%7-d4bxyDZ>uzcB>5dK!B@+-xa=o`>u^`IY(
zI&to@IM;!bRKyo{vF$xGH<}i7kZDIQxxuHY%nh4rrY8}F%FCw3V%4y%xAl0n<s@$t
zkYO3(b_4SBW`9u%J(YYgN(Udbm=E5<I?duvvru`N`Ivo(YLZ#KIQ5fd#Qq%5P5u;`
z%}h;i(L08hv@kK46|Kj@#9B++GtY#Z{H3`r<(}pHO#b}ZWy)!>VN%NP)pd}Vd16CS
zF9XcX5^i$ghr>9nh}(8*5t()^B~gG6o2UVNR7J%qN$qV<48x52ZllzIXPBrOwmLu$
z9j~Q0Fe3HM(KD5Ed0HKmvz0QqGG$q%N$oOgSO=o3Acod`TN`{&%d+$jIVIl}A$qT=
z8gVlDn`}3Hp)lehEoGE|V^1j#Ne{qrDk?^aT9+q=9-;mhroIMz-bB$TeP0hft))1y
zH1(r$FDmDQv^prSD5VHKwSQZ~IuKpuqqL5?ySbKSqZD#VMv3UvRn3Y<X~D@wVBgSE
zMhSSlnco1OXnwjK2emn#7>*L^-#7I&;Cj|78l`8IJy<E?z`=JXwpZ&bXXms!C>trI
z2tKu)tYIC9uJTbjKpS*uSvE=`r(~3f-leK$MWa;FfNW-AtOMtmr~$l+@a6kLY7cv2
zI7+DB(I_?GK_-euX&pT@PD^oMr_?ANteoDoIw*%Jr3gN?9&1<!qN{wAPSXbGYFRc)
zA*W=Nh~E9GW<{g4-$_MakI_=*67W|hY5<>BQL*Atd(RWYQ9}L6MyUbMH&HZ7RXudN
zmg2yu)F^#fInA^>C>JZG2tKvztzjLAuJTd(zBc%YmSv+9a!N*t=)I$ARy0bJKVJlP
zww5wVz`<sI12|Mg#VAo5=ZWDcq5e8kUjzQYMA0anr-yFTQXF`nEn?WiJ<9oIS{;=C
zR7w$iYEN0iIuKpuqx7sccvH)=Q3^RFqeS#}T!~Sdq+U<aQbq~*k%5IwZdk`ZK~KA{
zSi2gKc5W!+x941}4X(9@8E~rsg-kBJfgd$d27JLpRp6^8%GOk)*V9t2sI((1exm3F
zErnvx6!i>HILbtwKrE5ZI1kXHoyN+5-l!hyTEPWcVu>4P@JQ3twZ1~HsVj7^EJK#!
zmo}FipL==YtUgUS4|wk46!#$I;GpR3oR!eqreCApS4&AN;AtkR0#8>_G5M)Y_e9`K
z6V-v|EY~)S^yl>`JxOW->E{2w(;M_z{AF5-^T5Z?DJ+y(3;d0W3OlH6dM?B|@J<so
zfDfCf4t(rOG;9DDnWzptSKonHvU<eU*RcLcv%U+6y~Sjwwt?AI17fm#=m^AQxpfW1
zWMKhcHS23YZ+%xd;EOco&ui(DpVRO&YW_P~%CQ?c7TP4o-kPV$jU~TSOIme?{qLzC
znh*D(!nb|SV`RF9tENwxZ(Z*z9Bv~M`4;PL#JU@??nbOT`sir#%)+?YTFRmb^saQ%
z-9j7R4EUCbx`FGO!x_-Wpc^|kwit8+_cBoi^pWb0z3DD&_x~~dO7%u=4KAA=-345z
zWA%oX;xll5f1ym)3*bX0%78;uy|935m?#5YY@#ahd)<OnC0IT((WV8Xj_?-zMB$5G
zR2c04lP%rq-QdcqAB|su7P87tC~)>MO|xgtXi`JJoDF^F1-eEX+@z%h7<jvi<cA&S
z4NSFzB*S-W{H>qi>igCfgLdHdCaQ(HX*E_UqWk^6X2|-u9zE0)wSO2z6uliQ>QDtI
zn4)Mu5>iCbHL<r_%q$EzP)oN6eK&FTy<Ry>w3HJNvu$0QT6G|^Zb;>{{Qht}zoOgQ
zba20R;Ian%taX~joo1o(vV6mA79MeR!kr0MN9!81r<TH9nhFb!vX%%pd7qTiR=dsA
z8qGQ_gi&(QYBz1=yaRhp8Jeo5DN2flYB*0zv2{u6%R`gY_w#)Wb{RCN;{KZX|CWCt
zw`A5{r)qxc)m@zmKO9C{%$$@8|H<m@Wm*b%Op42?_ASqymvVm{J!5XBrRYumuHwnc
znc=y~-&NdGIh`xP9Wkni@qSv$j00Y4qAKte6%|`PYP+mo=#aAs@DlwXu^_e#V-Dj^
zYjldvVp~RSnVC`pw)PNTtYPr|)-VIUXd<(Af;o@@k26sf_$3o%!0qj0*edXF6J<b5
zmH32_z^I4RD7j>v5S{Li(t~GfDS2|koWwN2*srOv!c8s}H!9~<bF99;TEC@vQ3v86
zA10oylrMW~=p7yWR6B613iw6qG>bdULgi(vEoQHw2DoXN`c$f>oKrn_K`Mk})D3+I
zpdwQOc(@)aPiq?Pqb#{R0Jb)avz3MiX+!a3YU*Nk@~#ExZY{++;P`RHA;~k~J}N2<
zruN=$M${gyh}G9nzo)5h08v=XR%*u>u?9TZL=E8AO;iJVyBcPYg5RmT%gpTzxR)vF
zLeV@EWxyv*)CGLiL>cfJi%b{rJ`-g?Z)bF=GdCC>_swPEa<KO2Walf!;<BF`#=-Yg
zr|hpvUW$%Z;ws5=b?Q+QJpVv@U(xEYuKL|&{@1^(aE=!Ni58#LzoL|PJvAIsI@nby
zZjOVGv}Re{X%;FkTOBZahH4U5+pbS6nhz`I8P8pq3gOIS3qQW6rOZFz^iLOu<Y7?Y
zIVvjVAGLpbB5=(UXj=!KVs~Mq%f#4-8b+Wnzxhe!Bc{CuM0@E?(toIPBaSPqasdYK
zq_QEEVVk)xA5tId<(oS>^+jHu^S^t1q4Q}i(L??BUY_frzR1gSJp}U}4JLXD?f(Ba
z17Gr=-CR$N+EmMdl`|^f9aSce^jC)9-5x5G`#bk3e7vPCcyVjne`)1wYPs}$K@+pT
zYdO#b#1m%>m=Vm|QrS|6Gk1l`XT9)(=02Y(0<hs{i!yIcWn&YHgHLGX+|RWzsa)xW
zA2g}V^}-99_i5$jR^hu^IZiV;@7<3`fygJqF4x#VAMD1LG={foDJ<XzCTfsVk7}fa
z1^lGNxk2b}G*Jd5+;UrSvc{1RifCC7O;JxQFVOJGITuJorQwkph!eGxhCo6r4GAc*
zl!m~Cz9Ep{O2dsczI)nAkpT(4us)+lneieD$KnqfO44^^<&0r-2FNp4<F`CxXbv`u
zF36bIWH(pggpy=M9_A@>;!Ti|6Gmc)JWNC6#D$<B4}E2A!){psuk9y+CTeQrLh=Pq
zav^Roez_2vh<Yvz<DLscYYx)LpP;3jre@wWC}$-jzC^iYdj>`Y&Y;Q}@uSm_817+}
z88aWQ4B29Q)aAZ9p$^kh%$t8p!aTT#+9a%p-V$cka;Glk?Mtd=yv^1+Gi;7cx;pSW
z6%DD#qwVsnU_7THW9VR*cHmBO;9afLEbcT5m6z>5Fq`#9T%DSV+-Yh&T{&**p(B!#
zX(rs{1s;h@&I<Rb)Q84!KBdc_a7WBdj5JgBQqNtQ8b&ztJa@#+3B7QB;kmD+?1i(`
zbH}IjzN4HCPAn2qe4CWw!r9AnXQjAsIz9KDl)Z4y_S~esGnMmg&rRA3=Mm3M+WQOT
z4Ab+O#9@BQx6PHqX;8S!Qr!8<{e#!LUn+lh&|D|yW&h0H;dMLN)qyPP+;j-nRB0Wq
zF?4X4cH|}}_!yPRc{uJg3ze5mYt|XgP7;<escHQ??d@GHg*)rkMC!Mx@0pguU6|r>
z>fx*-+zF}a2Ztp~xcjB_vgsf+!c8tM49u#!xe)Hs)N%obGqZ4SNOAX9eLY@pGQN{m
zE5`n7T1qki4;)z>D!)+^H>`yX<zyYdWoPJGh1O4wC`#E${ZQfGyr?+l{}0eZP-T1f
z_S(haRn<%pd47Sm*H+U^aSyOxMT07R{Y@%fdrz#rC)7ScRa|J=doNMw74^o7dP7Cc
zpp}g6qp2TPgL|iSS_gjLL>*xdnA)Qh>EWlT9^eoZ;Xa<?5@7rl?tHkR<E_U+`_R*7
zE<{UGsBTE*&1)Vk7J}upk%aSBFT}#@ckki&t=1Q>vAq0wt#7vG^75^<zOm*jdPq|2
zK~5TeOw$qha>hv|v@f3|p>eq|v@92fX63@rrd${rlnYbVEVJp~OAieVK*^WQ@PSrt
zkq3W8<1C*o;nj0q1YD}3eEL~MheDbTQn-qiIgiQ~p0};S%e?3og|}-tu(D?p%-~B8
zp_|SJT)tjiA6OaR1b^FPZB6h33sDb{bQxILtI4p8(Ur=n1AkIwVhOOzXnQrm7n^K+
z6MVOC8ji7O`>+vi9V_ODq{iYtMr(-;jR>hQMDo>E;5#;|8IbVi`byGwao>ufPU!O1
z#Exl}3qyBv;eW?rl2aNkHHSZ;iINMc9Bm2J4kX8NUYKRF8w!&w=dH+L(kLfV`H|&R
zJMf<>8tSZeKV?U7NTyr?71GJrVJ_utlIea+F!>N)@e`I{Rp5WANWMkf-=y+_=Y=C<
zov+O3?4+4A&N6SxfF_mkmS&BzSe8xCmFcrg*E#CX1zO5GRNO24B;ZJhnuIWZlYE#b
zZl;klS6Djrpo3^T8klVVpU>kZmeviQ)=T=RV55Aj25gzMOZrMC?UI$9v`hNP%ORF6
z@*Wu~Ygo2qKr&OpxulQEOwR)nmYf%+S}t6fA?FOmswX>7);xwuMBywJQCY5Vs$kI)
z8s6Vy4pf0H4lL~p9gwCgV}6+xVY|>piOoVwh?ap~ST@iL`$DJk=D5}3!@|gioEcj4
zd7Zkfy2C4HR)!3Dcig)>Hvhzurn{?_L!Z>}HMDFw6n21OMpU+#SAR8eamcv-PN#)%
zC#Se?C}*TvDcl=oC-jEHBHRnu0*Cf~QT4HC33owC?=W?rW!-HaLVY1eKHMyMK{hOA
zot&zGC@-Bu9ArSm+G|su!C?~1?zePz&T*Dn(K#kH3e1x>-BAm7LW<kaJUUxT;f}u|
zF=Dfn^SI|en9}=-a^BKX_CLV4RWw|_W1e`02d)36RJoBntVsnuvJ{8oN;^-9E{A@u
zS4zxIad=qD;W4Wg9qgl}T;l`(WTGzMVigsa{nTDJVjb9J*9_4o_;HUldi;wi>H*S6
z@dO05_l;Ns`W~ZgZro!#Jw9QI8o)&=8dRAvrAdX3of-0eXr(N(*6qOU&G7~h%W{R`
zaAvCF7*mx2e`liVaMik%Y0rRYFF8|OuL{0pirRtSHc@nAByLrUTSYOBTh+r>vOgRa
zEmJeq5ZcQm3PTi9M9-i|&lgnB409|C^*}+N=ot{{VQ7iCn>(px7|zZ*DsEv(amOmB
z!*eI4xLAIqdLVNW$ZRUV?>1&&(PFHY(hzu%i8_HDDq69wPby2CyE^ry9{O$J?svwP
zxh+wEC#k+Km_c>mOcPas=cuT#k=l1WF&tzlHz-BSek^4+&zJw+)YXCe6z2zdHmw0X
zNJWJy)DHDT;4#Y)seR6f(Rv-*QNxbityLHBKo!Ytj{!|8^x}-GHL3YNqtnQ*)n__#
zR~q1#EFRUj6mDyFMEg-FYbr$|zUbrvM}xo8Q45EahIm%^8L}p;3746*b>KyV3$hF-
z@J1CC14?bTAw~rLhl&a!wKs+u5xD8FLR1i`t!+zEwANy<W~iiF4XC>*5p@BdG`DKN
z>&&e#AdVCvqUMcY2`NmK|9@1q&uQsW0sIf^vI-oiUFOT@Dq7jg?5F|{Y~}qygGHp=
zBYNNw8nvPFH3NC8!RY22D)`v&!bWEhcwdvnKh;W{a7Z%otp37*C=)S!j9Mw&er+Fd
z35NH4*qDekSrw68qOh8J)}BFm$antcT?s=MDCZ^5U7X@pRw)9uiI!r+FH&4M`*`k`
zQ^A7M<GJUj^up=$+@n%lIM;jbDJd?Tdp-A;^Aa&ztek&%?$#;2qjhpK*(GL&e;BvT
z)`%K#oQa|jSXeN=pcLuhft2NNF7w>`Qr5uvuIFBz;==j4=Wduv_unYz-&)Fxvf_Qx
za{+0c%9MfnL{srvy)RZakLCy(*V5HMBC%D<3b<?9G8>&Y$LgV~SNG|ZIyh52_dBUU
zfOEa)-jNC{oCiF2y%ZM?i=nu`3ifWM>l*7^>oHrY6|iuwr|YC}lV@B`LgPL6<<vBX
z)9ty#Qog`B*K-G^xNvUq+-0fQ!+Fwk-$-%caK4Z@JfGrn-Z)<4EZp%ad*NK<xt~aJ
z;oRoAQy9~5+~EAebL%NCoWFVQUMcQ~jf<YzwUli?u(D}!$bA5=aJZJmCWYGSV?41y
z_WxQ{d%vmAXtkxO&w%@@NNyWl+h5npWX}VhZlccbEBw8QGT^f+8Ys61!$0hKNbQpA
z>-dF!`{+Re;`S2YOE)Q0%2!SMn_tt)W356eFQ`y9W4JzaOiSa?v|jCXx|Wh{v%Z!%
zSsksqr)w$Psj1)kcuMtcVD{9B_u&@2I*{n6p43F!YpT`72E2~-ki|W4fog7J&z|0g
zZSf%ttoUcgOo0L{K3AO)Zt@8kIJbK4?x}~vNTc^XcR^}A_)VUJw<?U1*#!KfiK@Uq
ztEiYw)OOg0w$bI%bZu~@>B@kMOw@&<r6$UN!?s3u7jOp?Wx&Tx)CGLiL>bWA8C?}%
z)YsJlna}Yz=l0Ztom$FxW$u9r`D+$d`u`ZakD9Tfu{}^Zmzc@*dlWwGML-<nA-0V)
z`rFtjL|X?sI8L>>)CYgrddT8VvrxHf>76VPX5XQj#MNb~u)M9DwbfYRUY+7jKE2R?
zjh2#{z?V%_1+H>N!7fsh+QBN7`-Q+CE=Q#Hh9?65z8o?18tbN+DK+3=)71cCPjQ(_
zjUN6V^4>dKuBvR~o|A+WYUnLuNazBFCPjtNq)3@LGjlkBR8R?um{0>GIY9v<&4d~d
zn9!t%5Tpg9ga8r+B%neBl+Z&D0+LrzzO`rFzh_O>+B*sF`(58ZAJ;{mdp-Mp>RNm4
zJ$vTN<a}VOA-6Y5Hvd{HX+1|@7R$BsqDciSlAx5A6BG)q`XXJ6`*W0<Fhg>!(#Kmh
z?{Y35UE6)?eO(u}efsrJw_3mPu8xyd5ij<?i|mNwO8><j1*OBKE_ZehZZN<>&Ld?G
zu}EBu@)-p&;82g_o?ny?+$U8-Gam-;Na>b45T8w6+=#)tXF5pIz2S8AOFqfPs4=fc
z>4bUdzJ<va0xk>SQ>N+wJ}Z?!>9CC@4&3t|;MdJpJ!XGH3SL>dH|b)^++JSumZVD(
z_=4`F-RcI;m&zx}XnVCQ=QO~5Z}U|HK5wcj5QqNMW)$2f*Tg>Zv7Mw_DJ%Y{U{%Fj
z_j>|^lU*PtwUu~)ZjB?>!HVe?$)kCT1l}Ivxou}sSA!AO?oSfUvjB%?hN7nYwxB3_
z)GMsm++<>2PF<_Y#aAVl)XSKg+sl}gQ|f%3T>p`Ds}K019$UFZ1^l~IJxb$e4sS4e
z)wJ0+n=%@<obP7Nn%q<dhe_uBhH=cv`Rq(eNuJU|*}NqZxFVg~D}i-W)qovRxo4(b
z4F)8hv(26*{v64?n~a!~Q(H<&YJ+l#McSqTen2{xAaJ&+YQTr3YSzYp#B*v}Ra3gR
zWZt~RoSfQHN>Uq?4O$|BiJp_-NYPJ_bgLQ2!$)TYyjLvu#f@$?GrHfj&0hx4Xp^3-
z=41;@gVqRopXD(W*y_I4U=-Y^ck}Y`EAv&pS#V}h;poMnS|GS6sN#(dt3Qh3cAP;)
z8(r+qaYq($3CR;$$L(Fjouba(ZXK>0v`gZ!Ho<O^`4{O&<>Pbnm9!HI4&9yzTsGg2
z$#=H+!S7kTD)2*7)qwwys(HFG_{@08!dj?z@cM?m8OWQ5E_)#Fv*mY&xA^ujUrA@6
z5W}53Kw^C1a5%`C1s-H6RDs)@ss`Las%Eno>}I^ASyR+3-jQ|L17Ef`MTY@jkt)Ag
zx9I3gW|%Y!3NilQ2#2q%S>Puvg(~oAQ`LaHCERQlgBOjLG>f-B%C`9Gz@M3F7?5`>
z@|$&#3{H{EyC}pQ_b@KrilC5(YbX%UIkzvdRTdnxF;+<xc)Y1<z!RiuwvIuFn6$31
zHlVND-c$$v+Eg9D8H;UKjGhX_xDA`=5I(blz-O9S6?nE(&FmT69C&HOq@V-E{(+?1
ztCuUfgO9m6H?had%@j)_xqpu-F5;x3&zw-eA3}CJ7QG3Q!!7hXUyUE!=7C#oz*9|C
z1)eFDKLZ#&6o|mz88N#-X7spevs(&Ae+}lqH%*nik|g1GmAHHT3H*ntI)MK)RSo#L
zRL$RlX0V9`tO2RHPxg6~-d*c$)30%+Sftr<2o;(4l2!7$j?6Z&h#kNIQhD1+>ori2
zihBt`3bTSaeS9vc$maE+0xq7Q3!-+IDC^pCid|#sz_X=tPZ`{-GJ4Xq*{m{pE|{BZ
z0U{h?lp1iDsXBloO;rOPB~^0@8B7d3U_+{wdD7n}mq@ea5Gpb+oWgVD_HxM;+|RVR
zkH`+%I{Q`u0z8~|Fzy63UMI4fVC?S-D&W0R+4?}iM`@gSTtv>R&V^bOYuR<N4m`|M
zRp3!l`BR?JNr4Fbsi~54mWZF)a;yPMW|e$s6048Rssh~3tlEKJlPb%z(qO~~1lvmO
zq<(y`O;hLjRG28SH#MsYa0{tyI#BEvxM_r>Og{0_(_Ws`f$N&83gpF~pAJTyffzFP
zXb&AaNYY(oX5H@>QgZ6UJ<!}GQ#n^_@Kal!b>O=8!g?t1NU40bjD8h}z!{4X8GRgx
zaarWS^DcK803KmhRUnbGJZcR_!F_Tw@R7<}B-yRBZPG0`)bB2xK+JOP?=Dn!*GRhg
z7*{kOaIdzClKJ?v4!s)OO)GK-_myIIdY_@hF63$gKCV{yxs2x{HLT?sreAD`;rX_p
zD!|r=m8AXpN`=zRW|%xu9;8DD8>J2$FI9dusbMY8Fs-I6w?iyq`53_yf+}tvFLGYD
zjiV0iZ&p<xA7u5ZGukQ;m+roX`wh*i1BgR^t}qJjlV?<9&udEe`FG%^=6*O3hnf3I
zgHdolJkI`oHRW?_P8nD-_rrktyrTOQ#RPX%PQQ|>EHB5Jw>t1zsq&XZYFNuN%vln0
zJKQ2xfLtBivp8UD66u;hPCh1@ukwY0R|Hku!MVDC_A*KxxTmQ)fcs13+ra4HKwP@}
z8t(a=zS{?ZIP}YlQE;EUASV0nmO%x$hoyR4segkJzWfS{v+XOJ4b5E{IKWiHfg4NJ
zvotY(IjOa0*gZ-e81B%kz&T?1)-rn1Y?I4SIdNaZJ+HLf4IU7OzO{^k`{c~U{b`m#
z1^Ae$h68cv`^qS|PtM%)<fCD}%E0NS8V0;Zs-iQOiQHVkU7CR3mdf{)(GLO<c-~?}
zMy~`SaM5B!Mh9Eg$#q!#(k|w!2He$Doj_9bGsWmABi4YV=!uN34MgBCrSe2Z3jz^H
zEuP3|f2*tpq*zasqeKj{2o>Odrm6y|F!NPuFgnJF72r9hssbt6+cJ8@h!r3&@ZD|-
zq&#oSh{|&QP)lA*1I&FpkgPLb?N)<6qfv4%Fo2}!iHz<K9)aZJiHt&a$%_$EV0C2g
zso|d~&+b&g_bO)g@C^68G}9Rmyr${4X>2V#*mQ#$U{cF_w5i{JE$yb5?!LBMbR$~U
z>kHm7a&KJkyh0BdwuqRQ|LF$qKkn`3P2I)-Twtmy@I9%rrq>&cJ`6<QKNcglWaXi5
zJqFk<NF6vpmAIW5xUp0|D5JIQWmd8?b321i_woj~k+~lV#9`*X)?gIeC)d;$mGvu@
zeHr+%RK48wZiUZ3U9W-Szjoj_e}GpoH(Nqw;NMJ@T+$Adn?plry(4DNWZZ{Cc9ero
zb5!Q9Qzi#hJShX^b6ZLGvoPKIBrhCdR?dqw!XK_!ZZWU<fOnd>Bd_z9f%}9w^8$D4
zBEN8-6W1;4xZXA`pp_)EbFRo8+!bxnCGJLQ#h+#;LmharsXBm{EOve{`lS(<!F>()
z7nxNRh(o`o83p&XxEcMW_<^MB7w}H0{OQN&zCZ;2VKE}3=K>M<!D2)WO!ODxa_`Pw
z;FUV$E>h(2c2EhK7%a4}WVZ2w?~u-IGo(*eIS>8Di~UoxDpSiVK_z5jq0k<>7`UDS
zhns3BaFkTO&5VvUVjXyksfGgYH&q>2vqdq~5)vS<wauyq<e9l^Fpwwuekn1c5Jx1{
zDdw(9Uc8uatfC}v=x!%~L(NeKzC$(1W<Oc%%gn0$gy3^Q)kp1E$J$aJD7bY{?JT%g
zP{n!Akb-w2+@u08wQwCkZqNOsGUD9?x6*+BG}}7xXO=`#bDBhrB(5+=!+?bKGsuX@
z?)^|;c${1Vh9r{Dx9y@x`&q>D_XST1D#G0wRLiTdEv>+E(q*w<2v*-0`<P;@Rm5Ih
zas~J88yEJ__ivzNspnh~$aRM7^X}AQPR=Kjpipu*mqz^GLkdCb-Nomn9~N9AjibsP
z_lBYi6}{ayaBnT*P7#Moy6Xs#hlg&30{>~Z1=+11qaWM#wFCIMRDR7f+Q_b)9l)=f
zst){~RNj_R_=Hjikk1@>V%*)dvRYi3`{3}jiFvivtTz6Vw@GC{J^o~3L`h95gMF;N
z8j$x9nmh)S>0L6S(k7KbYuV|;GRnTrPLT@m6V0Cc!bTudn1!ua(L~7kX2&^lyHIky
z(y^uG7j$30aY64USYwU#H|XaS8#o0V+P+1p`^aNAYR*$n*(|1LwWWW&k@7`s<CQ>s
zKKtYDj`f#(B_`jgXvJ!_n#;^AZxZEv=9<?hBZJkYn(`}b>XWUFE|QtMy#bO@_Q!6d
zG)T@f-FCv?XwiZ1m9Dv57|fE=edFG==9dGapt>fT0e#OxfmygNOCSrhY0H2Gn)i2l
zamCpS?=6)XCHY5$0~(Bfs^e~ZB^6GWywAd(sO8Oj?ThXFC@0!EklbB!cK^}BR$msR
zJ303-3nGf!m<zv~7w#g9PzQcys^pmkd0i=ri%|I8yl|L&$1VJB-fyWDM@l;G$Ok=6
zUZSxQS?+mL3}-{-nRm(CPseDei)r5nyp_(E5t6OP;!_%X)`jB^D$1QTgJ1WoWD}NN
ztKVA{mu2jHPA~E~OWY?U-DMN_w5h7VXQlENDn{LU`si*^0eea1iH!CL#MXQ>{GmL5
zVnNGTtzlNl_QUrS>}HhYWFXL*0<J*dI8#-Dyf*TAGrB$yaTm)~j8X%hYO0|?9A@ro
z4MxHJ(Ae#^Qt$xTZQR_t9%1gwIBI!C_j4V+EU<)3@S#BaXmQCtWqejI&vJK6z;mVY
zoniEJAOhboRo!53bJr%w*QB`V03H-rmZJcvUTX7P1BUFYKr-=NX0(F2uL6net_MJp
z@V0RtPb)s3Xm-=Fi^|>4$}ZOhM+Oz{x3naZwS0_xQ<zH%NMY^-TefQAyzzauVz?b)
z*4T}jtOmO4thY&O1ZDD^`J$o?g-SP2rH(stR>5Xm7Uu-(N*#EYsfGgYm&&g|M$a0t
z4xH7;*Prt=FO66u;;H7S14s<N7#O``#2WBSi`W4qiTs6>=21!WsOIHSX^_X?ERPD1
z;BKJ+Tk}ZYMNaeh|93w|tEWtcdyw<6RP@-XfF+yuDsWq=vhT_~t~8*_{j?pb9d#(X
zopXA3)P3JFN~WvDE<TCV+-l^;I&^ym@LgLS9Y7LsuZDnxcfVfOmE@B1swvH3+0R&#
z<ur9$KafS5bH-k#I(}pIl<C!3*8XJ2A{JD)3;m_&$pKThtGOGthal!TAG615Em2*B
z!kbw*blY(YZ)R)q_oLvq@HQOoaB*Enfk&GvxedoN#TDH~-Xs@yg-j+F?c{Lpw6MvI
z7<2r5paB1As^rNkR(~@}4Y=|0w#@^-C6(WF8I1@;;B_l_TTf)vwxW3i{z9t!ZJg|S
zT7(L4H&b;0$tUwwX)x+EVg*RhoQL;|)Ca=2-3Uk%oK;#-^3)Ya!D?t~mE4b}R@Kxh
znZz%t#1N~D)%BVPcP9n>wav|#(wCDLaAeR+KJ(w$i&;6ZcOO)k*^=(0ocmD0jmn2)
zsny`P(~G!EnAdZ0Q|dThkUqFci<ex^?Blzp;@#i4^k^_(^|)OCctb0X0a^5P%dkGM
zM<Y(9>6B!~sA9;BS)xsHe5K+n8>{eca)F<jYUm+q0r|MiKTgG|NM!ABZj!?}rYZwT
zE9XKoPLa>H49dXKHZQ}|49a9c*qn#tv^F@ZrdG*mK`(k)_%e{*xH>3&{ZK71WR#q!
z^Hk;Qp;}<@J&YuY;U)?geDi|SX1Sa4-AS@rDgDlZl#_n344f6^$A76iBfPtN8jCEz
zp-@S+qV9yWlXk;qlH5sLDmsbdWsq$SMc2N#iH^Hjk>4YuG#z(b5tmY?%EobL6y-2!
zW8a!7lJ1)R%yD`|)!Mz7m;W)ESu1;+$0gm40(?TM>>5^2Hs?u7^(IMY2;9SbRe^gg
z=8MsTf!LaPhH=lYA-JUh+|#T&fH?G*Zbrd<a!EW>KZbCbWcH5PSoxhQnfESQY`1*r
zN`JH3|A5_Zk*_x;+e)Lz1lLXlBucA?xCxKQ)8mqES)4FQ*DZ7*TKjjEI3XN;0`%B5
z<_m)B?r#@d5<k)u^Se~eZ{b%H!5J3(-uPsJUpS`(?xRIq^4v-_x*T3A;?i1vYRGY)
zFXHkOSNt52TgJeb^>okOPyk<*%AXR976fA4X52rowB0fWzG7A#KpgsI%qX}|mhn&I
z<622q>1R}mZkEOAjI)FCP%z*7j|G#pjX2f7U9E@<=aj(RqKMm9Ti3plZUTTj{C0Oo
zz$5j{xJRkW{VgJ+(WcFIDn>k@&bhftgVqSjpVVj$l+{j(z&8>y=G!<to5<I;<Wp-f
znjQII{Ly0Uc#hIkE2K(+S@86E&z@0Zv$vnHtm;_LQtyGsx#t#)j|%z$nV#|ULEq%Z
z<vTx3J`I>=rFwl_Dskgt&r_VKlHE$%Cl{WWlk->DDJ3~`)=`GrNV+p;%)<psAMPM=
z-4cxxr|_x4-QXg3tcTwQ?#v=Cje9F_3)7sW$0mGllS>nLk-enu0RBR%9;J!yOk#AU
zX|pql(Mfh^ne;IYS|cb{{@jQ=mKs(tyuz{_0VET@)EN;W=jl~hK29}X)jq0X7ptba
zm*BBM73X<-)Ya@XB2gYav78zIRW_U!j7bVUb<9(e@EMaa{5ZG&QJl{tyOp*}PM4UI
zbGoFIWSVCv!>1+P>9X*Vg42cUKM&mgj}~yLaF8az`7Pu!S)&7Ybdle_dWT~>d#9rg
z+}TuB;C`m61NWCITX6LTqw|ee1zv2bI`ERkY#F^`#47L&Q`LcQE@m4~IAsko!%;v|
zbg$mKf3oUUmU3sH0?7y};~N4MNIFoLmQeqai|xK0@}>JO8`rV@Z+2Z@-xOIY&EIW+
z`;oL#gM4>aur*}iJ;UPY-eL{#RV~po9XLle?n~i5Z&2HdQs&*%V+hwR!a+rgd!hX7
zXm9w{fh+4QboYzEbxc(Ut}B&aSd1!0tOBcx5gBy_Vmue5_6tjG6!6KQBI38q(J0^n
zQZd<S%uz)#|E>Vp?)ahb=N7b`phU=MvG+_@<Q|u;?pLt_I)L=pJt_U)M(nSokFw-D
z|0qa}%awY+yz52{BGA3IQYVlym-nmIeLHHYF-GZz2~2LsiTzCl%&G<RMsxSlv0V)Y
zM_Q8Yagv!W8E$HwYLBzXYkEoa(9PsM7uMC)O2C~l_DU07SaY4<kw>CCy1kB#ryO$%
za@=u6CnE*!Bma&&vxqxJKRx(UNq2VyTy71YggbG8t4QU~Qbt?o<0Ltcm~nrSxvv4S
z%6z4teZ+93)kvZOB&_?u+T<<<>sqoE;9*iVc??boJm6EUJO(cY9*~5a{^I!|-y5ya
zc3_L$g<VB<n^>Klz*koHWEb!BoI1<Yxmn2n^sX&57}Bati|?fPds=x9Xh6m8+y$<n
zIc_G?SA&gPm2qW%Q6~<v%G%S(YEM&ZCkv*+{WW3in-<|aJ72+n4sDy%HBSS2=^pRW
zHX^%<CUwycVmFo4-cn}zOTY_NCJ~(FG@GrK7}G2Ubv2neF{UMp<Oa3y50Y8A;6F*1
z-3*`TUYjz0E9eJgddB1lKW;~Mvz_tdj=+x-Mqe~V#B<eN-nE7n7(t!#^ezT1&AQy0
z)iNQMcRecemJVLt6(`gT6lX&RTe6vw7kElu;3;`ArX;g8Kx=Jd$!?_`k}G%2$$5#E
zQmSz^oa7bt!)@^8#|mCboF&ebz@1dYrIp=vUOT^q-1VY8U`gCT;*OJa7a8E#b$oH|
z^98_@r1BRTMmGc^@OD$xfy34{cX89wBx)pqLw_k^bho*$0db#y%}OIwh_KgM<TV`l
znyH2Y-<2wJUuiJ<uMvj>>z3M3Abs+-jHt!Eiw2|?cQ*+9l67r3u+vmSfvv@-&(+f6
z+bRA;W$S);YEl;i(s8Hj!ifw>$Zh$+cg@)G7<?#YR&0BN5eYV3E`9nt$&W_6{7&y;
zK&#yq14!yk9s^Q$K|ju^qmw#XlKXgKoZPWGF^*PU*=MrBCz!6QbdoU6@;<x$qI|J1
zT(%1)V%U=HyovN}b<MRaVcx_qX~3*Em2tisXi2h`vkMaVFFNMpPU)Jb0V}+vn=ScG
z>B`A(QddqY>Gk*HwA^>|%6&1fvKNz?sIBd5JxnsYyk(Dk8IKM6=A&K42Ww{FGp0(X
zZ}Q_p(Z{vor>OHRQ`hCsCbB>Y)>Ouk+(f>c*MoPH9*kFwQzf&91K??<+qMCoZo2In
z;9r|AeN>&ZLKo#t*@C<kx*)HH1xXFVv@8ynT%mMqU;meb?yD<NeoqIxm&SB87<@k{
z$21tQRV?NPB`4L&*={s2gh79|*2ZGSDB05bX8YiUJzC5;!pR=HkC(=cI@g|(%=y?r
zOlh8@MSf<<Pj+&HAC<0;`$7bFdSBS1Ujx<SI<&k$(0`2k!9aAR)M6G#y+I4+X33oF
zp|G~Pmrm-D++jT=`^U}CA#tdbl6=5pLrvMflJ4%NG^gMWixcgtz@1xkhs9~Wmv-4D
z`CX{D3AgI&3vhQ$z`vQQ1Nf>`{*4PpZ<scFUdxCVt2u80ra@~2#VY^ir@tb>&Q=Y0
zI~`+FW4vF`H#bMd4+nj7^Cj<<^jZr)Yis=Npl|wN{DYux`iU39F^V%*GVgu0n3MBH
zK}zX}BT>P>6v@r|oZl6!C$b-<>>amn(R!i-y9e&HBEN(6tu*^cy7dG+*Hl&Dc~WJw
zoqo(^ijGb<!#eQG{aCJ5V1KFnZz?bvXxc0Sqb-7Y+(d%jVnJ)b0cJH6h(o_z83p%4
zWB1p{Ek4~21iaNECRQXx`R?;Xi%JbfIB>lN;;TpLI7f_=n5#%HNoJ?f(l|NK-4=ey
z8*Q+Gmo7f=ep7V-ACjs^X@YyxlhJI`X7j`7@Gs*rS>)@=fJj;H;DI{EsmpkWpl_bK
zjIRm$=BZ2gcY?mjXFN=4;Xm%#w`5n9%=-@0n3Hp=r<9}%{O%(axYKv^9|}(OxGKlp
zsfasJ6@FdPapx_KyMs+uJ#GkYs=?iiB6nlNxjMK5{&oP%VHog!sr;3Q(Ja$utBDbx
z#>@Hh0)n1lL2JOfENB&oLw~k23ht9<C~NfhiLWo|UYTqs`1PPVNU$TQjuIRjRHqA`
z6I2bsr-JIgg1t8^HUD!Ff!CU9L?6}GVKtV&FL;HiMo{2CgKG1E-tCVi-J_+=H}a|<
zNIKOz8++9N$(#pJbmlxIm7P-K-Af?GB<u78GCkv|$_0L$BYF~@tVB&8Ws5#e8NDwg
z{7c@Wm4|!5vtS~<TTa26N-|)1G?l@TM?0zfuS<3-eXFrFPR<Qg>?UWWAE5|mNxCz;
zx4t_diAb|&i|gLa?Y~q~-bEyKl#@EWo2Z7my!I{1t38@L$DLNhovyj)BO4}^G0WEJ
zn+uHP`-h1CiN<SbEyHJR?-2CO1-zri`$zhk#-~R5c($)o-Zx8TZ3W*Woja+44@uR0
zb;;o2zynfl?`*xgSAg9balzq8Tyi)P7afkoWrrhi;o(SJ`g2PAWyzJ5Yj=Gc&(iog
z+f3{-=ft>M6U@YC3y{xo#u4HEUN-KIC#J;BbMAK1uLUHhP~1+(U0B488|=8Vinwvh
z9d}F-mxaN(<+uxq&M8{-j>>o3$wjRisTZF&O1f47&sxtn&Fu!j^Q7`Ohm5A0HoKfN
z+Rg5hliQ*+XpNv)<-f2zFUmGM>#)3C$FdzHdrHUn_d(yhOJqD+S;HsqIYHm#Gu}n@
zz>ilHe*dm`-AX$rD=FsW{9#T?N!nLdhDS)c`JG?%KmzXJ;^v$R({<>f;I3Tcj%K_R
zxHF5mZ-}#!8t2j+SH#^=oNWX5J4GLd9;DZI!|iom9k`2L>bNBf<VWKDl4Z1;i2fBV
zqj!RNJiBSo8bPtjU$R4@Y_lbc<q<l@l45*v&^MPL<1Z^e_~bn<=$m}TZv=hrGmo<r
z=Mu@h7eX;7=Y>#8NtSFcWwM^6TMMP4R~T^D6*p(emUU=saM$<u-J5fkoO3ke?7*E>
z#64e}djfagBJPvo{5^1|6><6g#PF?!b>I%&*k!9gzN*kKPDW=1V!SwU|5O{kYQX+x
z)d9qzU$2Y~F=7pPgjAl$=+r<2o?)sEAlc@h6!VnmTatMX+fq*Y^dsivEKcehsvO<Q
z8#B9LsZipiz};+Y0e7S(VT`0(rNDh`8ioS-?r=Y)jLr%~c`-3k=pIS;01CL5Syh2J
z^xb9@+$XPiaeu10uK@Qp_Z>hSX6`EuM!|h@x?d@`k4bhbeJwdJV@}T85vfxtxw+f7
zXzpfc&i-I)u@1b<PhrVjZGpd#%FhQQ{*WZ+viyeJek7T<RmPm0mr*HYs9I#gA}GbY
z7i=*nC*f`~U)$WIKhzU*auQA{Ny0?f#3H39YRt(=81upACQTSl_{zTy;BGQ=CkhZx
zIV%fCfs&NPqR=0tmfYf-Q?&Tt@Z(E)a~5-QS}>m)did4gLM|!_sW%Tw1GI45{sYu)
zf64zE9ivVW{gSukCV)HGu8qJ}!}P<MsbMA0F#V8-USOBLVg-~32_6tsLMEV8q{*))
zkCmpL$4c{zS#DDL7EQ_&?G9H;x=8^}m&#8HqpM7ty>zlF1#k!3O$xBpFs*Eo{{G`W
z`=gyY@O@Kt06&n*_ma^N{T+JFrhxmOny(rVtISt%UKg9;C?JM>vOey`OqslArd1#r
zhrfW>f5mQJ`RQ6W?l!>wwqm2f8#F&-4wrB_@0UQ?SPgI!KDX$PXtosRz~W}bl>E-b
ztfDr=JeS<GqU1&@sb5-hb>JJO>Hxkem0tynPPM;XPcHJQ`%$>Zs#|I5zVSp}tvIh+
z3RNIM2RO5T_RjuDrg$RZ5-MjRp=_lZT(3HR=eOA8RQt9#M;F%{Q}T+7IWA=XqLAhJ
z{^UPG(tS(8ANj$8)~3b0{BJ4fuiv8HTGDy@Tb{R=m+x)v-+XTKC0!kxyj9S;n49l$
z`itJ<ZIUj(xAXFgdHLSPyx_e}m2}?zmFF$y<$EhXubGf^-g>XRT<aWo9P{$M4f?D1
zR+e<$*3R=5^YXow=6P?cOFD0x<#~&F`QGL}>%IM5(s|o4&s)sP_crM--rISS&f8vj
z-eO+9x4}1fZzo8)izjg78~q{o=FGG%2LF}PZ&-{rzo~`Fpx@12>8XsqC2i9ygVPqH
zGCI4J%HT>Vv#Y$|%dNb40a4&FR$vW?OMh`-gjaXn2NJ*&iz3Xk2o)e*bHz@{ZDFMm
zx6pkmIIn?~M%+M0%xhnzk<-2@T~v3ewXXuaEwpb+7lTIv4@ei9#S}GRyfvX6NE6(}
z0!YzWL)&v&P|a&Wdrk|gc`ay9THr#{fb*@eb|BO2vtdNJIoCMW6w~bfOb1AXu1Po8
zj6bE5#=XM=e9lxufX_>{ru(tT<J|x5ot@*df411Ht+dwa4GzC*mcwWx-Ew&VFVY$5
zLIQtnsxt78zw)Q3V|^mXGIJ^*J<k4;P~BsVITnxxH!EjAGo2}r71rc2xXWgx6G;D?
zym-02q-D0ymRlM4Z|l!+ni0wzo|ZYBn#kFGxmKL3ds8va;17z-gu6}v!wii`GZ>L(
zFoFzdrF*ju7?K*6CN(Th>VKl7vX{hZRvl?p9cfk_X;#VI=oO0hkYx6N225Nxf46kS
zD>eH>b6jGR7#G=8#$_I)a7ReyE|CMY4t{Ctp?xo%0pGJTq5V<8Z`+yB{!_tog6a;z
zdxEM>E0&YQ{lx?gJH{4sdr{^zDVrd0UrV$jZP%b=^UF-*7P^;>EEpP@(ZHN-js|>L
zxn{ID*=3yFTXSZ2+axtNN4Ivxi8PgQSZ0Y$%6(36(!>U%xi)uI;GvooPh=FPugc>7
z%%-mzPoKAqXV7bl5^PyUYsz!WGKwR#ERd1K3xwi>?;5^0P>faGm-nvtx%+QDcT>@G
z;JBUx8XP*v3aq8!Yg8A)*OpdV_tL~Z4HBTUO=axAsf;5um2r$Cl;i}-mE2Rlwh5(v
z`XmGD)2x;XkTWx~C<*|*`GpHbq+=DPcWI*g`IP|!`!vuH)!k_V@wmJrPo3V?Go#0j
zIr~r3B)eB}gI+3l75CkAkBZ$vxmwhm+2>H$>5_TH%k}b-J24li6*oz)*t`v4UeMkW
z<^{<1xVS-F3GQL%P79<)GA(Eb>ZS#V$L6$5&Yu>x?mx=0o0c&}(-QBYjyvh^1ydMr
zX^vYe^2?_CTv!^jiu^7VXT4u@i&h8DkShD*Gw|)Vw7%G4)c01e&6wb^(q(tM^#-GR
zTA1;~k;<pGZPkF7<-an*@Nlc40=&gk!+@0HE($Zd7*I(TpweJOE$%fCkU~6>(b+1?
z-JJoiF;xXf6^>O@`{tH!J8)~MvWV>sMil7oc!4uCH}1v~NFi%ywr=}#|GMpOaPN&a
z+S1?cL!dn84!DOEFdVqIRE6#!&;*wX@N#q42@L%hUeu5N){jmgQ`Wp2WAInw4FkSp
zsv*Evr0Q8Z+3l?T8jRlwRN(p6%wchlnt|!k23FQEif2){X$Deh(=@L2C`CWTvM2+u
zwJfRx{JI6K67bZZ0@C%IR}_aROz_=-?{Ao+4txhk$zAzR<cK-Q?(M*#eM4~`IyDsM
zv?u57vhC&kV9D%G9!wC|&AYl5szrp!UK`+-<eS8}?LFjqb;;bhfkf!6M)37AbT6ag
zC6dwNBpi)=SPpr2!xZ<Fy!UY{Rktkrt5llXawzU-%b~dLIDmTqh2stda9?%Zt-;_Y
zwgziJ5@_<`(9Yk|L$(w0P<daqG@iT7nY!EL&?HNsJ&l#T^kE&a+}wq-zutRI?xEtd
z#c>xFT~wL7TXl{&?u;VtEO8#U^QjIzT%ToVD-8jjCsnq=*BgxXzl{s>5a20Nc_O1L
z0ulJj#fb52kloXkT@Bc3n7+e@VSlTk0wimHS!6`w?)nKNYfof!zSU3xQj5DH0b8?6
z-^(StXRWMu;1-tfp}+%7)ebD1stja`R?Th;29_`E;a?D);{N0{t?^K*A>X#rp}^ME
z+mm%j>V(TK>PqIvmQ)o;<gA6Amd6R!!YYt_JdqKp<UDX>l71jxZjDbXI(Kk)W#Eo1
z;`V*iujPXz-90sMtKYHAhXDskm8D&8Fq-?A5#t4o`z_6V4fs`aKOBg|%zZ7#eR3~?
z`wh)~1-QAn?*O*CujIH-E~B{L#N4+7&oWg7w?DRs72wpCeziBQ*XXx_2%KfAD)4br
zRe*C%RRz9astRzvsj9$kHbWI)FH=>4YnrM8+)k=&M%o*U%F^~NojBM19I!w09AQA?
zS{=D3xB{|DysM&x68hQ+q`#SAr%fBJbtfc{{(2%Kl66ENS$ZO)`z+^9U~A5u$=>j7
ztpO6v?iomyoH8Am(7sFu{*HoXH&H(qZnWq~j!g3IOUUB}<&*gW|0=9g;A~U11OF?P
zyV06CffBxWYTG0&>XPHoqHP;TX?=zkZEr1N@n<D~S?bw$$bxNQyDxb9RQ_1T*{2@C
zp@!{q+Pi&{FRdJ+yxkAG^l4ivYe|!Wr<@yUk~>!Oo!#TSQSgu<UK@@(y@<=2nG^hu
zF5=G6HR7Lkjj99x{TsIRDzN+QUX`6V^#-G-?=WI~TI2pBb6*3_H}@St9A@ro=DweT
zy1Q54do6j?8jSvJ#17!LO3iy@bbuvX1D<TE4&W~rvt{%|AOfl12Z>woluBPi^}2^%
zTQnF@xqCrM@sF#DCXdp3DQZ(m8Hcqh8IZm6c!7@J)5>E&@;OgDzN1X1+YBY|eNj}K
zDA^eR?ib8}q0HfNnVBV3GHdRoF_6MDT3mOgOUoWk+00l*15<tWH-hR)Xhd>*L6t1o
z)k?>I=B{_kmwK<~UiS^!y7%YnH8}P!P4jB*+kj#YHM4y4{BUezP5&C%IWTa16pa=f
zpycyBaja~dG^2Qt-mj=EKDWJ$e5GJ3qUFcPzvK3PwSdd?Z5FuWUM}ELTP1Mk7Tva<
zEDm$+a+p)(7Y=K{ar+k428YGrxc!U#!eIe9?u;V8^T%t8oWNFDZxejbR8`=^Qu%F`
z(fSjyP5!O`_bZvN8gOG%CAYUf)S(9g<z2xLE3x`WrK};UD|@CsfSp_@zaq|_Aws<J
zpnO#n_lBGMP7X$Um|-1=FHel!9U_D8NoFVi(l|LUx9Iuna^s4ebyLB*rDrQ?ejImR
zQA4KdZ+9M&bT7AnT`ZAO75EdW{5oLtLLkPK;r>Z;Ujx2ws$@pDlEaDSxZ`HQ5G%2|
zT@L>&>B=5iRQ5aKbPo~Y)S-MJs-Ip)-OR8K#8>`0SX&00Nan4Bn3J;(==pVWv!r!E
z&z=n2Nkt7Qo#M~s{*rDT0Ed{W3Or0IzYgNg?V_WHnqdbJL-(;}_bYpo_KHnclgW0H
zuDsqwDUTHAGz(J)?xs0&4Fv9K)0o{UGWtaz#;M@`TytLoUT3Og5x%EGyPD&UqXk2(
z#OgR%T`1|w{?CGfv-?-#JS>^>xqK+MisDx!quFLy2jVM#={_feHzf0xZp_J9y7c_J
z>c^6nE<HOpa5pPj2YsLROLu)qw{(I1q{?5X^B?zyUw(q?SRMG4KccDv_m#@~VsyY$
zMg+bnl_xSfWv&r{H%jG+jM}V>DzN7=m9f5+Q3LL6Wpn^ZJPTTDFd|F0n1CNxWi=pq
z<SaRgA113l?v46wH(vhp?&~#BjkH5!IE3nZI<!J*>H!z_kR3`Aa!V@iT+S+s6Y1p=
z`Nqb(rD^mkjqwLa;wZ~6OQLCmYOD_ByhZlCC;hyhBbhxYh_{lM)A~bp(`9#;r2E~w
zs}*gAMIA-qSJ)~V^^D*rK^4cv=l$~S&N%xq0d#-0xb4KdTX9?I=$^HlI?08F>*)5&
z29}goZtJl)OXhcTD<t_Fy#89+J4iZrg+Hq|Tby2@=)#}BgY%8RE&K^SI70%r@F)0~
zRGREQ5P#OyJxV3!%ua0S<CetsZc$)roh^-ut)MK;d(3m*V^<{pVkoxoHxK_I4jZML
zoXd*-M&uZ6NY_X@?%hS)+r?QBxPL0*{!5&%g{51V1E&{Dn#tiDV?CpfdlTEc_F>8?
zk<(EqOY<J{a$J!(Cys042SttHq{6M^7M=~H#`<vF!XJa|uM_)3yIR$O2R&m~I$*n0
z{z}JaqW)YYXBWqPr@5~I4>tE5KpgsO8l&Jox!>xm$Xi+lod*dXBI$~^--nD>z>k#G
z*_K@=LBFHyocXG6>kbax@!^>L5!E#5ZVbm(#I7jpIST7y98koaEzawKTlgE4a8?dE
zOfI_nTqMqhfAW*;a+p!Xh4bj2jXMu6Z9X})+m6L`Pg1PelI~-xN68Fxr&^kods4Z1
zBerWQmuBf|96Z|pF>~Ue^;qoZ+9dCC96#rVf+}AM9sW+yEPpJ{F6yvr1C1q8PG@4P
zZl!%1v00{z>xu1L?X$k8zQp#e$6`P0DBF;AIX2Jf3+$m`HH|Oo%hBST7q}M|ajz7o
zWtHAs#AV;uHmushUx6KbuV3}Qmvk>nfPaw6Z-;SvFdS`$qktItzY5+wnW5jv<Wb4>
zOJhr``FBH?|9q9T*6?sE|9L)0WR?9O-R7ST`n1?0&UCKAyknWxfd~JVi$DjkYN|T0
zCRKhTaQ~*c9|gqF{p~GZOJK?UNAwjeUh;TyO&!`%a+A`>o9l<MrVn;qVDydYgEyGk
z`On^)uix*}UEME}Sqy=Ncljy@-A%Q1;H9P-3cO4zUoE5UXJVV&_Tv8E3gg~z0$yV7
zJAgR!S3yR>eR37V{qp8(6cDSTg|?+kE;iFDkih=0@UvDPb4}ZQ%dK|2`zw5!JjDGK
zzFTMwxP;5O6R0V|I7zp$Z1!5gqmkc>^LF5tpD*BkD9*-ezw<k}h&x!EpV?H^fm`0g
z>{Wr=O68}S(GIqVlhug(k>-9B5UcEc@UD3Eogw}rv+Dr<OF0b8?A-cwoezIP&n#r$
zg^<kx<ldHI2ax#7<R{LLWInh2%D`2vZON*nVaJK$CT2>}gijaeg~09mdclOpRXV?&
zMSlCM6N4ljcU}><e34%P$4R<<9(b~;s=#whRR^9cm0vH6o-tw-_^hewz~>gTWi;So
zTa>^}OjQSNDwU5LPab8Bv7n=Xq{!yLcv_$W$p|Xr1%V1A9jHr7sCl_^>pJ{?D(gD?
zWz-$B-;q?1(<HOsPqnSR`75g#i=&gp3j0>EXDWU|Hr-2oK5tN4KlL^5Nf3r`-NITp
zuVBHJF7>lGR?;mj;51Wp0IxDt9eA}=eu5d@5r}b%iTHh^i~?fK>@W`Al4l5b+gaYS
z$Hw5jEkYIeZK;}HjmzL*<CTF!OjV7O$a^q-xaj9fx{hyFw9gOH%$*cY7GUKPJEeeC
zseF4GO$kKcWu~eFf3cV?qbH1*Tq8*B1xsxda3!-E)nD*iK?OWODkhM8hX-n!Mlz=(
z75+v`qjP0BAhv$<l_Bxnr`>?0;(znCdCS>I)9IWg$Du39tsY&$W3~WdPnj;REN`JK
z$=6t=lG%Z$TH`u^%&z+k^Rh&wnG@8^%scoZYj8X8QmNeU+O{>W(SV6)D&wih9MX=%
zEZue>Q{Vid+_>9$Et(`Bq0Z!UI4sInl%G4@?4dBauwXmykVm3Bx;>$ecPGrL(s6hC
zYr)>xUw-$Iblh=8+_~bcGmTTc4jgW(4&W%M{8`WFqd<()PTh~fJyv<&Ahd=&4l~bH
zAVK}tBQ5#f4lbc`?y#X;t4OX_3yOO6usE*;?u;VttcQF*pOSRfFW_9M@^3vbeAo<Y
zz*fVYKRS@X<7QX^64||k0=D|f`4a*8m}9=$fvtu)AJCTpVcf<CY&A?jy*opO_gTa`
z@P4WC`-S1{W>^EZ8m9fiaHbhnfJAov0=D`}`-QJN%~w0H)iCWBhJ<nb0=62a{hB}B
zudkJ^vhx-=;2N)TFPj#Ok55SK-j}^A5qOfhDg!UO+PlhHUu!UWPFnYz3i!cdL`Ews
z6GsHDW~xpg`T8J53GZ&%Re)sa{zM2!imvua6Bx|2d@DfmcBVj*ZkjS6N5=z_Zj)D(
zZJTA=4!pp!7)oNe%K0=h^F(28VE`{NN5g?Q%v#u)Gf$myk?!wJDX~|W5n#wG`4HyM
zRM<6=*_9GJ(~7PFA2e0{5y7#Re)V-hQpwq$@%^MZ>UceI)R8($URg5@IBdRZVX&MM
zadZ0dcn0fRq7~qlfwyQp0}5&yGZQqt875B8F&B-e=r7sn>Rv|0>xry)SIt?w!9z{A
zO#@7L7h$rke{#u;!Ax<JSQHhnnIX6(!a2(t;hYI^gdZyR<0Re8Kc(J2V{K1f2QXc~
zHmmZUVjpQ%$z568!|tWAliFw^CzZQvr84%2CXWGq>s~r}QX5m(!%iK(iPh>P)jO4H
zAN!J!2C9dxiVBc(q=juB1#k?tM``NS6OwfUi}P?*_dyW<{M+q|{yR!I#3{OJ>4ccV
zA<}a<F>yNIR^N}7boWn_Uo5yUrEROLZH_y*h`aC+f92_Be;!i@cDKI<$v(^$Cxqcg
za^Nm-z*fWbegMNy%&-C^vhxLO^_AWa;A@fjY6s%LEjVDSuk;oHU;i~<oj@G8x4D3=
zzH;sw<l_VLRR<C#|1N933|=+E8nD$c?J9<^n_&e=WY<+-tFN@H_*!7T+JQK5T?MxK
zO1p}$cg$BO5C^WSz*b*rR|jc5ciMJP2Y&R+CESZ)x2xIJfKOcO?cCqO1Ai)4{x*rx
zG-(|Xc$29*f$y7Y1dz<~@486sEK98deBM$U3hXcU?qafVJc9$J%mP#zjL5r5Wk62u
zJ_y*FUb+%UZ@i_~4&1>?tpbUi{Sim_a*sh<`*#94N@RB_0+K|&VZ8H@)aRB|CvYqE
z%vJr`cm^j}BRhdKq{(Bzyt-RJ;GLo2uZ?Fg(<<)-Qb5yRobR2A|C(fWl?OA4Zbs-2
z>Ezt3VzujawrYXHO;rZoZK@GZ35IYZ(r_b|mU#0XiyV$L@56yNnQAC71RPGlan`<}
zz)*5>AKax$zEm=69{35<ZPQ?~4{d33Tu*G*v$SX9g0>6#ydpoWq7_RQbRSddGik%@
zXwNm|aYM;or3;oTy8}H?d_@QPxC2u^8=oCQMOMzEKa?4EM@z0NmG;gebsxW=<iv8Q
zS*(kvbGo8kCAp?ccIy9RQQMlqr~W&`-8p={XzS$BvTVA+_?4LJ<}oK^nRSD5o2dPY
zsF~w7SgijIirC}lXWrZ3-6QW`ULxOxfcS_EHe8~?_?KN2sO+c%@=T^)KH-A4W>QTX
zxUBrm3T@o3+;iYaHxZc}bwL{z8)?bsNBfVPu&Mve{`uVf!)bEH7qH>{nI@aXR}A~s
zoZO>mU(nHl^~7PeY&#3$ldPdlfE~a+lc1!d6(Z+zH+Sn4<kWDln+I!FpObVd>LdxL
zio@R|M{i5ITj`zTfb+?za74p$Zn)XhPEtL6N?p2bZ=jlN`&|Y2vy>fYh~r73wtUe{
zwrsMmHRKRp-JM&J7XrGMCpV=pPhMAyuni}UQc7|ifU=g&U-BUmD4#1}woQYVlUYyq
zS@`T{TN$q+eJ`i&KgNB72@2w15ZBIn8Y>6cv*f=OycUXQ+HpIJxbYfy+}=gp_@r{&
znMJR$;#16Vrx*F1tLKG(x95g+;7d~Fzj8<oYk7w0D~Hsul4qFS9Hxftd4}n0g4D1x
z&oF%fFiRbHJTwRR#1fm68rJd*)8?dxl{~|=IjLcLo?+UY)UY$pFm2BKU-+BCtuE*0
zunv6b3RFXZZ%E}A6Qkc+W0Nx+_j{WA8t_q54F}@Tzv^K$OutX#_HE!XQh6eyXB#9u
z9Qct`p2(<f2@ePUyk#ZS8jM0^$t8ozcC|7pz|E|29YAWy@~AWzJ!_S90AFaStkPig
zv{lvtq(bkJ5#_i)g91{ECo&3^CC_51Y<sJ$9k`FFh5!$cD*Mt*@R2Rcq}{5W-cnk7
zgVFWUW_v&7-q<p0?F~kEN}GK(9`&x#GHvY*M*XGDKIQ_Z9a$UN8<WI1Yccz{Ii4F|
zNa)Xw){IUdUCj)O&$R(&I0Sf<sj5I0N#<*aHL;H^nJSRw?}?0lABe!+TiQCL!RQfN
zTU8+EiTB8e4!W1%KpN(WjOaqn8wS^EW!z$?NEu&aH5EDcc?;DY)|LChzU3M$92QMC
z_w_a`k^5|^?9c$SWU?P}1XEhmVZ0`q%6RhEic-mzEi*+%nGQ^Lt}5UROU`}Kq%a9N
z8gPAE#Df}O7PF%P%Pll8Ep@cGs4Ta5o-*ARsgqMTvjbC{d&CFiyv=A}igPp|Cv8Rp
zQ=Fp#zu8hJIMiABzt(xD<~7R#{Jfo%HDFkQQ>RQ|-Vbfr!oZw{?#uIl6r6<shXv^T
zF`%rB7}w>V6-}A&MJDi1Ero%p#=U?6QdqW)Q`b=~b%80y%?yxQ^6JXmElXJ$?~7E$
zCYi+qQ-a%esGv_v1z^&4G$1QB^9Jr6wngAdQgtt#IH$zm8-WL8XKnHrEU8N_m1Sv?
zqkWMcv1?{kfkTgm)1xIPHhkF<8~#NSV;N?Nfmw&yB|A>mt@&wovMnjyCUIF3ZW8~m
zDU+sqxDWi;c8oeObbJII=Ui$oUae4;qH_jZQl*ZzEOk2CvQ+tHrOo}Dd#PD|q2Q%4
zrG6rt?62wldzZ;IB&NE*XiMKiheW^Jo&+R>t0KNUeN*=jdq^%J3#hx>Ek_NA^)du-
zPfD&!pOlP|&#98x>-nO_v8$h`3z_3CD&jI}w+HT|BJPw2{i~j9BwYi6*GiS$o~7@_
zVt9cW)_|>s>C0OTFE+ypkjU=Y6R_1+`id7{mzuA3AP(H62H5H=eG!bWhWY9Q;=sLY
z2yFG0-m8z1k4fgM4m?e&{H|hnoEg@Dt%hk=F+9->D?lQ<t^!+qrCr6>$>ysahy&ME
zV5_gRtN0pkzB++8a9stq`bxVx_e8%|Uy*cc6}Zq;Rp5tG<u`iadEVE+pYy7}4t&T|
zRp4V%d0&j43q;_HMw~Enc!Sa3Oq-oaHkv}{<ijvz*ViJ{fZLiXd0c|kCZc2?Sl@Z0
zWMkb)hs(vDpnO9V|MfYH4mQI&5MTM<vvar%#!6<Fu6R$5Iqr5PreJ=i#V@4X*Aj{8
zqVIXpad}aTT^v5<<YY*Q|HzHor3=5zY{t2M`k$A~Zl?vOXmPp-z>B5wE0EFMfe5_M
zh}jBcbiZk{70BqdU>+Asc8^<jHDDjJN>(6Nf0I?g3S31VHZAr9Wpz>f!eX?E8P<XL
z%3pyy%V1y0yfqMWa^@HFy2Y<D6*mP{+)J#^ZV8SVQ<0YtQNGh+7yFJmIY|@ZZ*sGw
zMOnVfFUld3Zczdcl`4Nf9jv3@3WmUamS{Le-&J+8q>BhVMXLOWsbMY8Fuhccl-uux
zh`=M47%?@h<r$_C=g#q6-Q@S|_;uj%e?Zj%JXI=RHlr(zSO@;rR2{%aOjQR~t<2<E
zEqSeJdDVd9%+W9)nPhp@8jOBz#2S!f+!x*gNygoS07G8M4*`+aK+CHFBy5&M#ge$r
zlBfWQ?1_vB?(ScJ<l%|&`SneuaDb&!#&Es`O+J=-wAeomR>12`RRzv4RT=ocsj9$F
zO;rZ2Wf>$FLc*OLtZoy0CaB_SH_)M-B;9MS{>ha(CiN&yxH<ji?vyq4s;<P>6jgAC
zq}!Y3yjk$tk-onkxc&LomAH@(#93L3-}&t<;(ke-Z!80M?g{>MJ?KPE+dA-Isj_uc
zZ!o$&5P^3rMvOC0Bh>OD)N&%!@*<?W(L2jpL!8?Gx~BeT`)=JK>GpWwQ&Rb^#St;Q
z*$ity9P}!kFzJy}&w)FkX!V#DKj|!=%D*ICD!?_Dm<opfFvA)U2bKzoR*z{aGp71f
z7D>8PfM=f1^6CIyCzWp$qunkrB5*%b)q!hYXe{8yrm6$?mdZz9G{%S>z!MfD#&edI
zRims)R#p{AAz9E`gV7FFLlsDQp2%oOAOgF!WLIl2`nr`-1@305PGD<g>4d$l^w+SU
z<x2!-1=SmZ{|+jWSji$LR}6gaY*wB4oF7yrIl!U&*yw6fF|ke+&j`I{DY-XxXx2FM
zT?Pi<$wh@EcafFbRTn;2uv?Qo?N}0*+y|?cY_~4*%ewqQ;La%GPS?wj8|_6*9e9&e
zezC_LOATvzhUpTSBDWWZh`>vh7%?@h<r$_CXPx8E?RO;IE&?2GNmPM{FO~$O$$=Pm
z0{73D`x<bBS#<z$=uc8c!F_TEihELa_hrCM&HYdy4m0<a2BV(@B9Mrl7}tcmub5#O
zILcH*V_!L+jh?G3MjvZV9eA>-s=)K5@=K1<bR*V*4=hHEvnObq8P<S5H&q9aFn&fD
z-D<=dkf1qVfqRJ9hnZCwNNqXIA=VwTawqlZXA3rqDL?az_$5iVh=JpDz4cv-n}OkT
zW>^EZ8m6ZWhF6+l1^8vV!dHR)Tau_W7!e`oHTQhEec#-dvD(etmw|hls`J}|N17_R
zRN!bYQCwqpDrzk5jt<=3Mcf%b^^@?pq?-ib*^{|}r~)sL%Fhd<2LloK#9~B7ldUny
zRVK}&Mjq#x`=LN0`vuPEu|Nb8*%KLsJkp0*Nk1y&alW}94kU8szS3aycpw6a?1_v*
z9?56L(tfm)#}sov3`pe6eY@rH`#=N|*%KLsJd#)CaUR(tD-!uwz3N%&J@7>Ld0WQ+
z3i<(=p7A-#2R>Op8uU$moEH3eA0UtCZ0(lUlB-cxdijTf#|G8cv<?rl^;jMzcydt1
z;r=NHUopy%BFdJcWM}DL3bsG8f6KB@P6{YAFl#<dqe*$s5Ua|R(p?%;iqe4lU29MB
zC!vIVKosY0R*^eeOFtcVbP*TM#L%t2Mclq8`OWBTNw-e{`;23s>Hw}LRkqCQ4MsZ}
zv2O5WvuzVx%T#sX!KUf}9%`yOaE_^xJ07yX#ImmeNiIvZW~p9osn&q+O65L?FnIz4
zlJ?e&*0)S*!0n~-L`J0Up3ni$Sd7T%>fjMLb1@<#n$XNLK0Ro|e%6Kx@L#5?0$V#%
zvCiCXnN)$q&T6YP7?DZNh5C90`;BCF4uKz#uDAOmf|E-92KQ?`Ce52IY`QgC+2oyt
zr-|Q?%t-_ai^0tU5Gy}naVIehtf?2JpEaO^tP7VxI`dWLn07kWGV~DNEKip@kj1%#
zm71neBMsJ<a|k3e--|f8+@(f(cA}T^&Uw<{takUoKxWu&G-O5^juq#Sa|3;i&ez-R
zR4yB|H9R79l-&B!&V|8|K{?88!A0UfY<9!;7oQ^C!}>IV<R0J_99Y`PZBsu{j)Yq3
zBt~dt@{9tjon@7sMc}=pb6=p>)?jduDczTbF=#iXV|HpVO42>{0EXP!<J|I2-^b<Q
zS@To@K4+@*lAT!9VyoQAN~6_NyRPoZvvk(xjhY*Gy&dyZ!5s(N0INP{LxRF(!<~dc
ztnxP`47p^w(*}rP&N;G?vWDWaA5@e*>xeDaapx3q=gRM!wqonR52eb=NI&2-Pe<Q1
z!zys0sgfI{l6LrBw$s;vD@v6g?t5GNjs0v%S5x1o3udqXM1QNYwWRAXa4%C;fqP5k
z<1*Sm5aTOKS%<DQN*#EYsXBoVN#)%$TC0n@siZ|0%K!)Ni6s#0{1#z&w;Z?@l?z*>
z_!C1Oz?V!_1%4z|kJ5Pep$SG;PNIe?@L{QZf{c2eW<=mXsXUR<2R}9<aF^4)%7<oj
zoV4z|1pa<8BBKui5%{qY^OkjgmHH#=LJdgW*~de5w41e{2ApWB5x@&fRRhj8)d(Qn
z%34xuFe2NWPf?O;hoxEp&NBDIfjG?ES907Zud7GPEw#G85M!R02B(VKpY!*>IHHek
zrvwJyBU0ZZQr{!ua}nPxUU#YkS-ftI014+86A@WzjtHbcPmJ^M+BlU9qkg%I*P@BU
zz+qDv`)ev=caO*&x%YP8qSVuUZTIGlZFTN^S27&AQktieBOgn%sm`!qbC5KrB}W?4
zJd+&R{wMyVJW?`vn=Q>J$&uA{+U+12Y|zl7KBcMCyL_o}Q)mVg>9)8je=4{NoURmR
zNILGkX9~E?$fZioaYq;Vy;7V<0(Y|_E_t#OxU+-vke$$}D7;-Bo$3%l5_75-rD7j*
zs<=IbV=r=N8ZcxqBF$h#n!$)PgAr*4$@xeIAzU>LS53oJ({R-^TyhV&n)bO(Y`-f5
zPcl^p8N3}-!1tx<UK-cd_&|e?jW-+^W~(Djz9UV(BTYVewUYK~D4B+EL(_0W({Mx6
zaLEgg4plW?(yj67Mdt%~&=JR7Sad59x5#k^7x|@_1GSdjm%VklAF%G-f0G8Pik$=%
zAm>F3J6`!X-bdEmOUJi07~sd94n=l^$hpkM-Ol!gqWa=#aNL<ied83lGORZ4T5ywd
zil<i9)G9eorYS~<RZgvv1sYRaHIs{~DV^aj37bp03o-B>Q*{6zkjmfwF}lT`?<S80
z@io(YRa2{^>|tVm$E?c0vrN^Aqqj{}2EK2q&W{DxJ(GLX&MgIpn5qmMW~xr$XsO)Q
z{+zCO9gdavizTy@=+6Zgt3QhKLEz3Q;;yEkr0QPelgIs*Vj1|TRPG9Vb=QS$*{{kU
zsyP{Db5jO>U#b>1s;<BWPEOgVt_W=4jVU{B+4D-am#EpfR&*U6C=S&)Zr`Gowaf2t
z$!ygxjmsRnRUfC>SAWK^v;8?k9r$CZ{8<ni?xLfE&9Gb-92-=z6_gW2$@d+zvfdTF
z?>R-D9<`u#U_X5{D?bQ^zc#}f5C`sDxUGvptGAqYq~+x*^Hu@AZK@97J5pttRT_+l
zkn?;6O5Y`x6tkAWQO={I*o*7_{G#snS3Y$~x59weEHPCKcQV5o5C`t-=XVFUI!l|6
zvu~QS3J?d**&g6lXX)Qh9V;i7EHVE)*3y0DbUSwBy1h=(C!!|lQ&Trfx^4sCG}Tbx
z0;&A+XSBb58z$#7AGrUy`Kke5GgTFcqs)CeCHR_Vh819|VcN1^%iuOMER*^wmU?n8
z0A(#vTo(ry{eTUe-OXKcGa6I!Ym8Yrr&~;Md5td0Yu2Uy(*2pFn_b|b%ebm{0Jo9K
z&n}~D0x{ltasQaPuK}^jFB8LO&2SVDLw>y_j=4xCU$wNVKr#-$YgGJ8U~mbSa~eT8
zT9I6%3x7B5IB_nttdbkLn3CU_m{rt<nCFr!`~kQbO6qk>t`6K&-`C`)Jnl7yPnuy3
zh=b<!j6tin^!&x!L*}glTvchf<qlk}B{TO9uSP`3IWM5>*kYJI#E)6a;3#Kl#9mzY
z=N0|bQd#+2Ea}cc;7dzP6~pt)um;3|ySW9n`bv9$iF{mPzRJH5{9{nX^AF`uqU5iV
zJXV@P%yKPTr|56cOV|6oX*)^RGT=C=@>AJfM|U#A@_~X!2UT1ql;cFn_Z_pc0{&j`
zf@P9CU1LG(z)wsy0{G9x;xgLl1~%yAnG^1>H(xd2ho%|^#9>xet-&a`Pu|l_-B)n`
zg1PSi_Enyl`$~h+HkN${kcgfbPeK~BouD6B(4j!8$b7Zu)RbI)Z;+3N%~u)tx~ZzT
zr3!cI1Glt-k~@V9<$!$G3%^BsY>A(u{fhqrYB+RnJ@=4Xzgs&#=E9-q^|KBaks(n+
zzZSCVQIrNOs#~IKNKE9Ca)!fXFVS(l1}OM%HX~(Vn4}JJUn$H8kW6!S_1on05y>U|
z>OxF)pM;1rO)1HvY0@O8KJFVv3%=PTrsg~aODRcC1p1owCD}MqN}(4f(zOzZ<NOmi
z^_`rAF~x16okd&d{5$;ix8j{_gLPo1R9PPB6@HM8R=*I-r84r>g57+iJe?uwE=R!S
z?jpM?u$NRmJ4QPOV!W1c|1)!61NJnl4j>LQ_q7J2;6AzUd{=J&YwpWf4K(-3o(5%G
zqa@E7Q%VvW%4YK7x_m=nm&Li%BG!R#N|it1BXx9~8P<R}$X@q@Tb-r1DL6aLoK=9W
zhUtsUyJYZ!WPYxBtfl+PxdV+Ixy~*q?Cfv-BE4DCtzY1W_pyG513#9^7r^L;4;nF9
zzjFJ4xvv3do2nBy(jpGU_tp2~d+2Pzc|o<>1ODi0mch_(3LX?xMM>Rd8B~BFgAOtn
zY2iA6$4Zs8q0(S<aUcSxFGgfUP1&c%(xN&j>I4<%c3I$QQu)A)&XzX&wo>r4U<|x=
zF=IxznDI6ZaA;=-?Hq0GOitvHYU6d*&UPRx!@UxmJfUbB?lHSg;J-{&1u`93>75Nm
zU$LH7flP-dGP*kufwbNe89f<@KqkZ!8GXq*Tm^2{(&5eqqu$oKDv+*vkBmZ(t3Vp)
ziE#&S*7-8q&YLnP$094E%xrFLc_cgf6!rT<$!sNoIVHN4wzIYmkoSxSrqdY@Oj9!+
zm<%%>y`)u{4ot5yTQH?$ytr!_FK!TZwW&eb83(2=w}G;ncDAzI=ShVr#nFJFf<aaR
z8D<f{Wa~`RWYaG-BH8s?k_Crkhmq{=Ey;q((A|{+zj(64zDTmHlB{lUNOlCtvPd!-
zm<-*!%s|#iMg#vzbvhc5n!1<9&ndBn2HN>J0?1No@)$5X`7<@*ixfYoWv0Lf+PPSx
z_=8$z3QWcBU3ef>Wr<N#YqI~>%qo^y`?6)${{K~GJ6mRDAZy57Ii^flQo5bCJjy`Q
zZrU<fT6gI*CvDSsSz3Oj_RNPRvllL}7ra_HONCx2>9~`Z#y!uPlf0Yynri=0vgId0
zP%X0dRDl1Jvg3Ud$58WsTQFudTNb;bpWEr`<4T@YRPqdQUa~7y9eC?Q{!Y)uSTsJ4
zf!+U@T@AR$Ebbqxz}<qY$rBh{B&FM{fh{4^n-@avXZ|a|Z<wp$K%!)q@k)acf!yD*
z1BsdQDxZk6tjKmCk==)*fyBrnw&z6bj3att+}SNv9&WR}2|UtDuL6%WRsCqe^{gA!
z>4G-}RU8lBCzzv-^AkrMsiWkk^iy>Shs~b`V{nUHy2W(*1O|^-$O`Z;fj4CW0}5&y
z(`LHa3=^l9dtQ*>mlY%HESRom-%t!Dl5;jKS+$ulDX@f^#JImi#cO5=Zi#UDvPQT(
zxvQs!4OQ22rRI-#F(g>8($q`bk62yM4Fzqr1JrY!R*M~oYhqUGHi6}L1^e1cOKy3w
z8YXJXGe1;6FozZ3(J8wq9jN(xC*e7BT7H*xvVND9L!4ACzsm}RL!{?ky~pW%tc=%G
zE8PCu`;CIj(_C@>V{NMgFP?4tD6ronwk0nZ&)^Ix-98Guy_Lt{@xTMV)XIy?AhoqE
zj~Z}-sfGZ_#+?I;a#9<TliH&3r1pTNHU!v`T6*;%HG;eC9Jso<>L4XTI~I_@?u9;(
zz>WnZhn(lvWH8_6tsS_oWiT8_CVt0f6x=6It8q_N?lJ?!I`h@pU_@b#2&6DiWJGO_
z2qX_rjF$m%@7J7X`xp4Vhi!?*QQc}}l|63_Ngi6_=*Q-0*fhc5dsymwSn4}@bRH+(
zyigEuEekjTIL=g6V8~%annO-~$rJuH)wD0QG!Hz)blWt*Os6}GCQV>K=&bW#=B!DK
zr;Mn0%?!afb%vKOYlQTYbAWO`NYY<&dN3rIyMX*6yX5ph@gwn9)`4z)W@SHf*@m7u
zTVt`~Zb#`kaP$Rj9Q{Z$W$x(;i`)*Ncu-3)j*EV_j;~5w_gkN{n!okg#-ZPdV!lzZ
z6j#I6U46-zV}FT_<0<>0N@C@?j}lPSwX$`p*lJ^0ea)6`vI3!OBg)G5js9a6mE7+N
zqTj(>B%e{o1yS76N$<|TF8lo@S9I^BPAK)$TWn~n7Nr8L<r>75;vRPHuMNbc<x5lD
zFEkEV{;;-w$#be(6*ipWN!=+W*<+x*ZgnMF9F*UQlAVm;zetz;s^M|&>sJ`RBz-TZ
zZT<`*3gTc8w}~}#qt=YO_1LNK*5fh1d4DMB?qq<+%&~nPc%oF<MWWtd^hh8Af4>+p
zPH?V*EwZ3B;Af_)1J`ZwRckQX%!1Z{twGawk^Upk%b8)B0xk@yIMoHR>Mcq(abQw$
z=OmC+G8*15Z!wMC!@0;ZNS01a$$Fnw7qi@)4=VbORuZ~jK^=Ee5qHw#ei8g!(yb5R
z<EH8WJ|UG~AB>(3#JK)jbm%umDFgptsw$8$JxV9KuM=fN827Qfw)((Hd&M#Cl_PjL
zTj)aBEZ^oq&(c2zZ@66Ss8ou1JxV9cD<!)McD)5$&wy)~stR1wRCVB5Qu#J&V4}a!
zW|Gc5aC=i#fjgM04*Z%_`R)hnDAyV19yrr{Re|>|=8MtGfhc5Run<1ogIM4_I^^!O
zfjIPwo>6e0Jb$=EKCYB>YkS&13to2N?)ku-U&I|G&R|KmLVmDq&I*ZnOI{%>$eZgi
z@T*egPmT_jHZa2)u+=c#A28fl!1ZOFPYe1&4ZDi#YCUGpCDaOU$+fO#Dc6CmDW@MA
zA!Q15D+SnUxJ<Q<EUI<JJAQxrhoqYc;HOggnPBwaKm-nW*Zc59Mw?6PJOZ~~jL2w*
zKm_ix7?IKLfe8H8VnjNIq__u^vzzqm7HQJok&e1rk719D{bX+g#`c*GJ~Fm*t-y>X
z7xo(;NNSi9YPpqKXb|0Swb(K2k+Glbw<2TvOa~ts+quLsV=|lyNGADbF*Q6BYPp+Q
zSQR*Twb(IoLB@W%mA=-9?K2&GWNhaW$BY%|R6sJxuZ0?347JRn7ET46yISlRxgcXd
z*>8Qu_L&YoGPZMxW5#LcR6sJxuZ44A9i3G!-~QA>Jmko?{7HX_qzeMvLalI5KY)Xz
z@^Kkm7l^n;;{F<QUjuGsRzra}%-q)+jDq{*Q-3?j$6@BH<0!$SO;rY7Y^vmXi=(<I
z?z<m%cdz&wjE4mM9+{r;2|?fFQ#bNws`~~>Hx(0#rsBA_{ZyPQ>A3TX_Iu*~Lh&89
zROENo0`GUOq?=;kAe)vda9gST6f+tUh?IuJ{Xfio4T!a$Pe%KiuNv?GQ?&z$=xqsx
zd|kmlkj&faQcn7ziI~$?I)o5N(mqf*x>oOWY{4x@N$Kohy{H2xnyL!CL@M8EMpqiK
z4!mzMB8i#Q(XGs|2E5Qz9YDhPzB2l?5o<t#<~%U|n%MhD=5;^iq}`7>Io&70-zb#p
z{$^tfx<BX*zt9hpbPFB$vZ;mwr@ragzWa<8Nt^Qrhqy1BuNv@uQ&oXS$dP-*HnXee
zHvJkXh~y`LQHYzoawcwv1*rf}HPr~<>57~EPA!-q?qS!AE(Rgu2wO=4M5KG}SMz|!
zS;XN$9A*WzHy8!?!(;bD<%5*7rwrh;b*!g*<d!`}dP8H{nsLFsRq6_k>6(0DkA4H&
z8efxgH|xWo26%{c+1KTqRC4?z+su8O?rfz%DsBmmWUswP9-ozLJr?^R?Ue%eSp3A?
z)x@D1=XV@jVto|+*s<6Tl@AZx!k8@3Nr8J~TfwQ;|8;-z>>%k*HQ;fk8U`Go4*F9q
z&N1~>!`CV1Ybfw%rm6zhl>6?b3F8|KT4ScKt<snkVm@X8I)KlbstP2G`)pW#%=Dwz
zTgnT8vb6^OR)_%HUn=+G?rjZ9y-Ld7Zppj*kbylKB=mmEk@3wVai52Yfv+X4RXD$t
zjpG)sn_r1TCar5V&H>Ix%iwpBIJDaNEnJTaU-Rp+k8Ip}1g<Jo{^G;1%?xY6R>O1!
z%~Hg_O1g-^m!-;&h~d*_SOc~irV*#e;6^j718-YmL=3Mo!y2&FFpW4;1}B?g9eCOj
zBVst#3~Rtv!!+WUSN%LrmULYOerl>Ju-g)oNPX4t^||>P25j}U^t`&2c5LA69dkAu
zxKOI@rHO3~25r`i<cj!|`0tsk<P}OBt+zY>CzdwZX1xYMsib+NEjxmS$SY>AtK1jS
zOl%&F&&{}B+5SXStD%&<1{<WZcC_;9z+p?ApT0WUFBk&9vP8p+^tGioNxDS>yw6mf
zz{jM@KO6CNzgTXQxuNJq*DQ5xo@Db)cm}UY=^o1i-!)bH{|J`!WZtoQ3$88M^ac$%
z3t)D&*e>UbxKgWnYE{QIa<IUmlFft|d`C+6i4x$^rfNS~u*+1HYXt9<%q?%Q4r1rN
zX>4L6wRB1mO~jUN4a9a%W%LNFs<ER0d85HE6GmST#K?sWS20Qrh;`<x)?gHT)yy~o
zB;&da>}T%Fz>Q2*;TbnE+`0mWaFr;E4T+JR>EQl4>V9C(Wnb^tKtZV9nY#Z8r2$D{
zc{k5H9_0P)FL|Kk5J^QdaisL8NKTOaSpk3lgS}~o<Pgc>lIB?84e39U{7iD4a?JGO
z`O<$Z`CrKu3!3_euX?+uBo|8lOR{Z{Ki)@jJ;|*k<1Aj4-CL4_#M`-mUleDpC{FBW
z&jNq@XgM7!dFO6E!#R?1zN5A5ekb{ic*_s=%<oEeN#3@X*Z1Dr%Rb-o@~e_Rlss3`
z9}WLLEC26HeiX$EOpo6Grk9<&dKt%w`L7T5nr^#$IYRQKJ^lEqeZ2h6zFz)%KQD)V
z+spW0{CzaoA6X=c|EJ~eHObh1k>anhhd<I!azn|Of4KA$CC`*RyMX_D>0g(8Px2oH
z{6Xr&0g^SzA(C-E7f64H<c8|o9+ENtIra1JlJh11BN_8I-QR1rmK-E`pk&NPf4Gj1
zmOQqAkN&4RezxRA1^fr4|DEI<$=3_`t7zS<CD~7M=YsWw{vaK1mn>R;!*srlmpo1K
zY{|GkD`*{VD!HZP&IRjp{(;^D`{UfL{rJ%XV$XhjhScXs{#<gZ<VBLdmW;)pq~Oi(
zS2TW0a-n2j-9Tw*qKLOu0e@I;Z+fKU_a!Gunqz_P%X_fA<QkF#B{!AaK{B@g*(zT1
zf#gS$izHX<>yHnT+*{Z2-$};)metRF^7o?TYm%|QZ%SX0?2sH%z%TOqZUKMh>OSIQ
zk}pcWEE(r>)EZuMw&WDaizH+I0`zP8Bg;uHFB$V!k^U=^gCut-;E$DloaCvJlO(T@
zyjn7jcUb}Nt^)pd*YX~IvW}P2*7b73^}IYy@={5!4gdC)-RhESNp2_^m>v;lx{l-b
z?gIb66YsB*uSmWr8T&8dja6O8OP&<fxvk<KAbGqbdA(4OAN-?q{6~>}oZkc~ek{qp
zb!kl0_?T`UjFr?^&XuNX9Ge~9!)uO|JX7*K$(a8{FRyu9a-rlWk}-dI?OU5mepPb&
zg8i(jeQK=aNs>P)*uS2W{vVQyB>z*u@3w-^aDB-QB{z|b^Is_aDl7UUYf7#s8S{@{
z$!pG&JYVuc$x9`#l#K0H*S@=f<Uq;IBxC+}wNH(fJVtVo<WD4jE*aae*VAh@lsrhX
zB6*19B+2=bgEZemC6ACiUh*8tI39kkkso-o3;466xOMS}i`||D>uDe950pGe@-WHo
zNRE+=^Zk|dGbHbooL#`LXuWhw4wIZLIaljuVZr*jMZ5))?@4|j`LX2k1@`|?0n6$B
zqL<_f1@{|!YG3%4WLff%g8kxCeZXx+&C4p18%W0en<d3J6@L%O5e4}iuD%{6d937k
z$u7y$CF6MO_VJqjlAB3xDfv~&vSe&ORQfTJ$4Z`5z@H@j`H~k&-d(^S(A`JeL~?V<
zL6SR49w-^-x3A{q2+7fs#}~}kWa+PwyiW2a$=fAoO2+YaP#*hAKBswJSTNrc#k)ZA
zQpqbNWB&`ao>q{*zLNb4{11};+mZ)Lwo4u+IZ`r-C;bZANBT<kE7*V7=f17u2THa}
z9ws?bGLFZ-a<<m%6v@jA)-U_a<2wGN<TH{lNG_0!<IRxbPRW^)vty#h_iA1qk?f`G
z{=kCk|2XL<NuDk_rGQVL*HwQuko-nLziyWPUdj6;|6af^>pFjg<TtfHc1Xr$KX8xN
zJS{o@UO(>j+nDLc(;xKmH<AxXJ|_8;<ew#DFUxB8*8=;sp79>9lx%z3kB^p&<H6hP
zPyWaiZ+VH`p6~eac*)ql-(S6EL&=RK4@17|kB^j$?N5E)YtE27OY#!Qm|vUkHQ$x|
zzT|O|{%H93M(OXBd{A<ZWGVV@<||$?@l`KRm;AZpY3jo+1@+t}-XoHKl>C!q6s~mP
zYhH7`<ZY67Nyhv)r2ka%Gs)#%kC}eFxAX@~)+9$2@b`Pe+Z`%7LUOcZ9Od*kz2-g1
z&9#15M=>AXv<3di1CrRq{K49gW~$$VxAKe$k}>~G>CctCNb+*Y>m+ZMoF(~~<Q&Pz
zC7+YrQ_qd!c!S^bn!O~;k|QKz{ut@6lDt9kjskw)_q~U;B>PM5D;fL0T>6IObjcee
zZ<D-3@=nQFlCi%xKk%A&CEu6)NHXRhv(RhCN**V9qU1QqYb0a){<<NZ^^rd^Tk=WC
z^2c6(yJV4lMSg}#PM0j=@2KOuNbV{*S+dCf%gSqO$!#RRCK<;YBmMo7)Hg@tF-xg$
zfq3hP_n_qC1^wvziO=90k|QPWkc{)|^G~nYQ1WY%mr5?z$KQzel8o(_>+X-QBl#2Y
zE-K)6>*@K|N>0}s!*QIGWItc>XZoA6S0zUmykMDC;BO20!G6O6`&XCIzFUF)eCgki
zTqxPLqOZG~<hqh^KhKi>T**r$XBY6_k$#cnza{@$z+bqs&*R^c|B?LWDqbJwGfVsM
z2|CU`%ul$+{Ey^jk>qE%)$51lC0CJ*?N5;66iJ?EP1kr#<WFi7DyOuCcsxhn7CU2l
zu(k5oMRIpZUhhWq(pS5C&DSN{B@dB2Uh*W#Qzg%kjQzdb!)xA<d`ohn<eJO*<LgOo
zAi0@j?61G>gXeKStk(hE3tkVLDc%&x3nd$p*GgV58OK{qe%F=kC%KvAmXiBQ{%`Gf
zF0dabJ+JpCYkX+|f0AAY{6%uU<a?5Fes}A2!i*LDk@6~D9wHg@Hx_RT$z3J)l#KcN
zOMjqbS+XuULh>ld*q*%BS=k@yFF9E<=I^?a*BmH0TynHz%zsgS-je)C@;?RszoWh!
zCHX_i<0Z#So+){m<W-Wtl)O<g&L`&GA>RE3{3G-})TxqZNM0lv`~Q{n_ekC+`KJQ@
z?yGqZ2T4{X?T<5~0PpMg>Z|($Yf5e^8PQ9Bl%DsS-qiU00{(e&aGB&)lD~`{Yy76<
z`;t5tTtoXM&*9j2kC*=Bg8g)!_PO!ezh+6kDH*4+M^CTWTXG-C10-Yqf6!|`;`z+l
z1^d%p+6VTN{I+DfB!5zVsK(!w94&dYB>PO9&nr5<P;!yv=aOscIbT1?fs*la$GxSG
z{m+yBb;(V%Pkp6ezq(lZA8FruRdV%${o^w6@0Pqr@?OaYBp;M~Sn|)3alXqb-nx=2
zD{fKzP8}aDdAa0OlCl32r9WA+OY-yr{(R}*mi$EWUy}co>|U_{jnqE(3(1D$wUTju
zU0;y@p7<Y2uA_bIO9lJcq`p4lU6QYBKiNzB!CPzi<L9pF<)LeN`F%-03jeMlyLBYj
zlPubgD)Ku_@+3*(1<xKms62ls`MBg<$(Ucn+h28#Q+=;Rb^b<qyd?RKWbFTY+Q+{y
zd4lAR3-<Siq@N@Cl;rc0<nwdo6UXbRyw{N&Ai1ez%)dl=-?WVNw9C&B$sb7`U*Nxp
z$2ux&{=XabnRP{9w<=gqmn-fJN#+UrxZWX(H(v5I$ulKm{w&4)gXCPvze>I+IbSli
zZ<pf#DeXMK<0{U!J;nq~F^Fzc1(;&MLUK0{5H`i8S%3l4ypp9=!79tHWLu_*ZcMRE
zHC@!0&_oHnh~R`0AfkjCK$HNXMSOwakOcmB&U?RG#yVg4|9`Jby7xTinRn*QnVB=E
z?5=&x@)(xwk@zIbCxi)Ew)^IDIZtSZ9q<l#4}2It4a2bCp#KB@(|jC9w}U&u5;zft
z@t#FLh2w1(?2bA9jzixIPJxHO!{L!I%<s48&%qbqoAA%j&TGQ-#hl0N5S-VHV!0IV
z4a4-6=yh-oJRe>Fm%yK!{`46Cb<8tvg7?FRW9A>G_pttH_y_nhd<}->o54K7?ngh&
z@=GxE&qA+;_MF%PmQRI?;q`DC4C75@-Z2YS!&(^n?L6vR<_8_j0~W*3UxdCb90^Nf
z{J%$k8-5Hwjq#t!as6s|E$oUp-rM=p_8gB#!5-*1E*Haccy!G1dg^~kAJ)edgactU
zOu;Rfci%=o-;n-wB5Z~8;Agbs6*293p|v~qS0#KKz6(Ew6eEja=r$iMXFgR4vqs)5
zLBARP6RsPxKbBB`m%}UJbuf%?=ap5=FNO_Q$1boDUJbw6RM!`8rYz+{4ijM`{Jnkn
zA;{3;olm?aLHxk(EWb6#Z(V5lhyGK@_kQ>gd_1N+w%wO9Ke-Cp=PMp!`B7-|8+%@}
zh~xG_(B>CMv3wVN0B*-~b2DLB{xbCa;I#kZUq-pCoHgV#56&U|JQ(KpHoo`ZM{o<~
zGq;n@+J!xrIDvLBgnG4h5XSE#{daIh5HIwPBwu?T^fubZGtiN*m18fK4}<G(p%EKl
z7~kSONW8~`_+h*-z2(0u`K=B&grR?1%5e;w^<T>OAGUuk^RaNdFC?Ekq4k3X`b8^z
z7KY_1VxDaA|9|5RBi`n4C%7y82JRCxzx)U5S7H6?aBa9Q+yD-TTf%Vrwng6+j)oK9
zUNEjaQz=g^+>UzO6^@2e;OX!h7?x)_abAQk!#)`L52AdH(Du)=nD%8p+n?sM_7TQE
zi?}up*|=`~!uoaC53C#(_bbX1*Y0dwu;ap%nDO@t$}@y<A<X~h=J$R~{og|TU&Gc-
zv_>w1Vg0O!zBL>Pe;MPy3jHQ{E4&Nd3m=4Ge$S(S1)rr}KZ)7j=Ck^;`U%t7{t5H5
z<G|I__YLq?82W9$9moEg4eMg|=g9=P6kZLNg@IYVh56Y-@b~a77$z%Yo^~y~0p1Gl
zfF*X_GYIey>wDo_@I4sV-7A4_J?4dW{uTOv$^7tt;7raF?0h8jPsevCJRBbXGt)nZ
z??d=0wEV;Tc4Gdy7u*L<gQ0&l&J!lXrSMwln2+uT!}NDC?|crv2w#C8!cSqC{!7z2
zUsw$m!42VX7^a`ab&(UHeXhek&k_3V^CUwUpNGQonDKgF^aJ3*umT<qkAq=;t1>RF
z0f)j;82bOhIPpE~XPj6OGhX!4um1$?^BEtr{0aO5P9{!$OuQk?m$re^U=0k*`#Jhg
za24X(yeah0VI1#<{jiwvCI!!m8Glw`ezg%?QA`e7hdJr;j$0}x!}GV&<xY4h?1o{K
zLr6CVreGSL2XBU9`k#oqO0lk41Fi#A&HaC8TYdi_{0x2pzl7hwTuOa+?g-@~xENjm
zuij4AUk7i3_rWk;`;Mwy2CstG!_Yrvq$(fm#F|mcQW)nyf^@TB4GjGYc2?zdxDa;2
zrO@r7zDn|44xfXs#+2vo|4aWb$Y)JB3~mR*^1oA}$_n@&xXP}fQ<sa-H-#hMjxqi#
z2y+d*0}kSNTM3_rc07KEW$am4I(r;ueSG#U8T+zqakB||vn|(e%iuT|_dE%|;ozRb
zw*sy+IE<{z523#R{{-KT@xK)K)?8KN6vHr=SD9zL1MTxXAG7=g{1*NT4&gW*#`}Mb
zvu;d0yN>!6>$hG*bKDDt`G16O1^gG>Xh`VP<@1Ph1-uI09uq&wJYx>L4&DUAT$<6-
z(4I%JbfJHZwN%*-?gV#*p??l~8g@Z@PUOwCHHFPDHd|Mh?S5lF*Ui4=I?S3}KiLb0
z`7I*et?+he`Gx-Op{l$9Uxu&4(4S_$bSbp!f6G`7{X;1C`fwO5hN1sB^tte4czTTA
z>SKHAV`o?zQ$K^K&z_ii4a>6{zGAo&EQ6und^-fb(^y^zE&u<P{`&vopT+vQZ~?UZ
z!uY+^%bW0B_(M#6P2_sfe((U8f?@nt^v7Vo`Iw&`2#<=Huhui~oC_DgE*R!_Gy0dX
zn0aO?JPDo)!}Mj$8#~}k=8u)IpLyWFW9EZ>q}vgHJ-+$yeQ0sQ{LOa`zD2MbhJMqZ
zVEu2Q<rDfhWS+ViOu&<2=-(6lP<RmY%C4CC<xBX6v3@G^&6zRtS@TT_;`YYGw>Y)L
zYk&)5;-6QnTXZ#Cu`OH3{F9|Dj@eq@&W3ex0Xzeq0~f*zVKxwN{$JxPCEnHWrkMD{
z*pBVtNH{fS`{trQ23NqfV&>aL+v|pG3AcgeFx=jK&@X^JuorH&gQnO4hUw>^r{R2f
z5<D564#V`*I1iW!=Z#dyA{hG3SC79Ho(mVlOJJDZ(zUSuX82T$zj$YjPy)-~K`@Lz
z9sN@H2K)dXwu`2i1;g}PjZ&oyzFDTreK7R@2H#WgCAb#n1(V>OumaA6v*3v^j6WHD
ze|R9YIA^hZ5e(DE<zwkW|5e0!5IzEz$Hf1*R3of_|AIfkF#d+r<0x1P$Hvre$7qdk
z5nKZAgkk({^l#yaG3qFRN5k1LOy4_JmG|I>(2Wb7y1XI!aj+A1!7t$VFpRSGcvVKi
zQLqf|4kyF?;GytHI17gH!*u35EyjQE1dZ?;_yl|gz5ri^Z^Dn@C-7?+mS?w#svHHE
zPtxW0;m7cAaOiHjem8hLTm-}Tvxqx_^dn&@jPs{RHxG8g&>#9P!FOkj|6cSb;4|=r
z7{B>`$NKN!s+4~S+#qIqEM1sSe@uSEi1TynYvy#Vk!8>ws>{P+SYP*5sPZa&8-4&o
z|0;*6QUr_PwYGe?u0Ie~z*(?<rmoMxF#h&2>1U#c{`<(c2lfW#c#m}LGc@J2qm*aB
z#qbJvH|2T+o^Z7K+hCagbkdy!Plpyi^j}ChE`v9~yI|-y-_@-DJ)C-kI{V0PDCJ!r
zZVzvy+>gYR|C5;X!%4qY5HBoW6Xlo(Z-%$Q(0>p51Mo5URE&SuBQ?Uq(6+0BavcG!
zU7f~uE(*5$nV9Y0h4f*(W6`UE_~G_EK>aO;&p_KRq5pB>tx9>UU0JzbMt?V^yi1SO
zh@ZjE<8-+Tz69TfVgBa3i}m*g=|cbW)vCM(--VyS(7#QMDih#d@IV;)&p_{lm&5KD
z|6kE3CN)xLgYsI~eS$7O2E+XJBi+$3LpqBS`WNE699{)`VCcWNR+U@eZLk}L{#Vfd
z0{;s8WBlKt53SQk>%n0#jK2kXDI5!TkMSRmo`S9Lq!@n(`cileyeY=N4E<5~B>a7h
z|3&n7;a}h<@N@VD{2LrnAJ&8}4@KVs?f^^RXjl%zD7(;JtlfN0JNq8i&(RbuFidal
z@_GC(L5mamA0*Dx@Ok*hnE2;5YJ^MRRq%Qk#^1k5mBZmNFabmVCe5mB3wMIM!qERI
z`rqLX@TVC6<1HHDIoJ#T1jG3APE_SgxCkzWp+A#R<uSMd4rx{WaF~E$`s>kegO9<d
zV*KX2gZ14p>7GUZBYX}18GZo6@=R`1WhOihHo(xo0R0kp1-u5{0efJW{#o?*;D_*=
z82@Q=HNq0Ov|X3GU>JXcd8&+prEn~q2={<t`k$LF8I#`h6IlPp`I<vN4D&Nz3;y}=
z%9!{a3pB#na0$E=UIDLxVSZgFsd5**2fheH|5xZ^Pu4Xj!*k%2Q&c|yhUtI8w<_z`
zgqChP%S&R?Z-hP`PJ(;J_$QsJC0OHh<+Eof%g<C6ou!-!{{z=JTlMh2#XFd|N5bP_
z=)bN*mCvB%SNt>cGhYe*GHB%u^GmW_C&2meY#92tW;-XrCU{EB_P3v-5f;J=;DvAr
zyck{%uYgy>`(ap~KJ>5Q3i$6Bzgwsg)`OeDtza16Ey52sgImGSUwpnQJHg%IRJfA=
z0#$Z{d&6lk^p{?!%Kq>Wco+=*_I;=JeRtj5Z+`=Ze)~Mu;K9142<`?$|9{Yjtg35D
z;ju9Ezw`@LK7jx2^BR*@Q~wlL0T;k9{?+KWz+U)$jDP&<8lfE8_u0*1IgD@L=XoaU
z?fWFokMXa*hDKN$t_SUV7sL4WT*Ld+>)#<iMi$!L$<*@_cqzOorv4v8e;K|8KZ^11
z#D3ZfPKJlTut4R+nF)`F_Px5HKgIfm@IrVo4E^_`$9?`T^xNm~ek9!>$~`ou{Qo9^
zJr~n8NQG_~#<%aEJeK}spOZX=W&51uc`^NMQ}*u`unx|JVSa<z4tuU;3zoNmp?@0s
z3D7=g7`Oj2_<jdpf-a`M?E4Q-!}r;L@t;hb#qbt*2fQ0T1jFs=LmxzcE`s*G3ZdV=
zH?s`i*#F{hX8nEeP5O1wkT9|?+xI2h!TM)m5B)q$W$Qo2_bL1mhW<F;1mf=r?fY57
z^c%Cj1dfK5KJ?r7w*Cs=ui*nQ^shkQZcSZt%Ua4oYllu<w(s+O4BwORPcTgN1^U<U
z8yFXV2IaUA-^DO2*VQrQTOI#Kung`E!}4v4zB#n-&$j26LjPFu-5(wgYhWEr!7zOT
zLJD$P<81nUG5Tfj0r)U{96kd>%w(LK0~f$WG2`DK(O-cd!oSA&!|&I%&x`jkK0X7V
zhwsA=AwNCo{?2k(e)}F_`~G12zTWbf@w9>Q>Lh62^KQq}F#b%&g|pzf@B$e6m!ZD~
z?fZiN9OF+h-q`bgm5d9inDOC8{4YWKT(zYS%kvg-zJULP|Bi`opKD%+_Pqfd28&@_
zd$;fBUZ3{73EUixfTLho-hZL5H&oYb3^#+@!X06lz7%~wcp$8RGvV<tOn(*nXV5<1
zymXz=smovDTZQ#&!6LXLw9i?GQKl8Cax83yC&JMG1A5VVy5>Mw1w;RL>#MTH2Fh*V
zb};ncxUniX!`t8=Vdy`56ICvR%ix_b^xuR27<>x;A;y2nW*T8Bw9oBzvHWXzHw^PT
zb#qn1=fSQ(5B<AssfvBRU_X`*hoOJ#tyLKVC&Jxf=s$HERhGiTM(FY!82T^XR+W)~
z?|GKLgTuB{-!^bMoB=yv82<(0zXIQYAHdLGJ5LAV44el~h6~~O@DjKbUIVX(Vf<n9
zHU5xx<wST4tcUl(hv2g?jJG-Q>fm&I7BBQaith>d3VZ{Gek;#OKeIfyFVO9J5IzB)
zhGG0KPE!B(@JBfKWYt6e&YXx$fP2Czc7hTls6S2PtbnVXuFK_TDKqdn7$kRnG3hrX
z&TzOR4AY-=rsi`iyd6FSL%)@0G3B`wUKdk7(;s2|lQ3?3tR6Zzk$V<~^>P?-DxsC@
z&n*89hUGt!cxgBfT7IG5^8Xay=WqoK{ri*e0q|gG<qiFo?{&npda>;Y{X@^u{Z$I<
z;ce%t9{N-K0K+2q0xXX?LH-Bp*Ju4kaF-bWx)*7_o55}14lpdwRP-ZY7wnGlPh70=
z_kjn(3K+)U@Dl0=j)S|w(7(y0>K_kxhvhKz?~7gqYvG(2|I*7e{&M&Xd;x~>KSST}
za!t1h+#H7fZuH?-sJ|Qbz|h~gRDFx!Meq`MHM|*y=})*))1L(w!V6*O-{UIv9|@0v
z30MakVVHi~Yc>5O_)9n$hW@*6Q2%}KNw^$_{^d8T|2g;qd>Ot0zk-eYfXRt)9y}R#
z!1G|3-+SmEz`wu^Zq;&x{-x-*!*}4<G5-60rEwmBkHO_IjDPrT>OUIZ2!91be<?rQ
z(s{e4`!_7+i^(eB>GnlsL4c{GuZ3HZz7h^0T^O%2CSE=1n&2t$To`2UE<?Wx{u<sN
z<L|yxxAQG{%w4*?6i&TcmrsOYe!chU`j6nT_v>;BhW_s!)b&FjQmzMw!D6@_4AbxN
zu%<f>R>4}>3^OoHe>3`W_#Au*z7F4kVfv3B*ZjYR-@t#u(0^2q`j3Tmun~s-tN1|U
zU2u!1HT^blJ2(oK!SOJRHyM3@I33Q2@h?Na9o`K;it%s#J1yV#a15LX4}^!pBjM37
zEbki6X}pc#_HZH${eO5t{U5-;z|Y|-FY5Z$VVJ%MeS5eQ+!aoMd%!S#7y9Gy&0fuK
z(96ou|0BL%yrk=g!j0gjaAz2%pNoD0TmmnL*TI`$nEp}pm*MO19rzLa42J1f`J<M5
z7%Ya{!7?}=hUqUyzYg9AAA}v$UpEZX{|nzQSYHG;it$fEpAHX)Ghqt0!7#s$S9N=T
z3sZm6<#rhQ7vsAeUj2WW{#*RJy{7q8l8@yZ<~JDMns8nCbJLq|Z_@1tkAq=;9hB!H
zxD;LkLx1n<x*hMq&)}CZ^t(6JzX{wDZUaMq#oOwygUv7vLx1WW^)G;D!6h*Ccl}xY
z_rOQtlQ8rbzpwrhI1%mvLw`jd<%i8M4MTr#oBBIGP}=WETvie~b@?J>yMBKK%l8ay
zcm3%6Oo&@=kO~{YFxl~c(Q;(q0(c$_{h{vye7DB<Z%6Ne&%oDX{GsnHe1DJe|Mn9t
z|J(2b*bg86RM)=_!|e&v{hf3}WBlu*?*z+WIkbFMupH(WrrQVKtQh~O&$RrdupI6W
z!}x7qsDBB(99|7W|NZDsz%StUF@Ezs%lh5E)cp2?VSMwwg1-cxr3?M$`!oJ+@LRgj
zpZcgUf9prj#Pp|f0-Oey!Qa3TJtok9?03xV`!H<v&*ES=$W7Gp7WfCdRosjL^}()n
zKz&uWbU^(VZlL4fV7HpHA6U)Lc(7aDm9Cqw==;HLi0dCvU&D0{aN}XHThk3G9w^RQ
zu6Kul^tE08fcj83&=<!HcI!C%A+-ExgZ;PBe!X%<40c7XctCwU*Z0HV{1DOm!ESw5
zYEMw)tsU$(aHYwWue=X-8@h=D>KnQ80ribt(EwNQ2fIyNQPV*2hdGxTNFVO{(gW$6
z=9N14cCZ`xuE$_E@ZF8UZi`&vymy1$z;`zWyMaFyKG+rKrOv$_?6%G=@Xq(ERoyo~
zg)4mXTgC79hjdLfyUmv{(nqQOONASc-u<WwgXypb$l@Sr4}E-N_&;bahnmhW8C`<^
zc=SqsY4#-aTGROjq+iRjf6bA<C_Z<Xt=akKxFdax7TolcOdqfMF0$-jXUm`W7Zb<g
zFEX9-nBU*nAE@5065ZF2{ZQ3kW!b;F<!_K1?iRLc`?34GzPfzAm9wc}ZXEv(e+T|m
zW!b-8lE0{&2dcjt|DVt+tB6Cry%Xuf-TWZV-_cV+dHlpBD$kU{_<kbeb$5*F>yz(r
z^ge!x%JgFNV#+f{^7F49Mfde%KkT)$%5DOB|CcH(M?W}<Gu$l=%6U9`SD>GWzAVts
zM!ytY7Ngh2=$+_R&)1@#9Ow^=?#o~KH%)&kah^r*X9oBVyWtJ#>fYb`tr|bZ@4o=b
zw}-QW_#cTrP`mn?_%?yHIIBp1^6}lTv}4(G=^LPTFH!w>3b!+QUzZA#(f2~{Jzs^d
zDd*wnr8lYmG}~2=-gm$1mhUO(J$I}AiIm&FE=BLYNA<0V(~Vw40ef_{dltR_4i)VB
zMIU<kGS%%1EB}e!`;6-U)NI{)l26p$=Blp$o%8ue`vrY#{J#4~^*K+SJn!HpqZgq+
zM4$@MqyG4vyph-a#5oRsZ@U^TzW-siDE<P~kHx<jy%K$Q>g`tau9MVn`jhB=Cl~5(
zpxcSfuEhT;Mjt8--j}ENRE@I}{>{-V(0`9U!ThJG|FvJ}iha@D*{a{AaQ=bQL2e`0
zcfyFsSW28E{_b<t_$J#s7rpa5)jz|3CVIyr)$N4rYV=~-?cMl)gWhw2`kzJj532g@
z?YvNRhB5apdKdbd`2UXHjXsug`Uh8ioc@b6j{RVje~{JdMV+driL)JgC;A2G<I#)h
zr)Q!cB)YG+;@T0B(uqC`e~0f-@_HV<1-;@j)!#rr7rpdy)vuxaS4Q#WxcoP181k|i
z$qo2>xk0oo{s++Al^Vy|`76Y6{Tj!9P~$`VJ@`MOJl~;rU!`#_L0?@S!1DE0akc7;
z(TAh=p}!;h!@owM_jIY>`sv>2z3A(z-5rJA!8pmZ#x<f>{zl_iy`6$y{($P%PA)>P
zK(}^sgT+BVmwf$$t5G{a--r5KZt)pNzC-s9q<Me&Bbx6b;(UePi+&cm|3NbEuY6Sf
zzCZidFe$LtQ%|aH&mZlK-if}U+MR#k-ut`Jf1*6cnf?^<@%snkyuSxsW(LvAKY;J`
zUi5XfS-6|f`<81Q^FM^%kG=tM{%CRhfk0koDxCj9Js-dF4=TuF^!gq>g>L(0s7$oH
zzXRRRJN;`r^gi_MrCs{h?xOqgyoY`<Ol7wp{vs|+TYK|gMC{`iqtBxL{e#H9|CZN}
zh$7JKo&O;eulLZeQ`Gahq7QW3UqXC4(Y6OlZ$>ZrSnFXk%6VNBf4J-5n~-ENdfkJ*
z5S?PW2Z&=Q?xXR)jQ@hb|AFWOmGd*=^c}1L?2PDm*%5x8(~;475L@*62ERK*mv=<}
z9=#O31l@m7BiiqQ?tjS6>z(MkP@nz_8GXL<$=9}b8hUG>A5NT}>6+m|#Hqtyj^F07
z8T1{4IH#Z&quciSFLw0h=?wHG=nDh=2GIwq=Q~9A+v})js>j`hULNRAp?3!Q8>0L2
z3?W}O*L@P{E1zEvmHp`R?G54#kM{4%=jjtgAE^BPi?V&3B08cBU(stSdNKM)^ol6{
za91A8laIz<fqxSID)dhD$>{zIGJU>%==Y+xqIVspg0-KM(R&Y9eRC@49Q6Jfs<)so
zMz1_l^-lCF&3}~YOb6YK=&55=w{qT&-h=*cUG45OoeAT&jH{2Eo>1f7_@6;9s#Jkt
z&iNnKiRxjt>Pv|8k?6iX^w1tUbhYb8?+V)I50O614dXhA^{>J50P;Zl-G7m&k3W_D
zX#K+fP@~r?g8l1%kZGVeqhj>&G5VgO`|Yi~R5xe=+cg!v58d|f5$OF~>9@}%Ct~6!
z@mE}@fvHZ{hF*!TqqK9Epr_Dxr93yFcLn<0=)LG$<9{68U9W=0`2%_>y7}KiuMGU3
zi#||2e<%7NH_SbHqK?}%XSaqN_`Lo|pl^ZxaG;l=KNRTuh(1uh{)dPM(vK3|@5c_l
z8QHEoCDD7(Z>OLqqo=q7vzU52FDCxQ_$&CvWgC~4p;w~Yetgj42m0^PJJ4k@dcBU`
ziT)zx`~tm_69~Gc`yRa)ox_`3b*R=uF?W;>Bz_Tk3cVZMKbY_9t$1V2a3OjbdN=w!
z^nKAwxx$`CKf?UzcTy2`=#`sle1<>Qir#}hjX39^7j35gx6qfO_oE+1{oICL!7q;;
z$3XKKdiU09ybJv$^vdm3xBc~J(FbZ*{(}TjyV{}9{{wm_`qq?lO*!;>e-HW&=v$%p
zquYKgL9g@|zT{=sB_^0YQuWGct#b!he019{$D^0?%ksOhVQuIs4qTTI=PdLheu3V`
z2mixmzWn9rt84b|QS^!u6&@o_uf^F_^&8N?LGMAIN}NsB)$zQC@w^8A_M-cIi^|ma
zTl8`0edzYXB~#G5#;E^v{Kuk~aw7gUy8nT1AHR5<`Y%FXh~ACfitc~-+xtt$tG^We
z4)jX&KXZcNf8cwd_VXP6)Lt6L#{YNFJJ4-B`4+ts-P))B;$>f+u0S7#-i>bK$<F9K
z=+@qLLoY4Y@*Kc+9f00}ZsW$$=)LGRKBUnr_trSp4$njHLqCQ1{)?M^`70-@-^Pu5
z&5u4^SG#A>OF1F7apMj2PV}+F{}R0yy$t<F^di0)-{x-{tf%EE-%m4~OTHt~d-hl1
zM#haj(Nj$P{q;@%I!tswKbhDzB3j1oW}%m&+kB=0eMfY%b^eEbef{(uqKdVXbJ6<)
z{YrF4g_+;~K)jDrgl_HUN%Z1C?-hNZcKa6oRE3u3BpPTRdjFBCUyA-|Oq_4<_cax6
z*E;KKIs4JAoLiu~X7yWpE<rCsPm<u5=pCFWe;n-v87I+G{(`@}teww9??Jcub`rh3
zRsAOrKP|dH-|xFfYq)~=3-EW-aL&|ZZjr^AufqQLZ$R%vw-0FEjb6+rH~&POC(+%>
zD%_3!8hZCBDp>t|hTemIFZr%O?>JTccD-(`4YdBdPb<_%qW5*EUPpu89lgTeD3RB2
zu7@0go??R@L7$CY%8AYtP3HU$DEs!=u|$PKDd!UOK6JZ}a5H-MW$NF9@%BN{2Wq#!
z#ozC5(8$aBMIXAmPIYT<{pdyLyHK9hH`H=gpg*F?+?MD?T`G*mKTdQ%4wTccP2UrL
z7yd`^&p@xdLF4%AgZ^~_dU?0%YqJ3-Me%d@ulpjmbLZl(xKI7JqhF8i?pK}L0PZf+
zA65O|RK$y>KcTvPfxri*Kdt)a_y=vI^;7&i)onknkKTc9U*NDkdgt@%e}?Vd9li2p
z)wvw+rla@2s`@;I^FI{m+fRy)aufA)GJ5e_YP2sF=|t~&U-dVLa|?Rc2P)ht*ERg>
z0rZM5RDX;3FQAwHP4!n9&_6;iTA@0ZN8PvRy+5da6!o^|##;W;|ENBi_)CR;yDHaE
z<8m#I%**kwsk+U(%Fz4K%|8XbXRX3GGtoQOE{u~xuNbQOb6PCdfnL0BVVo<`E7w>3
z9Q=2q_xl@*^0IMhIl9|W_0#FUZ=iQ>rn>#0+83hx@wWUCt(cA|nsY1gcWkSE4r6YO
zO$HtZ))n2?XE77u*NL+Yx*Mf&Y<@dN^eErQG~Xh&Yj^xbCF;L|IQyY@qaTJo!~DCd
z{|NL-^c4EJ=yT9rsrnhdT^o8wnd-mCe=2&#Xw_$-FGBA|PorOkUOGnoPom!-x*xAP
z7_Z9Fe~rH%e+~8Ufan8_xBi2`zMi|sYkb=;FA=|o_%w6(c1)blh*PwO#?k-I{R6!?
z&<D$fcb{)5`X4EOk?4Luc08du?ufn_e)mg_Y}>UXdTLMA_rt$CdJp<!^!=mw@|+Lb
zwFmli{6%|doJ|z&81&M;RX}$2=;eVvAH5>b&k=o~`o9=|CpYSUMR{(t_)|1ThDCP=
zdhx!hk7CFC2EAgc>Sqw=Nzr{fDGsjl{|>zz-Rj|W;`9;cN7~Ovk$;%$;W|$j@%;}K
z`~BE=fac3I&i#m9aggfoDBSA92d;-A(WCY-U5(h?mgwc^Q^|KH^iFh6o836{o(hfd
z1OELjj(^}mUjM^(9clUzs=tBX|M0diPw|neFUEhe=)Qe+zoZqvIsUWocXOcl9{(k#
zAFXlT!hbV*=P{~tS;YAtTK4&NAFDde(fvVmpKmAmO7%vs*YWosuYMc1|BCKrsXmPI
ztUxbLsNR7-WK+$zt5S7_Z?`FWWsT~im`{#E@8m>^!?T-+o?-%i2<6-ty$Ag&^h41r
z=V*MUHLec5xJmUi<(!M&)vUUGA<;t72kKu-@!JF8au|wUcUznfG>+*{qxYcSfdBQF
z`0tzlLyfa5{%>OZ|H5DVQK5ewxxqJ3`8O8b@Ap3YMlwz2;_e^$AGjVQ&s#39Vn<OP
zkAdQsh~Kxj{;xE!T=t1x<3xAzd}jC@=6+H9m7lkqjz4^!b9SV!{9I^T6ldk<GtU=&
zeJM}RS6Yr674CZU@;$X7Y)5;z2fdH-Q$6mfNGEX~`eO7SL|;$F$)0mYL~c9ZUtK!*
z`g!T??Pj8Te;4DY?4szkZRD5v?KQf*KM6*nm*1np0`#$__p5L-`ks-_LLQF6UqSoX
zf^{dL7hR)5IeJS>oYT!eQfusA_^&}Pov(t;H~bGZ`TbIHn^wI2V4wftCa?FMseYRm
zJ&)c|t9mQ(-!*+V&36R*@smi$l!qTh_w`(Ux9%5f)vL*d`+QU9sd*`BHZc8c6)r>H
zCem5RLplE9b+jP1-w#0VxJ1p?t`3WdQ-|MOuKv%+qdCTZrs&0Z@^QWBetYdXWGheI
zw%#wJe(>D#edJroa{^lv?CF?%-ynWh(9ZjalR94m97UYnCE!5q|Ld6et86*2f8!W^
zWTeaWu0@*R>Et_JbYBnsJdbVlFfAs|@%a1LE*b2iSG~o*T9-!=-~aGz)P86<)=uWe
z#P>f;>;3L34Iq~tqSx9x54^n>S$ytO3?8KZYtcJqsc@WJFZM70gSS3@#h2RBc30Wm
zE_#vdcWV#G?p}*?hbl8!u^hdZ3*?i~UqJ79OobI3s9qD@*K>Vv-}bG@PvSg$MI8Ge
z7q>&)kLaD;e|(+oU2QAfuA(b7$T`GX8@=xa6>OZ@GSc%h<n09f9qh+3=zF23<S6D}
zf1{za?%=m;nCl4I&!e09@<^qBZ9Q58RS>6mXVrgF*)>Kw3wh|k-`%F-No=qGL1e!l
zdyiMa=JQvh_gtfXn@`>t6aNYGFIIn-!aa}P!FaVg`s?Twr>k%x`bX&H)Z0Y#0~rS@
z7+0--eU86!T`fPC1KqcgPU1WaDW=`BUDhv#q8II?^|>1Lv$13pwev0&?7Hp<{C$7Z
z;MShUMY?MF{|}6Gsb|`imGe;aejbGUCyA;eorOHKN4m^^h{NfWI}P2{sd)wC$%Uf(
z{<4g5#*RmqMSk_>|Gz!bW!!jE>!Fl-cmlojE!B(B-$XBFoS8zf_amK!JbWAJ@_ZD>
z-+frO>egD$JA!hqBl<w&`Hqn;=i}40AiFEvZZZCYMUReC{4%z+pQ9rGI<EW*Ey!5P
zQ;psg?5`7|IK$jyoL5?XW{5vCcy8o#IS%^v)3HPY)BW7(#CM-*eKO3sOCy~^<Y5{9
zo^}<#VckRMeTQnC%0ar~nV2|l#^_&&?(65XpniUc@vpUwZkK(4?G(zh0eV04ibK#h
zN4F2`+I_JJ=tazj6ZrQ=@BU(yNFkhiI~un!<>7ez<-xqD9zDhRj@|b^6}=)DH_kDC
zpkHYIU>v(D((?+!+dE_Qr-{?M_MpgV$CpiFw(FIcINuP*J}|wZhI2!s_O^0)ifM;#
zeKk(O;(vhEA9sqGr!6H;X-u5`V)SE(-xHiKBt`f0fp8v}#@`vt1J6M33;Nwci_dXk
z3gurM=__yVP3EUxtcRuBbWUhqUqx3uEV^(1mBGB?$(Z=B;_nW|s}G6aH&iQfL-PFw
z|BB%F{)-U<k8j11F4yOS_UymdZ=msTiuuX+RPsF(y_EUY>FCF!+ZO=X{jz4!i}B>+
z6#On||9-d_s65w+zTPUs+>l`Ye|wDoDdHEMskzQ4^Ir7QAm4Xl;(U$2pZ+e@9=-l!
z`gXd*|B1fdc7DGXWj`OfDtfW#e%wy2rTg)B=wl=QaJNrzez!aR{_QpXfACkJ7vH2p
znTB)K=#`VyZ{ufkq?0%gXW;LcsQ%Mfw<yMcGyZOl%d_y`9^-!!e-Fnax}SSpbl)%f
zgX6-7F>$^pPUpp%;TPmPczYjbm@A?^*ztEQ(WB!d{$JqVAktaL!wCGTuT?yOb>q;x
zch~x{`Pg3O=lGJuKV5XcUG98o82-hMpB?#C%Ktw%MqeDGpDAIZ_=`0@;obKmRUd+G
z^>9lRN1nH#A-t%Y;qH!!|2+QG4O+@-3i~d){UFS8^gZQ7(${lkrwZfIzr<h8@#tLi
zz2&^4$d8A#b7c1u{!*@o9LS0_chK#c8T5<wMECjjo~}kNPq>c3?Dq$>L!3wj&5;fp
z`43XRoUTT%Es2vlLzgYiF6f<{huZvVJmo2-o@HaA*S`3>gX7DA=#@9CZ*z9cEObZt
z_tDj^DT+VLbupfoqx&CD_WQl~`Vo<0`}Yju6g8{yO5JR?B+^Nohg<Pi{#6?Sw@=)|
zG5#d=S$>@cUYl625~sUGh1aO(&tu{Y+EMp=c>X?A^k~17Xq@l1P_7^8WR{0r@b~Ya
z<==?y-3L9zdE#W!Oh@l-RsUxAXQB79!_UTlg2g#Yg&)!9qIb5cVD}Nuj&w|UxC(#I
zcPcL1NZEy6$`^q6&(r$X9Wim9DW-l#X!)6DIse1dQN6vZ`o6^JMNf73sLq|EaPP&$
z{|<lGA~mM)50dd@pyThbNSE`Yd1|!d-O(}rUGVoYuAW5vJ<u!1Y56NC|5WszVE#5U
zCjOil{j3;$X^ehHq{}$Q{mPM)=aCryOZe@Ji|qQ(`{;cfe;IDv=c4=mdw(#m`yc#W
zH)_SCsh`0+#ngYKuj4v6udK(vMT~!f=sw@6jGsgB?@65A^Ht#Xm^&cy4|A2ld~z0X
zb_~X!6NppF{<7<e^U>{#k?g+YW#~mT%t{$w{OcCtmj?0g!S5Q?cQgCt8H*FlV|&rN
zo76u;;odht<Adpc72Vg*#30}8B0q`q@Q)aMEjgeJ)L*s|-OpFUac}3yFV{KywEf%l
zkUeAK94&frUODV-hB)Q-s`3veI_>B^7pcA)2|Cb=|DyS>LVaF<-pP2l8~!UIorOHy
z9-}{Hae{gEi|DCff4za;AN2Q6(TkR80r#Ms-=X(#oaM0N{$=r*myV^ZgLiRmo4j({
z+iBbT{k8J<#%v{iKdyFi-Etxcwnr~IUxh=__YvK<pNHtz*1u-pcZ>tp-i|Z<Vhv#P
zibSLnG!Gf#m(xCNzHt_Dx~R{aNpo>boO@#Q=VSEuh~IaI20omM{#10oy)O8i)W7ie
zudD5<M&Z_u=7)J3#M>QW^xY#}=Bvyn|71z4TbgSd>JoM7s-}`^m#Ru<l8Nf3n%NDl
z8CR9bG}JXGQVq=|4ViRRNm+@kZ!H<^=G8Y;*C$$1)h#tiT{XtFx2LMATLrD@s^&~%
zRclh-*CcCIOplhO>iT5$9Pg-_-N@Rymev+g(q-~56)iL-=O@!rl=k*SU9vTiN+;(w
zw6tXsnN|&%s7}mot4*Z5p{lw%neuu1wdv?h^ZW?OC_rOXrWI2|b6qY(pjW3_GCoMP
z{M@Qwc2&lgE+K{YXiBzLdDd37Ry8J)>2yn47L(1Hwsg`Lr8b%Nk)tj9UzZb2Rr7tI
z{4|NymS{`rTN-O5|0*9k(Hy;tid553ll9MQX!W(;oJh7r1#4(-Xl12O<!h@sIX_?W
z4wq@2Gp@9B?r5n~dz<hp8mbx_79?|8O+zNyFIiJ6-Qt@?BH0}1RdvalL}N=;O)hbD
zeM3s>#@AdfedL>$Zjh!R;`q|i#C#t!k(X0WOed>kQ`<xD%7w@!i9!#Qrl5d1e=4p(
z1C>79>gvXp{Ecf(R;6oN<~8RwH<N6xaVNA^)iq>N(t|R&HC}9*Gi_R8<wV(4LHMlR
zl1k>~QIoE!lLjC;Nbeh9Mg81B&m>#hQr2y=dnOw_fA#2Gfg?G$*d*ONQQMME_zKJv
zG@5j>dT!1rO)%5mT&?+ybE&$f=BlQ=7E#^O)Kn$4lr4zV6AP)7boBw+Tm4+w)|fTY
zO@dY@QC8BT2rH>`M`vrwH;}^GOeNE@xlM_dOm%ftW3ITeeKG<z<pilHFC?V#HaZzf
zo0HY84YGs$VAYn_0`L_iOk}F(BqXPX7OMj(lNhC@GcpoqO2&^Zn^2fyu8eY0hC(qH
zCebu!w5yt%mgeD`TWvadVqqB)bF0!asAa34?aABozE@Y()THr9dn)W?GLlFgucSqF
zT&U){UEyArka_)I;}r@~utG^|##ePzRv+8fRCaT+Lau^L%2kiwCR3w2)_RZvWyc<l
za}(Ko+0^W+Y>h~JTv?2|h7O9vn3Rj5<4)dysg1f|l#+^&g5-@*8fJ897$&Oa{KDj=
z$;vAa@Ukf@4f;_rR#K&|3&#hdik?b0G|M4bc0;DjO*#Ci8B?Z~j2$<AKtoQHU72dE
zYIo_DwpM=_u9lHg+GR`i9NC4sAk&T6Rn2vBh~izMb$)uj%T&#kBTZGKWLPibMq@JV
zYFe6;Zm#s2+IBxNN$4CUS)*f4sjEp!R&waBPA8j^&8@DfN@g$BE;+xUwZ27uM!hW~
z)$SS_WMaUm(v(bRq!^8jv;8qVS|fc(HnKHOZcEk3^h1**GnqtlOQN;4-T8?`$+*$u
z$3^Ax@5Z{&>V5T9nfhc#){h%)X~vCp^>WCQxsIq~NR^R-w#sotwpt2M)s%77QjAua
zWXLv%Hz@~~R+(?KHYMbM(VWb<M53l8QP<cqTjnM;tu3-CRc-TSC~8VICR?RiCXAmn
zeqd9gR(5@&DxH@4lA21lyIRRHnW$-NYHF7xc}r2#DX>Z*{CrWy@5G61GRg37GN}e9
ze+hrMhy)q`BkH`sTk4aIDfLQKdm$RpqIXe`jHGCciURs0s(<5mh9+yMi>RG|RZ>g!
z$@x<3l%EaJ{UV#!oS#89C7VjdjxH;8er)sa#<|91vwt(*516tg(F8Kl+R&6N8CN>m
z_EPESGQZyE@3%IZE6W?-NHRicV=Z%&iN<CpBWc2`&3@Y(nls6?EI0cjpxETUpG;P@
zHHw(5DOgUm%uA-*<Phf>O(^o+qYJ!a3YNweEJa7#Y%b#q*6G2ms#Z!X^L5!)-X<Dr
z+cL?LF{NW<lrgQ|w6dI*G)+cd^O<B#SK>;)Zfj_6$-VQ9R3=U6I&8`*MKooT(+joh
zu~%w&Qdy}_8oja3X_HS>J1XQBqmhNh?DWcF__G=5P_p}^jUYyq!FxG|w54oCG?ih6
zw5*&g^U}ORYw_mF@Iw=AHK#u!MaRx;_St!|h1KfN5P4G)R_7f+QE~^Gf|%O;k@5y`
z6sE4T+oU(9W!REh&A!*}ofw~|=uXNx@&e|>sM?}FCVeR{v7hxOW;ZnFNxmWjN%lbA
zp2$U&Zj)a&zqySK%}E{1#}vejW=83jCLcK(VRBLOYBDD#=ci;c=G`UIZ!@hj+NVk;
z7KGHyWGwebhdkFLan;HRjvN$9#!e_L%}W$b@^hK^c9L7tEOh`Ho2LiU*Ia^Jrw=q~
zl{v*4eNM^l;8q!jYa8369nAYgx~4rEWoEaTvQqxp6*~AxUZ&WwI;UhiRZfc9LT*ue
zQEoZvNcoEe9VoY=pbzC_zoVtoMm?!e4WztjRnBLP**2)4ZJ3y=QB(4|UM^Pt%qpiA
zbPr3P>!{ULa+#y1WNfJ%cdPYqQ#xs)tDalc*p~G2guLqZW4%8j<f8jZDOBW&L!jh0
z8!G@!qPC$i+2BXu200{-p6xQSGXzZNMCV;FzH-pFl?1cJY!fgco%E-9*;v^#UpedW
z^KxmuIj5W-+Jd&5s<s-r0F)KQ@5kr-<@_@vORM|UmN;?ACMuYinki4r8m)bsC$D*!
zRM=Z=D6+M=9c@ZpGc1&Jl+J3L-O~0n?%4c-MORtOp4T8v%4>K?({ej>+W)#or`d7T
z66T#ICu-(dDI`e2K%I5_=}nsR`cl`FsVf;*CX=M>daY_XGPKAvGEeo+=+fbsoSMJG
zr6I|rC{wU<fW1FWrVf%UXB%iAW$V&!MfS*>R~WszP*DHlav^O@$R=2M4_M%W9Xl<r
zDs#~^@!@+<j>fEP%&7IOq-L6`qZ#&?yc(55`Iyn+W=FM<@5*iH%4$@Ed^zeu1w!`n
zNxqtEX8Ee`y9F&J5>hn{xozg+RMg9}Tbw7ZlsrFvzONu^UN0`o<&~%A#FhHywET14
z**fr)j2kmHubyo{kcKavN&Z_GkPF~4fyhKseM4P+s;x1Tlrv73N;L>{g>TDV^2u@&
zcv-U6<k$GY3X_gvUW{rfn@&bd|DJKzhnEY(auq2pM~2#xu@fhhMeDPLO*Qz!%DGmi
zzDiCSqHEk4Ij4@6WX>{atdmoa*|VionTGk|)g?=>OXQ{t6jB!CBs04DuR2?(3kCI{
zl5UY)y^iK&szuwTZ=+g~t;<`|tEN%utd?YLeo3QiJ2kE8gq-{OlnH4ZQi1+mG`H|?
zG+(_y(2{PbYiO1eV1HKHAlLG}K?*KA&>vf6zsqE<WsaO>>755%?XN?MPYWAeBlq<b
zy|Ep^l4h!F{EQDd@7RIjE6X3ta*O$cS)OW__{L5wv+G1rGYJxBuW!lKA-&+0yT0Y6
zyk3yK9#b|k8!>OS6)D>SbZdgkefa|?rOlrMH8sp0S61q;K3h2Uf(Fa0$>3mQ_U!)F
z1i6t0LtV02uIyB2_XEq}b#s%Yx_#4%f|(W-qAer$a8eRR-^dJK-sql|H*yim&zO0a
zzp^@AT{d1;327>c#D0hEeek}CeGl0uk#KS@C1(n9ZN!&6dp)GaCH6V`ki8F{Hl=Wl
z-jhls_CMr^#J*DrG<BcDTw?!&rcd7cpv3h3_B(vv8HpKtPd;ehgujK8(OW#y_4OW+
z^nOm^q8w$mC^<AX%&tyUXWF9cH?mya+MY_vaM6~Mi^=}1rM!IqgQiWMk{DewMpnxp
zQe7q2+3M%y=_O-bb({2by_(nRFJB~^=jIHfOXPZjOjx8Ct}&CYu6H%kd-Ted6jY8w
z(fu}w-W)Zu+Lhy5_4=yv1#gs6$Q7n!vM`tMKv6R<yQy*rOr+YR=<U^wa#OOUO)lqU
z?NOif4j<p2l16>s4+4I!($FjkqXCjeDRq!ZRyU;zGjDH~_Lhz=4alvtd4A}R&gP?Y
zKe^oJ<0kwqKe^oJPY3<A{V;;hPA+V^l-$>p(-vut>E`NGd!emSE=S7dN9)2uB&N+c
zST5YywY?b!Pw`jwW^m7~Mq(GnvMZ!^p67RPn4jNw(XE$xRgH5JQcZr#GEQz)%H7Mt
zaB|mAu22?gvYV=E3MF6Fz70fGlxeML2r5EK(b^KE5zSxkjT(_Zq{#)bMwt(_xZ3LG
z*2cp4jZ%+xA;p@Ep3L~(m}!$8k(5iYRk;gLvUB`3D1VzY+AN_IF1mFq2aDQhXe!J@
zMhdz9&y{fBCjIG`?DwctZ7$lwT;r{3lFP!bx>kmmmgq227^yMcG}muVwmC}a^G}JU
z`9qe!QzuiIY<rgKkc*Cmfqb><)oiC*>xX&S47py_81<~E2g`+N-@)V-bVFXXjg7jK
z^!zz;Gg`LZx5S#{?6x{zkI~^GI*vzWt%-WAT;y)?$2jTGK`Zd4+}22XnS9!Akbx;`
zzIM0UC8kaH9W!sB@#BS*H<^u*O)S@u<&u0b{`kwU(S5{hr;TP0Epz2Mn_L*SL8Y*&
zbezxLv+(;*rTiNfR%YLv68^?%dgX2Pwc~rcG$228%B6c9VlsXh^jCmeYHO;39+5ji
zw;XDv1~P>u^nD|`3hWwdWQ0t&NX5-|jkOKwjDIM>U)gH*Pdg-P<sk=lmG$Pl$%K?k
z8bM*`bTZW<!K3pYx&OeH`>`%+b~4Q>^f$CrhdoRRL~l%_WMbLaQdgKHnode5w6f=F
z*V?k)Lh=<aU9w6JH!_9Fm0zCikn+hmCN~5!a?jtIB%`8#2*D20R)_8F+9KQA{eeMh
zMz&ijFsdeBzd;L=Es(~Z2%4@xZdO+{+aZ$!q+ZYWcYg}EGTUU>D1R&6ic{;Wv(RqW
zsLc`;p{+5m7y72}?;hnJcfICY7za$bM<XMbzbPz-7ppKCv!cs7jnSwUb<(K4u5^&n
z5;F((ZPyRZQdj<<<Dbu|3JP;#Te7h+*HWx{boaZKl%GNtZlr8>eM_cwcDp}h6t2=;
zBI9YocNaO%tbCxi4E(bj8M*f%Gb6oGl50R#dx=C{linSdw(Ms-lC$masAhvrk&4T-
zB=pvwlSzQw8A=Cx-&cr_BDLWU`Gib1*Eub3Zga}y)?73%%<k{(=$$v|@MBwacuUB!
z#aDBxEmKe1@_R6PtSNd>C!4xpjJMk((b=~@K1H*T)|R?DdF06t@y#u{B1O|IIg6`q
zOh@B<YQPGX4k0%j<z%H%E@&4fw#HO=J;V=tzN`BiQWAH*FLq%%Ju`@o9R6l%M&>nc
zPO^PoOS;C@Gz1et*}*b|%M8)Fm>(&0=ASnk_4`<EQR-bT%HxlrO#}1|DPQw|6Ea`>
zvNwZ%@At7@bCH?1+&7*yDUtDAzBac}6Qb#=+`p78{mHl87Lw+geMCg|WlMC6kSDfe
zS2E^F5oJ%yzR4Xrqw6+4V?QM6bW#RA4%N1qa{ee!QMpEc8#p&H@%>Y0CO*9%2lPof
zf4V7liI}dDBV~g;cqeTlyK&LUm)ueupuTK3`#R>aEuGj8)E{#JeUFq~7wr<syj2oQ
z_2eqeH@`$;w%pFvp~;VyBE-$;vkl&cPAQE)82GVUXCZc2vi|OC!Uh9hEI)yiZke~u
z`oLGRb*@Yj3k&A=$NcPQ>F+H|N`Jex&?cj!f2PB7^tnWXVyirz=US_!G0F5c*k+sP
z`Qf;=S}JB`i;v@nmHcxL=?ArqxzQlHB4hd59`Z9vfBC-FpLZ0NG@49G%am&pg)8K=
zZKYXxG#cievH4vk?MANXSdLOU8OsYJ>7gQjf-61MSAn!|X}Yuh&DiLSAlE<rR6>rb
zZNbRv=jqZEs^?cF^rW{iBiT7}KO@?Y*4b#>{=6)@jqVRmc8=-yxz$kgfJW}nKwB!9
z*7?epB-wu4+}1SPpW6E2%&&`@RYBv{VP9IWC9Q9WI<W72I?7p5{Fd93T7}zG8x1jq
zS|TB*W1ReJODia-Om5>kOLSH@;5nU4H=}1h=cTLUE}uU5;_oF#r`S4j`+XvPrLZib
z4bV{Z0Ik!0eeWyY!rI-WY}bu$)inCYL|rsRmU9^0%knTt^gL)`p0!Q#^ogG<%DJzc
z8Tt9`Y<cWfZ(z$H<{tnKA9#rdRcUmt!Cxtpsc+ExZ19w5(k_!a^7`qpI9vRKCw4)j
z(O*$r`GSV7o*k}e%QPmFL6u1s@;I~9wj9w{nmJ_aM9L~gf2N;_+nf5ZQeoZ54K{6<
z&Xr`^oBTbk64?Z0y}gqMrjqHDD`{?#`|x{Do;FIJ1!bwOxvgY&TSH^bD5<FuzvLei
zawRqG%@R*3l^?CKgLM8vLe{0_aVMXEcd5o!SK>zqS0Zmq<bi5e63xF${KGzCYKdl>
zCCPdo@2QtZ{jy7%RIh8fD22WEseE1%ASzc?Q$w}9@#o_ua{O>|^IVR+a($*GYKf9e
zp5~I-Ad7OS^XdG#X`*WOY=54}lAr9`d#N&e>rYd05Xqib|No?XOw##}Jn$I3eH}uU
zn+Ngvctlo}k2}h*?&i|ZAds;*>(n>)ISP}@<V}A1R?-_sm=T8Q_YwUcKmF8V<zLDh
zqkTTZK9_5so3OBl$eXp~&(inu#`q8k{O4Nywp)7nMu6ybr2O|EEwc3XyTrz2eC|ly
z8pGau`p-50lvjTH{bJ)In63Plk8zHy|1mGU{m!wmi}b$yK8=+h*)5PazD_Nk{T{M$
z{<`Y4{4Kq0|5>D;thVg$CJ!lA;aR_P<>k|FB7b3e|FI!oulBhi`+a4jPm})&_y2ja
zGCzI4d@j_#jOA8vmF;6KSzao7e)>}RT!?=et-Pw{%5VC$vLZjd{jRg|i5{z2jljov
zEu6b4NT2<lq^~vI8d;~l3Ag_?(pxU}JJH4-J{N6aitP>bUw7flZ|Uv#q>Tr$|1DXV
z|C2#_``u~d(xWV;((29B=j6>g@@L(|zR$4K|DdJ3Lcc8={pWUk5iPxaf8xZSnf?Pw
z>$l(1+wWbMlfE}-KgHtBe|;?rzU^9i`(5m!In)#tYwg?0ZS7#Gq|MLYem}dYNz?N+
zM%gSaz47}XefE1wQkuTcb}SK!vyt@8e*`|3mES%;*q7Gy9eWfeC@x%d{&Ri4{H1|z
z=|=>*_xhL7e?5i0*ERZo)r{uf6V!j`-83fs^7)#+tgbLXnBIR~T&VdHeD}Wgyp8RH
za}+N0j*Usb))8w)DK>eFgfZ#MNgvkVHYNV3ByIa35(3NLcwkKaWeYU@#$*2X?LRUm
z{r-1q3r(FlaQ>$Has*8*TJ=z=eq&AlRCR7EcumaKZteKtYuVbKI`#juc1^!8<FT#t
X`Q^X7YoPRB-Ky#Bd#f!?nEw9&yh>nY

literal 0
HcmV?d00001

diff --git a/buildroot/share/atom/avrdude_5.10_macOS b/buildroot/share/atom/avrdude_5.10_macOS
new file mode 100644
index 0000000000000000000000000000000000000000..dbcfc997e4b38549229131c49f40811eaa561d00
GIT binary patch
literal 346784
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%0A(FXgD?Vs!veYord#$=)
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%0Akr*Wzx|}Xx1I#GuifJG=5V#i3V#iOTD@MxH?N&T
zMp1C}gxXYyNzE+HlB0LmRIRB^ElmqIH7G?Hg`v6i;BKfAk{E2CDz7P3<|8{472-lm
zg|yJ)4GP>Sz@e%pehNcN*YM+=*Bo5Ib2Li23Q33R$_}pbEPVJY9(#rlAHCCQ=a0@*
zK0JGDf)5)M%<$nsoPrYWN@m5!E`t^2KX-pr{1FoT$Q$p4yh5RGyiBa2+%iR|;$+IM
zRO!hjDg0aLE&iIe`w7d044oGs0hT(KsG&@L5_P|cI*q8$J~L2LG>Z4(Kmh8a-6}Oj
zoGJ~_D#@vu2~ZlNlTZYfr|LEOX}&3w3sWfF=Y6ulSGTFXFLD|i7(9y@<>>}qhX{<>
zX+2Cf;%adQ^j2<yvl=*A!~uqSMm_5{ZlPx=u&(uxWFN?zSYw@r<%|rW_lXToT)=!?
zLr89_)%{^!V&u${UV%TWXv`|`&p?+cjEr9}Zo0e_accC4UUEokN2F|lwSNYtOP*I~
zXy?KFv^+E<RTQ2sp&@DVn;qh`@}!K=C=U-YgoZ%cxb`ZBxZaU#_-9&owii;$OTku@
zKDiuB6v49-4P%fK`TzENi?{kyH~D-1yR1rYguI4$eYoKRbRokbx8mn*M&hw_M!b-=
zp64cB<R;!AiO15s=~N~r=P&_`x`2Oo0lfe+^KH2lQ?lP)(|9gYKr{Cp#8rw+Q6rK$
ztq;(SKAy~9SNOxLMAq?$&_rtH>15+UYn-w>l_`Hh4zcZAGG@UorZU@^<6~DLtzjv-
z8dSLKL~3s{-h0f?5_PzV8Vb}U>kL$;MtLhQlFSj$ix^N$OP%Q=Uk7q?oGTr|WBUPF
z6#hbaue}NE#eNO`Wob4G*7~CU4sfDy;GyJ~7Y;-{y`1{|7YsPvYM?w}z;no8zu(}m
z+Q{=Q-pa#>(zAkf9Rk95;a`3A-(?n!;mDyr8}5rv<#1g~*k9SZ&M)Wm#@<;N9zTog
zsKWjlUM46EZ?bMl-P7WmvPZ_R_s)*|>#yWe(~?^5m;yVG&%*)EdD|&^qIvSMC1W@+
z=bte&Iv_{=y9;~n<lVz%Ees6He~C0?No~CSbR!Rdtl@E*UZ+Mo_HIbe;OXb(p>t9T
z^UEp;E-Ovz{XSI-zgfSfOX!?*`OOZUlM%Yw6FR-!xW>WldBL)Q(|P68BaqIkE0Kvj
z`|^$T{%GbRnfGkT2*dEa!c`fjtqMu-O=%Eu<eSo>KhbH@6nJ_emsCjY^yh!C6}=-@
za6@Hb>JNpfKL)}jwX|;RWx)LTJM6bwCU#4zG{^3et9&-JKoga#W>Cwa|79Hd7u?|{
z8Qz1_<u^MtSgM6WM$HOCSGO+=-IU2&6E&RgZBs$(my26hEHXS~-KBg`ehoA+()ajN
zfAy#SQXC#z>+i`)dkc{>i*w<Hk+FArtJoA_xyQ@p;E7)fU%z*~!`HW9YBhtVKcgZp
zZ&khFCSK?!UN_X%cOP;S2PP89$*BKjl*oJ<Po%@;3TFoWsfa`d{S`@r-V78GCyb5s
z*jKXV<o!n%`3ALw%B1^&l>C&H1#+E^+RR64pUg%T>b-vZkcpYvo25sfWK5YYgMo9l
z4c50kk+Y2b5s`vnEp>?ZE$OL7Pbk@HuR^{Hjs4zS4Y4Jm7Kmj^{FzY+L^3{hozrNi
zy43A-+GVnvc#NBPFNw6v=OgWPfS#K$k2UNi@7NE17g486<Ugz%ba3-t;wHJ6`dg-;
zs=7(X2Y05H-2x#8yJam@v#B&wZGo0`J!QoZ!p2P8dj1yGdnUSq%y+NC&HBWmH~0cU
zlC-SftR3WazJ9W<G$pT&SNf_u=7!&__-0SVZ^Oz8de>F#IxEn)LOa{*Z)V@*+)inM
z;BV>PX<@+^^%O!7bbZ2?d+i(1ClejN75L)Z)T%Y!N-4c!R~@w)c&*dC->Q)_TTJbF
z{{lYNopR8!CjoV+3$@fhfvTgN&I}9U_5{u%K&y|t2wp#p62CcF5(umuluA)&f#m)1
zPEq9s3H<UgsjP&*mLD&#c}4RcB?zLfATm=~>#HWF<FVVqvsW#B_<M!FR{GH}UwAFo
zl7!2ei^6{t=I;)#^LbBgjFzWb-N0u*5L_(JOARXtZz^hO2!95<F^4x>?Eq+5>5HC;
zPm*+toZoN8@D*NJwZ6>D3t9-hX1QwPi+@R9ZMN>?SC=5aUE|cNMlGnq7zGGFYH>a=
zx^<vTn3*&b|8%|47go^2>bx!YJFRxVVke4+KO?i$(~wnEFRqm;Js`L<qx6j6&UA0p
z>(b#-Pm5WW6ir#BFZhKwL$KWbF|3QQ-&~ogBA%fxy+5ekQ|KK;tH(YeosK=Acbz<4
z2ENWMkMA}9`xeh;w}}yuLg;sIC0&`)x8rPY<zy3;;jLt?EQy)kO4NDQ#&sM$ndISK
z#PmRL&k2F>o*Ng%Fw3Mg=%o;c`>OrNhpO}zhoy3hL+Ek2AEH5ThBzP)T`I0f3p)XC
zDr1ei0Ho5Ob)JUGu9AvA_`DK)PKLgxEkoj_1A4!YYdufOjfu(NV5SZ9Tq|*{$7i4W
z^J=Bg`#ti*mlEQBDM9X+5N1PCos2;Kj<V$xQObpbZz!6;j!)aj%RYxV8Cn{6Qmt$o
z?>_P<gy&pc>ZI6R#R@};hp!Ud)lM3ZcMz{~*vnTTA?dF32GU)!c7O`5cljaC-5Ygr
zd0j6pz90Xl$20gh!#n@nJJP27wg;V{G~k`TVxXuFrN@t}dcW*6F#BB0o9R4*xfIMW
z?h_-BXjL>D{4gYys}6%r=>*S6i+7Niv~dg5Q@r!vOI;CuK(6H|j^3Uwy4_;3Q30b~
zm0rizbb;d@+mL=zM6V`cZVrt}Q%}4`GHti+B$HPB%i{2FR!1)DlUeg*VoSn?;h{Bp
zrBG<Avn-rsm?RA+Ys~rDSl23;EO$G(RcaofReB4E<>X4S?jiIi<B$DroezFxZYzqY
z%VT74Vz8a9gDtMS=DD{_Nphacl&f~Wrv_Zd?+dR&JM@M(m;v|c6#^(kO;!`E^x!Dz
z!8w{fm^M=HM;1Ojg15uEfF=mn+a8yQ>$?t@ff;_gWldmAeR2NIn|sh8l`hi1xk#_o
z&hv+NT3?<gRtw}u*#ZXilwBc6Ht&^@wTP@0yPoq_%JGScT{Ye+y>><^{9>ZR30Db)
z2Li$CWlhE0rSI>(F%X@&p!arb3D{*DN_L&NuAnITgg(rot;^jq?9ou1?N3jwuQW>t
zwX8|MN6S93A4)lf{_wS|<=&Qd-f7s8*nIbY;+@yT{kGrvdcT7NI!l@;{PEB+otEhx
zrkwj7aJbKVf8&C~DWcF@XmJ65Oy;wq$X(*+X|D0<=R4k8C04LKbs^vJID8X~P2nG$
z4!A#w0PPvS$(Q=JZ@DZr<5%=vGvEO4{q=>>3E|ZEg^`lx@VmvVFN^aVyus6;j745k
zD5DSZBnvgQsiJSKw-Q|}rKKK{!X?dx`CkiJzTnz+@x%R9-+8P0lj>WZ3HDa^?QEAu
zv~C?vWzA-uwBkknnQ}<-{0CA}ZaJ9d$n;i;1;rO!)lQ!hpx5pj=WtQJT7HF#e(1+6
zdp(IayNO4*i9H}7eh!HjxQQ)l#+01*l9O>h?_6kH!cIg>{2zgq23e`M$m{7SEx(c!
z?`HV6(am=oNXa)z^O234NJPs_wyT;f_q$ojO_tLI-&>IL=2)j9*Sj!h=PTM{6)hES
ziN643jSD%%g?z(6{&9{Fjsn{fyN!PUzR3kX%moe@;ARD8GH;2M@XvI4Bk?2t<Sx?=
zl!h}?%hCK@!e1+WLi}IMG@PZ_VMV!Y+&KKBMspU2`EDdU+Iu|@<h{m2!L@DVe_`}$
z?x}n&Rk<HAClW7{&9+53Fou5bvC8QHA7{2uH+!*3UmM(&T6Pc@HfBud$bfjglDS*V
zs=Uoz7>?igO8lH8`w(C)rCD~;y|MQaaM&L_qb_sWI^#BHVDB<rzxZrga2d_f5_?Sf
z+tb?x{zT2C!Y3gEe3t^Vf7KF04VGa#o14}%y?5M2d4YxIdjE_21oBJfcq`XwobSA|
zIU(c3iK!<LEtxZ*!_DIYi|n+LK>qMKWlYrG`DKfz?2(h+r5<f4W~f2tnnxBCj6Kf-
zW1NcgcWJv0+UNw?g|D}^p2Z0N0N?@bZsZn_k~vfIWz)9o0Pp;>GJ3C>@>{Q7f_)*>
zr!Zrm-B9S6BP!EQRHh(qHz!a?FSn47Rgt0rO6JfA8HSC*6tO_^i@S&6fyRPf5&;$Q
z3m2#$@t8McqghXaBGREKa=+?q;Zu7FzwAn%(1-2w#!IC(a%;tSEr>_l2>Vo|cdVzx
zjeYH^S)C{p(xRHfp8w4CjLBop8Z(Suk@v9L@^3)z%a@mUhuSEVg&!AL8N9t$M%n4+
z5KEOr@S4)BW!Tza%x%_<AIk2R0+PFv=I%?+zoIuEm(1!=@14(v{om@uW5Lgq5Fg7b
zuT~vXlDxtM)ij(pF`DUJ1Y#|1yu|6v@u~(1r`^cDm*Wt06t$t5Y7{J=D?OZIrrs+=
z=AD-zE-A7~`}Itb{7O9ctwsZX1b3y~I8?Obt68{ts~({;O4SUeoi<ec_@jBQ=X+p;
zqg~gR3p{sGPE5=(f0lQy<}JTKZa9xmP^dQEa8mEP?Gk>lOQ7Yr<aF#DUx!t(bg<JD
zOGevGk#}qlJv{F@nzG|^nZQ#{lIJuv#Y!s`%M`!fIXSZ948>9I0v>Rm_*7(jmLW*x
z1k5_Jyy<fqs|oPfJIsC{FLd*4Q9VYGZ$ndZP(KFjIBk&w{nNF6ZSEhE`n|?#Ow3{r
zwr;`L>wHtjhKrqUp6Zs74mFM+T3^cGc>Y4bIG)c;;<&d6M|Hmk9MQa<F7^8fMZ#cv
zIq+?>{;GtOUn||1)X4FPP;sG4MT$#>M{3GsD|6XwIpAm4bcPnN*KHcxtkv60O&=wX
zJf@&`OF%Rd<Rw*ar2UR90P9MFRqk=$yHaON*GgRvpyA&<DO@Ur0BFmfXW3;|g3+!R
zv%{QdVP-1i{>;ex*?S>F;{wkh(5iYvb*~=fH2Q%qVTUjUI~Po>l+(ac;$C-cY_q=l
z-qf<fE>YeJ)3K-bxSQ%OR_m-(x9=dZ)&WW*ju)%|D@@+`q?q~*cS=L5wXNR`c4^z}
z(p0X<jq0&Kh@mPqBb}-YaSJ^iq3_(zvGa7p?LF?4-vj+MJa}-8=IJk9aMOj2-o8uH
zM(8gzugG;MTTEtNAP~SA0(cyN0G#gvJYoQdyO=mJKL2D*H6>=vi!gasw6yn5JBne<
zlBf~+{jiMaF&R?=sZG2!qOZC2BWKcUZez(FD+bIo<@Gm8{iG?sV^}Y&H%)moK(ZCl
zF}T57A5WX|Z426~-4E9Kp;Da-Jj1nGe|w8?)>)>CS>5#4yy><S32NSSn?nfV=5|LL
z)HmH8ag(N-q$eZ^BTm-C1WX6Up~rOK{S>ID+-Rt*>!OGzeSmJHg!BQr(<P)2(B(@=
zAD}x{LYb1IGa-IGA88kjV!jyVuMt)E2$zb3l#0%sTmp9?(+%z02(bwG<7h)*=bZ%f
z)rh<w3GwLM_96fxp6mW4@n&|E$E*U$OTz##<EG2aa<`+u`1m`Wzv28{%-@y#-NfHM
z&!Zas4@-<FnETm<Fn<PrbKivb<xia{{984KZf)?_oPaa$Dq-KSe<8soCiptRSp-?6
zyrD5AF9PrsW1?nJHzF3wKeB=ziNm@`)L~$=ula5)$VS0T;o=P9h!h{h6sz(dVqG@d
z7##J$_;*YO)*3AEUs*Fr<GphvG=?neCF+kI_8)u-r!6D%LmE|<hb0LU?IdWvTc-c8
zuSdLF8~xP=+0O;ZmJ<HzmR@$3a{+p!uQfT~QXPntcd@S1Z#{|^xjox@jL$$gUHAUr
zhm^?eJ*<$%4ep|mONr!^U=ID!BBurAmsUY%_O<A<LGj5|@6#32E^q|H32K#P2zhQh
zmAGiu1o<(h#LfhJ*Oi2Su-2XiKMo?}8E(d3)TAk6ZxmqaRnpr{{KQQxR~*(|Ah37V
zveFdH?BSle*V@MuAK}n;kBg;`!4d#VQfr+hRJ~};90Gr~-tSfWI%WincXAWpbVVsF
zWd$PUE)^R4AhJ83jWnEm(dN5B=SCNFk$8M<OFQbl0sky*SKB+DR@*J)Z)OsB&+CN+
zn~e`uwqT%dKjZoZl(i!%_)xpx{(j@mnxm&Ot?hm(!jtOO^aVBTN@L#0bj@@y3L=&Z
zyIQ$YyQK9>YyH%@?{~Et;y-ln*MH)CX+)`UGhKTw=!1PzCyCwTPE8SGN*}k-Q?yVv
z_DjMWtZ#+5Xx<J^=1Og5QNFlf=(Voi$|k8~G;i}_lX{n?dMg{CmFPPkGtsx$ndZ(!
zYIrL@GMRp5@)wjB*qInflIb2h)2Vj!TVk?^=DlG@A7@85nds-54U$fF^lB5mdAEuF
z1M0<ATW6x5eaJ*_vZEJkbk<-@xN%&lzpKsVB8Zdi+jUP56h$5~YW!`Pa!K>zIw<5$
z(mJl5KdNetWairBPZvtZ#M1azF!TUJU$yOIZM`}b_XlH$e6EJ77lxh_b0`)LpPGc_
z5)!>*Rs+*D={xcU^UX>9ZNnYje*jcwYHL6jfFp_vrB&3*nS5KWOsZGnrztY;Frlb&
zqqp(|=?!xcaB-Nfo-0<^K;&^LP%QS_tPx;q!I+@en+CeA<LYBiik>%+D*crz{ljjQ
z!AXsh!-GCp!WT>Zz5aE*>w2&8g}?Ic_^LSaw~}s~i~A2MJE-NY;%?u9u4@WTMloG|
zhL_HuU~|zhSF{Qh=DuO9eSr_QbZBnChr!<3YIU*j@KubiR=y0%g;qH(xs0%jio@E<
z_y-A}`QAwN=_LY4u}d+{(x~3(3nawEQw7$)=Uk_CPf^RQjJFzAP4N?}t4s?;1y3l|
z_Kmv4g>Ub|A914g#<Eir@~n@78F_Zg-Z%5QJmOm-?H2nGqe)Vn@KmhMj{6&%3<PWY
z#a^{zj`vnRBQXPFkJ&NU%Cmx)X}K3$68gug`LUky(ItDYUmf}Ij^lr2&&88)8BEBB
zlR<}kC=9ECnJx;^3@R-~DV#`)47ChPlf8j%qwY^d;dRzr$|Y_MYXOWg)+E|Rr9}l8
zyp=jvb6k18Ngb`J-pT+CL8ehNOmvYQ{V7dB^t+5%!PUo(USXoIvY`*RqklC>qIPtK
z9sLB#9!Ms=ZIFBieIgHLNp!?>7e-QJUprZi1yY{_o%&c-0e$fgAf<o0GYI}}27!1;
zF%0w^d>}fEmr);((cSy~r2EiU1nR#ziUi^AwxWUxDavC(d5S?<6rI|M3Sj*1!cT9!
zyE?zhS)s^W*$#+g`l{O%m;qA|($Nb=-pV(@V{ZRmoIx=5mW}rq@aFB4)Et{sb~Cy_
z6-9{vllzPGW^WD1;4F^t4(yle{GeLTPu8ggDJjvx3>&>KIMD5fNK{Dkg^E2X$#;e~
z=xyY6!QJWJJ4DWNI%Ux0B42dK@4=l%c&7!4f?=;p<Hu3$YgfmfBRUk-?I7K!TI?YL
z0}qli*pFe`4NBFK7jy-seemt50HExI+O_fV(m8+Hk_GcqW3|v(`%b*Dww`<`U@Dd8
z-0wprG+m#s_FU=u=KjLUatP(Se>xNH9745k#oN_3GS9Cu&0Q4!YRCFOx1Z&Pcy70U
zg94n5H4pf8<KibPi<|*-^K;;XI3eMM4xg%YQy&U$+*cn8|BBG~m7$S)OE(!c)*~B?
zIA@7OYc_g{#(af)Aq*15hFTn1Dy&B%>D4aF&U7kunHpH7QnwnD<KaS0>j^{9%f4)1
zEulOchnmXmr6om;?L|>kN2>8I!h>Cemx53gykTzQ_RFMPDQ*9rDiB{8m=K8F6wC<3
z@%t8t|DpfVVn1M(mQL;oTj#sO<p>&@;gZ7-Z7~G`%wWNxP{dWNkzCee17xit&z2uV
zob%^T3OjMhzeWE;dNS<3!anlvd;R0wpT0W$me2N+*aI)Nlt}ZT42gP{cjt5?t9-N}
z3yq#cO=IE|8F(U5jaAQrA7+rmvl^>pj*_qV4J?XOU1=;(O`kSv(5Dc(m$o;7zwhJ8
z2FY$v(vm6h;}b}9+2A5M#zB&oDAGLjP{#&Ky7$hf$WCa`<fDDj(`2;Yf=^o3hsh(|
zz^}%2BG^(;dJt|*6=W(q$i%OWUt$99#7CF_16CcKN&_^~H!SqcfDK*haNALR&4Ary
z4e0L-*fc^W`&;pB6KIUn0OIkt2Hilo1E(V2G7$xSuYZSluKh3e-aM|V;{P9?bB?&+
za;?;?)Q%<!CJHJlgveD;P*B3PTv;wcBH&#V%M=4rBGUG~Orx~bHq#cxwA5C$&C;^H
zi?o>8Vx{-@e7)wJbMHko-|xrg_x=9y{T#S6uQ_Ly*UY@;^?J=~=FA~k4E2FVs4=MN
zTMsY{(=JHXion7`QtpDjMx%x-##NQ26#G>gE3{^HKYbBl743`kVb|8NPfz%gBK}T_
z{WZDjSdwkT*X6Hrx49E&Df6a5C=coum6uYTSelyiHhlpCTA00N(E0rNhfc=lAAaJu
zP_6aV8@Na1C@{YTL44Evh6C{;sm94Y0NA<vEN<D$PvBDy$;!9Mu_x$L4u4kH5IXOB
z=~E6w0>qWh{!<Rk4@#c&2)Zu`Uqmr#g1v0XIPQyhpurE*st$WYVi76!S6A1R8vZ0j
zs`7eL)zPGguT1&k{T49-wOE5sVVfE?w)d_BR9bS?iPA1<8lQGw&5do3J!HGC8ZjDD
zq7N{;+A_wZk=)rPjSL)Yu&alxhoh~B)7cc|Jvr3>mV=X{N#jQc?2A~o1FAvL;`k`U
zjsZ_84){G900-VTVLBkzg#R1=0i-`=zZJg6fH@=9Uf%^b!DJ8LV~`XT@?<JipE-*0
zJ%+)s5YTL^0mzdEbR~CEOypDY_6N8f$XRUk(J$OFxeG>&tpei?d9XT&S;|fx7fk+D
zC-F5EQXKFh1sVqa`8Pg+Vth~Gr1uLPrkfn`lkq(T8jq5WrT)O5P#{{xu1@>1?=d04
zClpw^8J|%2F9?=f19JxNB%BpQbE3mcu$-%$rH4|Ls%5iD>FAB%xTV+1Pbd((@P9&q
z@bmT=0)npQit;BExaP^R|Jbf;ht{Y^i;{^za-5#THmRzEf@YBXwH#_&KkKCy=I=^?
znKaA;!}|s6<dWgtIm0C8I|hQ7M_Re}GIJjs+*6g4k#)mHWb%ZSNv4&_9H>*6Lbe(V
z(%DM=hj@!Qo}_wwg5l3o<+OKvjQM`grqRjck~33Bf*3~6G*7o2oot-fhrx^o=IMD2
z2$^pXZZ%-*EkAnq4qqp1Y|ofH0jq4V)p*;@Bn{;d3|78d>HR{?^11@qk4Kp;bM17q
zWhTa;W#SRpcPqbp2vXm3UE|b9d#{z&F4LCcM7x+PkeXk1KQ@T0#qzYQnwUzuUFSW7
zn=eyCHGD(%7MzC#+?+CZSgcx3o8fzus$!fMDxYTtKR<%!_?A1RH_sz+mFyfn)#J*}
zqWKgLE%QaqjWW~{Y4B_pLS_>_VZc@swwG}#AZN`u>l(+2l5viZEUsFfC_`&#3S@Ot
zPs|_?;-<s*U*9`{b~ld&P5FpJr83=P&HW|agj7_jg^lsr<{K^jamE<16^B|1wR#Qr
zQN{*@KmtMflDQw2XkcgZ51<+{dY9AJw0yTx0@EN@Jv6N*{f8}ei0~3BEjHtac|%?P
zit~iHs+spXbR0UUJ?Q4*t*ftB@J12cF(`_g1y9Yh(aMrYp^gG>y}%t)sylltI5yT=
zVqU_)qggKY;(qFVZ-A+6+zyB=yg~NH#^2lgx3GMFy}eOW^Q_+Lp|lCYtQ{(SO6?vV
zXw?qe7U;Wdo@Nzw?mpP@144gxq&Y~YvW1nj^A21KuMJo;JqK*&MT#<{FzU}KP=6``
z?~|ea0|M(GZPg#pDfOrKAI$T8VP9W?p26ps-0?e;zoGuYu8wc;88z?C$3a##lfK~Y
zIO)5U=#sy}*MUowqh8=9>@Pad`w~`P=7%w((a&-LDH-Jl>}!>W{5I|nYTv3oDbgs9
zeFC<Pla*~>;k1-?t@Z-e0Am?>lxlCaN0Jgo26ne@lT_5w8;|B9D&i09L5D6s-pozQ
z?inURA-}T~m0I|4G;@q6qYS)E+Ukk8vTfhwxShS>lq<LGOip9amJ2DRsW%o7^9#vO
zK1Eeis$V7ze@k5_5d1+jjkge^2=jn=^GO46f9ZMHuf3W41Zb{@IakV&@e)lBalBU~
zqRmhUNhV@qSO|`ph1;7cd;2EJAI$Ho{w6}}0I|JUj!*yKY-%`y*PKGIzoIZ>ICl1@
z@qT37HrwjYM6<0Pm@LQPKNN%8Y5+EfSmSWCg<4xcP1w7z-v}=oLO)8a`VbqBuz|8P
zh2ECJ+HyH5{6BjSA|cu@8n=4X%3Hf}3!mqM1cl|sR*8<odq5wcH6hh~p7WyX>if%E
zV1#tb{UhF3*ko>DsZMF>+r8|#tv9OQ0TEu>1;;jGFRTjN>YFY5@(6-e>2yfXyH)9L
z!^ZI(3~kr$!S2F_3m`vIb9Umrz?7;P8;orj(Fd?u+8+A>X+>2ZCfUaSwG%IO;YzML
zV#ga8=-IR?&$?vWi@!_aZG~qj46I{^$p)`MjbyvqR$NC(V}DqxmA$3nO^r>U{Ow7t
zlXn@#Av-&*_-n~;Z%IVd>Pa6Uvy^J!Q}qewXP@G|)X0wq#Gs_u<7w5Nbsk5ua?*G$
zY>)TYJEZIVW2?Lr%~*|jZR1UCA?L!7El0#AwwQMIcA{*#m($p+YK(}iNRt420|G(s
zhmlqi^b$@<<E}H)g*V2E`*&YU9tXaU)tNtrNN;1I#<NP1vg<PHcAs}2k{XoId9A#)
z6}JK?fu`A@gcj6-mA^A3kZi&&2qwDa{*m@Frc{^FAZ<(t_E(4!Fctg~`xld{JUj6D
zv4(T#{W|owKUs3@_sO<#-{Z^`#6~B3jZQ`f|JJyJEjf1&HH?&Vg#me?kvNHc6Xhkl
z((1;E-drP<*^OT&ReN?&H-1aq$X_vxe4D!Qdt2p1bferS)j41>7@aW|=2F>>zpyd2
zvv)jY%iUPnH(;>dbE(;lvjHI`8CqpGzQ`%58y8A@dXW`(5TM5VocZC__NbEgZpzC4
zJ%mp94gw8Sta_45ZNhvF@4v^Jg^jTai<E^aR$)8)NNLtco?G8H__^ulOke!H4|<1Z
zXYxTR+OVS-_+T%`ZY<Mp^Tb~r2mNB-<-AMIc2gxGiTD33?4H0AX-Rt%%Ql#0fdkJ*
zvGwnO=g<y->Z{0~x$9_>t?zMUwVbn37l$F6t*~Fp7Ij$JY(h30z+#SjFF-ahsLcAh
zlUUMu^K5wbSK6TbdT7K{QvFr%jR>AL909zJR*`V?>G`dNt%f!xA@C9Q=Gj)l#!rE(
z4yp*;CIf?tuoAKIRv9?C7(;O7Ei$kK_D9>wn`I#3VhXI1fd_09SSbVVVszP7V&?^A
z{T+mvZDkDtKo8+xfeWj6wi_we&BqYl)EZF3g3TL%;3kAc!&RI213&qx=$V@ffgW#t
zY{=X^7})W*qZ>wT7S|#zB%El7+gt|R<aeL@ZB7Jg@>9?~Hm?R|@>4^dHtzvqn~1kI
zgl_f%uT7zV<u|B1ws6wG-q^Ff(dktwEzuj%u#?K(_?RuAMBh_*M0jrsw+I9=SkF5s
z2RG#k1vaVbOOttTiC{V=9d-o0Jk{cc<b%-iNC9~-)-1temC#X^&=(~Hsd&c6#gOW5
zq>>|cIH&6Dy`PHU5&M34z=-wsHb?AJfS{r$HQo;?-{*(%!CG4%#3&)R<UKcp%z-JT
zqR!LijgaYp6z};c$NLvB^ZrfFKX7=TLOf4Q?yrN$<uwTy6W#_)_KuV){zPe7^}5br
zvgwsSdM>R06Wwgi7t*We(Op}`*SKl7y;vEJXi2e0Jl|2E4+sAAd_toBK@=z7S+Z5s
zqnROsU+9Mj`~^~2S5s>4--A*~!OurjG8eQ$rWj+FjHBTy$JjKO9A&R6xQn3*?WrcF
z56s^5f%F%8QA-}e9R)4vU4nK)eq1T!SNWS!Z2y2_y?-MT74|I=R87dnbXgdEc<iSk
zW?{GCu36Z5R9H<7A?r<|0&8An#A{;i>5W2L$^0r;AisJqWm+9li;U8$b!0!5GwSSJ
z&#2*pHC*$URzR0(ek=@hL%N&Uu$8=IYVfI<j8A7|(+t_9Vb?^qnT@P<0}#M6Zc;UO
zp!X5V4TA;uzW4qNRO{2Ig{wn4GCs7B_;MOmth4t5Gb6}iBRN{}cjO1O8eTB_8>U9m
z%*eJy4f+|(Vh!hU`!=+}Ga{k1Dm|KxidhfCAH|~s;-n!Dbqq4(UE7oA<d~LQSL6K@
zLzy&hC-YrO)eEcP$=yq7M&_XNEpe!zw+2<kCLz!wHb-nCYhA?>+)wqr&d))B4Sk{C
zp_#m89QBRVn#q{|xD>ke888{~M$$l^;MjC49<fq*N0R4FBHu9-F8{NwleSiW2*ZS=
z!fWu}suUOn#@Ma*_D62@RiH6w8s0TX=dC2?dUBRiHfXwvWb{i~O)XJQTGf-Z<ZO($
zbpX?<H_7ql^ITBhlGw2EJ)-pL;pt=wJcf25t%<No<uiTU-(bWor{On@CLy-UZPawt
zmDFZ=_Soe#7HySJ;3fv%i*zKvG4SxB&sW~xd(t3SL}%I@hjCoe>Vx1KSc>$Xz(epS
zlUAQ*B0HQ`%~*TwmoQ_nRo;nWQ#MWW6wNIvURab;RY`Tjp&I+)%`odqg$E43KT>LL
zr}q-Q9*F?GSX^o$&<zL>aV`!(z-TiNXO<*RZ(R>6S1)lE=X!G7D0e?HWJHRx<~ec+
z5o&{-m0!S{L1TO$%(Jvhp3aF2MQO4tH{h;0#z#@!7~@DmyKrWp2#}T=dmO&^CZfWi
z3?hmc0wXYSd!?)F$e+9?5fyqYePU}a7lXAK5G!&Hc@WcoSyXaBQ5uS>FC$v5UOu!L
zA|mw^+s2X*dU<Lw3P89Bsk4w8y@7mNaBARCxeNFi$shn{hj=q3Zq!vj8y$p}YDPue
zh$4{9g%%QZDgOFC)eD?!VRz8&4FQ-`Ct`ks&AKIORZI`E&H$q|Tt8dIJ2JbsV3?3t
z&FAb)tdgq3j=-Mb-A0{LwY?ESkD)j$FA(|=wMLiH28LsLu)awp4n`LB8luwpt*)f;
zVe+4Mu*!%!jRF#~VSgCSbwXdEoxWd>vTNFQq`s7U=-x-UKm|+;nRu6@Fge#x2ZXGN
z&7@UDVL;h;j^af;vro7sV6w0`qwWFSq~i6&Z8&IvtS<rjs%_&16$eUZ(&AD1Ha#Ww
zwZ)i|ggg>$;+H1zL!X2Km6xwWBW@-KYUXihKK81aq`DMwe91b8!xT(hFi`EsS=7jf
zMB=-Monqzw(<rVza=$i=Dq8hP!#eNz$XC{K4xmQ(8urxci>qVoWKIF&J3(y$|8MC_
z9lrh<gbe#?(0ooFBb0^@epWf~UfsMs!R?V+{!ik|i2}rJ8*z{~UD-F0aget`9)`rG
zmbat5V?Vc5{!H<d&r%}}mj9jT#(I3)2vi6LpV(%$8{1+GrB#Pb!$eb_z8WH|+AiSQ
zdSC2Dy*Oi6<pE5H_t+{(bNvHGyvPl8rv8Li@e-0Nd@wp!hX`afqB?0)JapP-qWi7}
zTi&WI1Y!x%ySpn5ywvJ8J>3`4_OSQRsM*K{)&TE#l+$n#>tkFcwtc453>$^#-V8h>
z1c~B*qS)Q(hVKpEcF%RG)q{F&B^A?qE^flEb{Wv9f;j`C9Q4{hnIPR;gMNbj3nk|9
z`WQFXSFi)vF+%nMG1KH0I2UY6Kg4-m=9j{+-GzBFN(Os5fI~EJ*(&a(AWwbK;mLJS
z@~hhpC*u!J%YsMp2;W7=+$eU}QXJ}#ysNsT<>o{rl6{y`eJ$#E)LVhNkOBqGS5$@U
z!z5^D$T3(K=!)JQu?x$#vD;H@BetjKd^5HtzIRH_FKNo}X*ph6ot%N{RJYxY=t)X_
zRoglMSky_2Xz)~^MIyj-%7=#7Zaj~BKW0Wh>V158G(^J_DR;MRVH*IKR_A@L3&bv#
zcq?c^gRXx8PXop$#LvYTpfG=hD9Eci=`O4H+f#iJyO{v-zj=}D{&w!JX7A_X88oy^
z6wuJkl*hsSj~LzzJO_&0{fK@E1${g1zPCN)snvsJ?{}a)Mxqv}V3Ft-OzwR&nxlZ$
z)saL5QFy51AxXa_Xd*d1xVuNd^k6qotWN#_<1>g1g2!KwK9zxE1k$TLXqI8Qu;E~j
z^=^!LN?_T~?bRN$i*u;~={4ZLyla3jogA=)zm(dHzm&QU-7R@8Z7Me9W*9KUsE(xO
zJFxT_!?cM{E6<Q0R}R7l`_Vz4llH(GRF_iS0yMZQ`T$O^2*4*5r$<+P4%(~p(_VX0
zRjaSX@d_R9hYiEq4A|iuLu{3>tspu{&G`%o_M}AYM~-`(9i@itBy$Hk<cA9pLpcZw
z_{f^+G1xM3BGG*}T6+u3wB<v=XwG3$3p;wL#c1wi3ogwcC%wX~dK~hgZ3{F7$Dt|q
zKRz?*0sLhMcJVNOS&baPUp812=I1YecndC&1Qy6&ROF7OdGF77))asF?q$%|5j>Rq
z1^9f7JCx#8x=B>_x~*~%h{?}r)>B?~)bDeQXr7Upgmw<llZ5sn8+?a)JEGSlp;hSy
zp;7P8Mi#tM5lCl-#!mg2vT4$U5$=MbMM%tF3~PZF#L^P29T1Ic7=gyu93u_bT8wHh
z<HVS8@@%d@TmEWWx||n>YC@jC17t;O6Ub@_dDfcQ>gF7pDxW!@4_q_rfR|zsvs6CY
zh?tCmmAx(>bZz0sZEs5nTe!`ZaXtaVMpnG;RTDA|CL6OhhhX~%T7EmtdMd5Q5UumO
zi$3}g)^aj~m|u!+ONzV;rSSe-V`C!>S0pGP1H-@)%VPy?L<(sOIE9$Qu#Okww0?>K
z&0$DqA_?9P39DyA$YxGy7$5oUF_<*)RmFTV*jy#N4Tvwzm9`ZyK?J1Tnb@Wbd6pkP
zXK}<!i41jL(B&nap(N+I(ff>-?{C4;+aIFAL{&zctr^=vm!C5dTUJru(+uT9JTz9E
zQfg*=Lq{oHe27<^F!s<lpW__}>Q<UYzJa*@3V^F@sly${+|EX&0Ob1xAWv4P)1(Wo
z@$vJ`8kc5Cbo&RP>+Z8N`3q!*_MY(tq3Zs;NmM--H_+KHACX2$B0FYpS9AlJz|ajt
zv1|jG9)k!kAc7oQ)7Z+|*}IuAV41!cNk}^IQf4!x36SRI0-D8-X?*?b`eoDWeTj|M
z`yRq%z43Y<blE|?=BG1yhj^u5pjV7FzaOEb%8H(2V13kkc}G9WI0HtaZ1TS*`1|`i
zF@{0y^5hL#_1lI61`yP+(1F8kcF{o`bPw-KkQ^}Sc-xmDDLK1S3U<Gro{hJ3-b~r{
zS1+7<I6SH5l~5vNc}x_GJHPz0Xa@sZ;MjvCNJyL$1*^M#3Kpb)0q#Wkq;Zy?Y({d$
zTrS9H@1E#;ttz9v-M7PD{!gnkyqo?Ey7Dk|OR1i%f@VYV_$SJQyRxtgeMKEZnLCtB
zSIOAC8ijQy?$i1g@uYI!k`Wli(~!74Rw4Bihl?(yZ=fV{el(b;As@s!bP-X8Hy`N{
zCjdFT&L-30<tb!Itk6dJ;U$t(+s1*mjT02x#<41<fFm_Xpmgl3+c-&qGed>r(Qw42
z3I@~?MJ?wt@B#Y?_Dt_d*2L@4B03$hvQ53ARdik4SjBc*T_d%k$^L~t;q$%*Y`wMQ
zJOalUji&v-Iz;2<i{j&V9|P)*`U|I$kf8%gsi#eYlg>B12(UZf_F_4kGM0fZJ%<q@
z^Tn_S!F)XjX>yXuW$|lX_$UeHWS-a2R|!y;rRm}uHnN6$M<5>hipCoZj4^9EAOf_`
znsXr)Z^e8jy?QXAR_SJ;$@!7a5-V_U6zqSO7~~&v8{1V$1=xKdR%i(=`zAsM{gsH!
z%rP8zC=%(DG#+@p#J}E3Yw_oKv(WVBy`9vjM3=N!!VMHO{z-ZmyWPQakUB!LM+h}(
zjt}N_Z7FBD7!_hJ>4u>qk{`Xr_S4SZ2#Uo-{6l9yKce{cCFjsouY!?kJf6dGo+6*7
zi0?1PWIKpZectoY0MWa_$ZvlQsy7x-_oP(wM-^>1eS=(9?5#;_)e4KQWLI~*jl);!
zs>iiSuKLa%@kUbYFG;p>zog{sO4Y_=aX5Wb^|+RH+tcr!e)K;fNB>szm=E-lz>Tq)
zu*I1sFg2uB)umOZZ?aFaPxdOnjM{>Zu!%k9#`z!63#&KK`k-$VMmi2S@!_1q{mvKJ
z0+Y82tBAH0k0UR;@;NW2;_$n-=}g15uni=~eix7dmgCYe1G3%NABa>>ZjXVEQQg)F
z(<%n~(moiZ(q2m=d=VNM4{t1Hin$)6I3TB;qj*$f`&4zvHP{>mCWFM?rH$6R6x|_v
z>csifQy_n6WmtYruKLou!)7u<d2&g3fSJIgzrgu=cv97Na9_;Y!Fe~)GA#P>o*e2&
ze18XMU`4#L&ThMXr!if$moM&_DBP`}%}=j?mDsLrV^Ys7ux<cpJ!iMthKiVLt`_$t
z%^;X67gCj(Ds3yEPV*7GQ>&6cfEs;M9>U2hppPdF4&{01k5w~v$oXt?)z1O>OJu53
z+El$s6a3_lVt=uX+l!rx$q_go?Jy|maC#1AEMKSN6_L_(<(KM=mfOAxsZReuc@sqS
zVM@-vl!BvDo*b3(<R{3J+Xj$4A><R8im=!9h&|Ij$@>~w*CL-EJQI0}@f_7nIgwg*
z&_HL#4)-NEPyFsbuH9pg{mk7Ar+u8q^Aj9b1lwvFL_*BdC-8m>7ImRoT!EK~5YKia
zZSdxuhV<689G#JDSMKbsrh<8NuIl6;omh>gKHt+8%qt4CGTut}+aRVI?*uDdr;h$~
z-UpDvzZw-tBRsxof6m|Z8unx`1$w)@T?YAm(XIS?Cf3s`cQ3KM^cQNr?D*esuWiu~
z%2to6jFwe<F%c^R0_AbS-4leH&&Uwfw_xO}-t^uM1dPm}p`xWhW|E0P*Jwm3>Fs2r
zW5LbtPZOY-X1$b%MCHf-T{FcgK-D1;-OSc~k4>MQy^&M`x9$<l7cE_^6zp6cA%mgK
zoKt=uQm%J*Mw#CAh!U{g-3{yAJakXH?)?PRCR7)#lF5aW1nIzC<86h!wu0`2_dO_(
z0pF{#*1LVUZ>@|-AebL7`=KSoA{M<-%{VRz*d_1Ts#C5fkUF($CodOthYA+Go7ZGv
zu?d)8V-QboezM|#dv4j^aqhe{9L$nZGhbP8U&y<EW7|4C_2KCi^mHPg;!yedDxSV4
zpLS`Ehw=1q2wq0Sfq2_AJlunaDK#Y;PH{^aMz8zhOgHE4;5l0;(9kBmCb#)XyaR=^
z-rjhlB8H;l_<{JIah@r(mWH7BAdpX~!AXZhxE61uR}EnmVk#`5*q%;t$TYkbPwloX
zI0v%)xKkcIUUqze`<k-j3vHDU*~XHzdn?IGZv)tVYE=tp3$_XyGRoVT*eqY{6nTYN
zF8j{WEvYk11g4n?Y~)0v+jFW<h)>AkaRQ&WCl$YQG?4}v=->4qcVppOjjpp-jc#c#
zTijEPv+-JBYWWV$Sd04J+kvY^%T>0DR!9YHGcDrll$vW4Z?aJ!>XnY;E!~%tZ+p;Q
zcC9L2`Wy_ymbAD0uk&2(HdkNXT-es`wOtpA<XGkc2@HpBCyDJ_m^P(#>>;9XeBYN&
zw7;_zTHk?)ovetjSP>^15xw&%)^M0wk3iEgOs%(D(H=Qh=I0%QXk;G6Fn=BQwoF1B
zFiY@`!xQS9MD~5&q3}`Y-N?>Z542TQQ&YpJuxtlWaDdSAH|O`>k0~LR;HXvl15T~t
zZoqD_s+~9r0A_kJ=v;&+I0Lhrs9%JICSvh89wHOkK%1NGRpaSRe9wC*z6TdiBXJiD
zuCj67fUT#V-nQ}{#e4ygPF!HN;94uvLx=<|?@GutIb3x>LHZHxmp&;6-3mM-l%c~W
z;A7J;Z;k8>AM=-y*qzWk71~Wo)mZ#A*a*FcIX1v0?Y*BfJQ6YYn_643g-u5boAV?#
zZv$V6%`JfZ^PeF80R8-Jd(}s&IK#QhC-L)AJtcn8w1AZ_F(Bzb!$2UZ>YA2GRW6{8
zLn)z>`i*yJpo65xFh9Ev=2O{<W$n3vVl9+>7;ORkEJ**rk*2AH(lLk}*h8t{75h%m
z`3^i5G!U~Ljf8WLa27QJI6Mr7Y5=qsFoZ{chz&(!?z5Ek+>Esl`UQqliO?ZNh$y}m
zm_RzMxCZRcw*|Qf@28KTwCYZHS9%kLS)2OK`wd>}#X-*W62OYKph#|8P7uA%`zVrt
zZtg+>FrL|J<{|=$-UD@v2pVQfJauyM6xx$sQ-sc*NxXg|P@(zCF(6V|2g-buZrGCF
z!hpx)MU1Ib7AEcS{tjtae~!%E$+-^&s)%>p9MT)<8wc-GlooIpIb`j-^-m<AcHDq>
znW=an^COJ2K$XrqwAK7h)vONbE;CHW!eCA04n&|Y5vJA<Z6?>H6OCe5s?l=Cy>n3n
z68!*{hW@6gMwBg9loUecA<DcaWU;?M=>MB+HT7s*q<@0bQ>&ozA>$AWi-ks^dyF=^
z#U|Tm5Ax$S+C?|eMnGsaK&ZUD(s0=O5o%h0r_4E1VuoD*gdtOQe5f28PgAt7A!_`!
z!^m6E-d;VqvwUF;Cje~5u!ju!(z_eqTs6CXxFoQrkRuUTI%;qj(i$y*Hd}?e{3&#{
z8elRVbAqv>6Ds3nr@bm8bF7*e&FJ0qUEVJA94FA0`U&y!hnWy9GE9L=OZ&vGc!)@`
z4#($Vf9NjT3OX|~h#Wg3A*$WVK(YsrOqS*1ZbKilG1fA2UV6^}L<9mc3n+y$N_!4%
zD^|+tZbce%JpJ8)tBaf-vU0kEb4suBdM6<>Y-+$sv?k%zFGC(?ho%#UJ6$_xU4(N$
zv4~(>aYE8eiY%6DxilP=D6@+0WflE;Tk3xdWm@{86Mbof(qW+>N1QtwGa1jharo0t
z=uSIUAO65u<+7v-iU_SanwEq2M{qT5E8mqA)ZQv@Bc4bKdJy?h1+jGM%|~(dYh>JS
zARQ&&yTOXPs*Qmg5x`{>xmZSi(TY67h-^{J<H)~(dhAv!POKFNQ&Xa<8qU{SkId>Z
zZ%6CSY#-3FTwT;O8MM+CH3hm*XsV9OQGS_~@0a1SQgm`tOsvfFcFJ?NjCqa~^F<?O
zP0XvUjVgKPQcT(|2&$b<i4FF7FQ^mbWKeDOwV2_2hqihitMXObgUEC~VxqUJ7L!!2
z4p{>wLAGFuRa|Sc1*vzb0z9oLwPJR&V%AIiKSUfq<MU!r$?=To7i3l7#AcN*Y!&kH
zh26sLZS3B`?p^HO!|r|TKEUp3b_q{k*u(6Svf~R|$L?e7KEdu&>~3K9S$3aicO$!-
z*nNrJSJ>UcZXLU?vAcuaH`v|9?wjns&F;JG?qPQyyC1Oo5xe`@{gmB<?0(Mf7wmq;
z?l<gy$F7&%!|eXR?oaF<VfQGz$JqUy-9Op=i`{?NJ;|;B!T7>dcAK%=oZXh}hO*m+
z-FED@XZKuoJFwe{-OlV@$Zi*QyRoaY+k@Sn?Dk?eoZUX`_GPypyHV^8V0RF^gV`O*
zZXCPu>?W|A$nFSslh_@_ZVJ0&*iB=19J?9pX0khxUDA<#VN>Cz)pXqqu4td&3tJC=
zRlc2sAx?hr<xe39FX;O6iwMF8tbO@65VVV+`v}@X(DMY*+3)%L33`m6BLuA`s1+23
z`a1~H3A&M>1cLBdn=gMnL8S!ECa8#@B?RRXw2GiB33`g441zFlu+x|zny}W#6QmPF
zC(q{(Bq*Gq6oR@DG>f1P1bGMwC5Sc#*W=AlU;bKxe#g+x-$c+41ieYnR|Fj)i1vNu
z`v`iMAdFzaXTRiQ_95zDqI>-b+Cb1qf*v7gB0=;PYkoFCw-Dqch+YNFUqa9lf~pB}
z6Lc3rR}u6mL9+>ZfgpMfGk*s`wC^#0A3-As`jVib1pQ1<KZ1M&^(3e*@p5ohU;ae|
zwI?WopymV(Cg>mR6v|H~=qN#%1bGR{A_$8|zWjv*(eX0**Aw(6LH80wd;Rj)6SR>a
znw8f-LC_9@))4eQL3a`K6+t%<bd;b9f)q&M`l|_QM^FhtT?xt~s4qd&35q2slb}?B
zQV5z%Py#`2f(8*(K~Nup?jlGh=rMvi5kxQQ*0&*OH$f^v`w99Jo3HY}C+H`F{vqfa
zf^4LJeM(R_g7y#;NzfYvk*ZWrXC3E{CFog#rW3S|AkwYtA0TKcLAMdKlAs$1dXS(p
zf>_5}KoA{BSYJpGodsH-P0&GtrV{icLE{MehoB^a+R!MABd9AuQ3UlTs24%oY0PvX
zXdgl65_FKLxFtb3RLhfOvEZxb#}`)r@y3P(84^Nobn*Sfm5Jn+RrIs};=93jlW!Hy
z?X&yZiC^H}>3h)kfNz~|v+pu-jPKL4THktX86v2uza74}d~f^S@xAMN&-cFX1K)?f
zkA3@npZGrY9q=9WedhbzcgXjJ?@QlTzOQ}X`o8zo`wshl@crof$@jDGi0^mbpT6V1
zzkGlDPWV93sEHy}p<&}oh-fZa;A5JtL`Ts{oG&_yI5Ad?6XV6@B2!!@e)UZd6U8Jk
zSxgZ##Vj#fWQlB%BXY$&Q3ULZas0Xb^ZJI0`JzO)gj*~S9&xqU<7@D3^*!dhMl8nO
z|D~c#TqjnFRpMrGi?~(XCT<sZh&#ny;%;%TxKG?K)`+#@VNoj{5s!*>V!e1wJdVG|
zkc0X61VT@Wr^M6zWP^AXr9TJw8L`Z_L6rNh_pR|g;(Odz=i7z5+kG4He5Zw>iRtP6
z7yg5|jdR)S+uLN%*>Rtq9Ob73y@*nd`ZmGcjNeQ6y^P;0_`QnXfBU!Bw}n$X#cN`_
z*dbmQZ;0LEP4Sj^Tf8IQ74L~XVz1Z-<JbG*1M#8w=#;Ydqjf(KpNa$GAfV60=i-p~
zLVPK{5?_mN#0K&GDJh!9m1@ePKsxIG+n1th%|e>DXxS>Xb(^;BZ0*lE_q+}rJDuP8
zf(tL|(zV;gdiNfe^bG6OJ3OM#rF|p&^^b}kFmO=J;2}d}<1ULImM}cgK4N52@~F`%
zsbj{brH>n*ae3y1iIXNznR>;Q)27duIcs)Sc22G%Z%%%}RdWmH6&07vce>o31q(|T
zU46~sYnLo7TXtP}MdkI&S5)0lePhi{D_7lo%dG*O10E%w7j+o-$zqzAF3uCF-~<<l
z3&lm^LBty_y6}jlQQL>1n=rDT5WU4sA_Bi>#A@-7HF8&C<PH)s;uX#-9-}=0V|^H>
zTPf^@pNxByUuq)`6e?PaHlnR)Cv1o@Ra_yi6dgF``9{iHfK6AFYW~%To+8W$5jLm$
z8-gdX_+7>^ZVrf7gL;nwo+-FD#=4)PoGz!E#EeFK&>`}~94loZ^TlHD!TG|;ywD?Z
zm4%{IECNTAoNx*A!e!uw<)T7VitEL4u|iad8$`9Z5jov_+IE?&v=`?f#<^k|W7x?m
zSK`}ETr70aUGxx_G<tHW=qn;cKha-Ai2-6DKOKyE4+V5Hc>XPL=`Rt`2r<$K-7H2k
zG!|}}NN2f_!IHr*6=b@`Zmy9-z9_){qq$aojpI>xCCa4oSK`;=l$idWm<fsF5BZ@K
zWhE)7KFZ7IGi%axNdla&wK7_H51f!V<7{xlEJGUpCfb8vW{XxzsM1DhtLzc&6r0jo
zD2l4&fHHGIn=O>z#UJ8Naa{Z*{zgBX5Y+#J6w0d^Mo$PRc8+MToTHS8d~vRFo-!XT
z&{1?yIx1JOe3fI1=s2*qI-!k-c6y3V%K1u|h*1VBL_fVS(%g`y3k1>7SS1{zPEt}I
zma0wD(xsrLzM!W_rl@VA2JI##Z<<0h@HD9477=Yp;n9ke!}l1H_yLT4b6gX((3l=9
zhJadPK`WPucuP(X!w4S^s<AWGB=Klkq>RRRO2v2@ds?cIqnkL+I>;;1JDO^jxyn!_
zR#`7PD<ukP0~aVyh$kV5o`K|l4t(oE<szkv(pBlET&%nxHi{R;ChU)RNxUp{rMuEY
zxkTxygeh^#Wy&k!RS~aj6~mNC$_~*>+0OEDmq<`{is4G4vK#X7W3gZKR!9Qcl>;JN
ziBS3|mnwagNbDQ#uS6-)$^d1ca!@pujNgjy#0cek;l)I0q>`j0E2EUdqCxy1eiT26
zpT!aJi#RHN75|8nf>f^%MN?WT&6Od_808$1j<?#zD;dh=N~SVFnW#)wrr=!KE0imh
zr?5A9nlfFPq0CffDYKO<C0of+autU{%jZJOQS#vzC|4<k$~>h=DOTnyPQ|6T6_2t&
zS*VmMSK~S65Tb2sp+OhsOMx%~5GYZMC;yFyb=9D&jcC;}G+4j{J^$ALmT`iv^F&@Q
z3A!s+I;Pxt$IX)`PMS0Iid$BRrsQ3@A@I(bomF)M3BBqS5P8`-w%aGf3>qNfI)Z$M
zf_N_@V(!{aid!jqA&@V;=z=bWI36g5VHZ*GbsGgo*b|dRCJavweuU6nv(9aQ-#x1z
zy#IlR)~vmE-NUtyJi7jF8A~MwqN>fBH3MJQ(D$0Eo%MxOd?^8!s>uLn5^~mA`6G&E
z$l+8Zj7r^h`|Wq!aVK4O-*xXj_uY5@{SQ3w;D36p4!9nAXw90nYaf2N_P@OzsjYqV
z(RJ(AH@YOgQU^^`OkFhHR|NgjD@ItF^dHb$%MiMN6Zo)JC1*S~Yzk^8nkmO1SBhD#
z?}euP0cJUM(3ew`R32rNh=4QwXpCW&XvLxMnd1K^&&<4N{9?v>+I%r{MZE;(a?-~d
zDQ$X!P9-3_zyt83(Te>dkaGfhgoG)KJyVcf0<ufykL`{@<zUMyW{0Q#{*!u~ZCvcL
zv&yDrc1lM*hYk49Nd+`O0of@aJq5HKA$0t@<JSYfOYrN7Ul@M9@av6VIDV8z1b%(+
zyA;2^_(kH^55NBSMd25XAH_3&0|H?4-v9dk_W6IMEkFj1u1BE#tii0O8EhvH!)~F$
z#mn~4nH~UiwtuTJ0?)+=t;HYlqctc+LoOO@F*N2IUuzrR;BX8yyvEnPjc=S~_#E&B
zntQbduV@1th}-xt8h2-V4L)PUF=u>A2Ir=(T)uf<&?Djl!B=+<()d2pWykDnL_mbJ
z05}+284#Qr027$gD15r0GvEPnnzOw~hd$GlVLhw?M7wbW=FF#FtN0f2bmE~+U&IZG
z6Q1cBZao}jK<U;UKX4<!%l$z>lR0#ym~Gu99`7(hrzl!htYCm<A^vNqAN*H{W`t+H
z^6;2sjsGG^b2b-A4S5ZLav6LjBRDqr7Br2(%N-a1JRMqyzzkGgw_$!JuM02}q}k$J
zBYcD5lZ=xWNww2oBSjKs@&fZqfmvp8lM$z2-Wqsa4a+QDcL&~N$x0HHB<a6j_rMO~
zzs51R)VMJX^KN=KDe%fS0=-#UV;_0oL#XX^EyC{(*p3@tnPLLpn#gWh<HrbBHM$oM
z%hahC*{XxDaw|wWfqC7@z%_77&0FlxgiE@Td67P1UU4R1`Lir25GcT`IuWz}z)R;q
z4|W%dC4r9u-~|D&1TP7=GoImP0e1wfP=Oa|L>2g54}Gu_b}70@w*CM8hnW%NX){Ql
z^Z0i@tO}jMuP%UXpex|j>iI&4{-@z?Gu-cnC#irh!tVmOI()LIknO7*o^*#E*aLsv
zkzWK`2_pc9;qM`}H^TCdtSh|$Pk{#5ORQ1J?+wWigHQ}Cki8I|0jn21jl%sA7)9go
zn}KJuK)(d%!M-yKBXd1qx;Gl@7F+PQ9ru2OjcGGtP@K1Le?3C`U{(JP^ZFkFZ3q07
zSgRg^J54zROTllr^B11~CdMm&A?$<i6Ise{;$fv$c~WVn9>VWQ<zf8QDu?hlR;A~m
z>cdKkx<z?dO#!rp{~l4NtD)*xxLcH2>N0g5pjqmAK#$^&LXWABt52yL)MwOZ)#udb
z)fdzk)lKSV^%eD1b*oyZZc|@Vx2rqUH`JZ#ZuM>T9ra!HJ#~+|SKX(+uYRO{tbU??
zsvcB7Q$JS^sb8pHs$Z#JtKX>Kso$$!wO&1}HmE<SKdVR7U(}=Ouj(=NH}!Y*5A`qg
zZ-)L+PpBtVAC{tMHrh-J(OPINwN_fF)>><;wbR;b=W6F^9kh;GC+&Rg0_`HLi`G@^
zrd_Oc*LrA|Xg#$st+y7gMQDArOSQgQq}ET1(xSBi+CXiP7NZT;hG;{zSS>*tt|e-A
zZG?umrL<96ik7OSY3bTHZM>GDU9M$n6SRriByF-bRl7pFQk$kt*JfxlwOLx0maXMz
zxtc?pqvdN?X>+wgZJt)76>IY~r{>b!nnzopm1<XOW!B#^&HTGgGylr9a;-wE)RyB%
zf7e@oE3_5b{px+{z3M&c-RfQHo$4Lx?domnt?Di6&FU(3rFxTEqu!|ApsrA_S1Z*D
zwOqYUEmN1OOVn%BtJOtnsk%^Ipt@A2I$teOi`61^o?58RRj*R#s17wtovqGPXQ<QE
zE7dF1sp=GUvN}nfsAj5{s~PHeHC;_pQ`OO`T}@PntMTe(YMeS$jZp`w1Jwa)v>K)M
zS0mNF>ZNKQH9`$nd#Pb+PxTVDhuU4$)oyAR^&<5`^#ZlCdcN98?Wmroo~xdtwpZJ!
zZPhkvYqgcyQf;9&S3^_{RuDxMs!utooKXHz{!)%Be=2_{zbn5fzbd~dN0gtHpOhb!
zACv~=uu`vhmG71Bly8-9l&_U9l+TsVl!M9v<x}MoWxw*V@{#hP@`3WcvQOEo>`~rR
z-c{aF-d5gH-c)ugyOf>E8_IU&HD#Mpr)*VTRbEkER$fvzE1Q%Tm5s^^%Ja%|%CpKd
z%G1hI%Hzs<Wu5Y<@`$olS);609#kGs?pN+p?p5wq?o{qjZdYzoZdGnkZdO()E0r4M
zMx|P*QdTI-mFtxXrChmAS*DaJOO++cwaQ}U8d%*H!S=QgHaIt|aZXs}N?@BSf{m_F
znG0)O0qk~jV8zRYH7^@>y;-pD&48WnN?84-!u~f2cEC*712bS5OjE|fN|>soz-B!P
zmc=Axq%uOW!(usHiHBV?4))QZup|yvVw6F!P7Z*TG78qpez02hh4r!zteD|SZ>1OP
zpgmy^?V;$fm3D*8v<qyf7b+Jhonde81nYDM*s9Nk-MT$&-tA!jZVfAVE7&Ppz*5-^
zRx1@oC!w5##rq#vzK_EO{)hNo9D`l+7uYy|g6-3b6~b?^QusC248OqY;b&M!JRm-S
zRrMoS-9Lb(eJ|D^--C_iZP?j&i(Ocud>z)`ZK6(Wg?;uF*lk~e4R@n>0k+-eVB>uT
zw%(_)-uon0oF0dz_))A4*J6gXmgirqdB$}=){gImmU0)?l1VQht%)?gRj_#91k3l0
zm?7N&*}nqP?0U$wa!9;oq6}*=OJG@dVU>nft&5?V&4X@q6|DAipqu7GyU&KkIuknC
zG^|5ShJHN}8b&5`+woWlNrPrL23GD-uy~Jz^*a#~dl*cML!hNz3hgKywup;itLT6^
zUTe(gT4Ij3RQo^i$08fjO6n>PX{)t0TCMgVe)Jb5YBeG5(V|5OhtG%f>kG*kA+FZK
zF#~XFeNmHWu|yk*`b|I$=WC<zTa4HOX=}AB*say>&|D}gpYKwcPHhpmV<%Av?lw*2
zA!af7<6Pm<1_(EJs8gG*<%-$3UjqI)4SaMGIBXguW-WN_bnw|Maix}zlqHBY0lavO
zwopt4hjxlg?P`$$PCZE*3l2RQynLLNWZ)y~McBcpjVD)VqrutJQBErOejGxVf#)Z}
z9|i6ouMLBAh=x2E1Zk0=^@oJG6mes5HwIE;u+|Gtdg56)BuRhBn{e$K(2K5hhOFs@
zCpu(OC&;ApA&0tXHl)2?oCDc(A^vU<ogu48W|gB>ts&EDHJ{oV@@lzIwB`u4fNTrZ
zR*B!$R@xtsiM6<U9PXcxi9-8Ftr165MY~J<0BQM$dW-Nvetw7N^j9H{Lu%e5enj|J
zq`gBNg{=Kn{Ykw|`~*q+G34!|;(+=g{KJsGwc36>KZcw>!@Z9Y-lOhU4?tq?hZL`e
zME?lT8~A%2GW|Ws`gh>(K)g30`|BX{cdBn9`~q}<jR-%D-wV(dUVwf;I>O`XT4)oS
zpfhX)v=-@VwRLJOG>WyXSFBebz~6(AZ0jJ|9>ViA>V4v2gdbGbAapzATCH{u;y$LX
z5-TA0ZcwWs`5qJH>T<}yYCJ7ds~`h!fXurVGH?aUy6fRDhs3MZ7DEzV#}cp@lCT)i
z^^k(u_?r(YSgXy01e^y6SgRF4A{N7+3pq#<(E&M_ujWD~)@ph9O@~aJ4LLX+GO<=0
z3+ea-I88F7V~U!LJ9hjY5mTT|)oPiLlH(yIhvUh3bsRz|ke_2AIbRZqfMOvx6A-Uf
zBl$T9&&R5R@wAUR1oE@D+K(k`S4h(VfcvOjAz>rncEq#CL?2FhF=T8P$kLARNy@f`
zOuZD^Tsz3xwusRZzjF{i2NIT~ZLMa*Gm@w$p$n>zx(|w$>Ti&&f8h6`IIj30V^1ix
znv}BjfPBhPmct}}Nz&G8NAWuhN&7A2@TZW(Un1N9=yN>(7Bab3^FjuH1zGzA<nLaD
zK~r!)gaqEtp-&)%cQQoJYPFA)C&ecSzbHsn*J`grE`I<iU8`+F%q@_~B)4Bd8thkr
z<lZhwddsx0!KYuXRtLGgMcIJg)5;T&*tN=IeE$(ha+2N8k~WNZ&qJa=r@SiGLvlX|
zNq#@>(ytc3yOevByKuJ_aqqyhn;^$mLdw_R{%vqc(o-H6ga2I)De^o<a2=#r9W?j%
zA*tvYxwLNlG4G|>i_qsR-{=|bt*O=C=lwDVAOrU!^eOauv>ATn)<a5u2A!Vv(|pbM
zXkQII`5EppNYmf(v;ng9SKJZ6=2v6I@EEN%Gj@OSonxX6)}gVk1bIz)w}aH~0O{QZ
zvbrPg*dW`_fn2ZE&cpq7N_Xf3wHmF4l3S~ptEL^H8PsZYHxe4ch0qwn0QZ0%F$ns^
z#ej9B?T^1c&@1|KE|JhEVxV^n#a}Y7i;hA(`8NbQ3Qj!0{b9H_R!N7Oj(hYp6}n6!
zG@20zj|NQP%kd-=>zxy!`OJjYb2;2vZ6@?02ma;&o&&9@R+|kiX$EwqS<t31s<9GU
zgg7P8rzl3PmXDwLcPo1Ne)R7{OeJeUFC-ZPucewINLwc@o%HiSsa%dw1%Bn)dH=Dz
zuH>AqxAG&6|2#ptEr*UDSjztySmI-r^?wHkv-JP<|F;GHw*~&U1^%}M{_nPcXhNz5
z%0>y3$fTcY{LC;-vIsW)W`NK1Gt-eDf*<8)!W3@&3yl9i0iy_9{(YsPur1RL%5z~A
z?hy1B%KP6#5jQkwH(IE%PcKyHm?hJ`O4@Nsc4OL!*9WmL#jh{#tfZZFF=*ex*drH@
zIpc8Hf|FnsNQcGYT{Qu-=~T?i6Y)!d4Ivpe3OnZ5BVa=q3){j-Sd%kgWw-*`=Pj@|
z%z)Kl8Z6V7!9Fn)_6R3z&a~I?J#`-J%(F3X&W5F;2=<B`tVJ(`g?W#<25S+;uyMq|
zjxiWklDSwdSqHnw)v#<_!~0CDVJEo}cIby;Pk9<vlN#7sUV?SyRakLu;=Oe%p?$W5
z<)@vpMGS>DsVcOu?q%#tJceCt8tg{l&<`Jhp4SzYq6p}Od)0X8fsaB*90u*~QfPLA
zV5PbjcB=&JY`YJ3tS4c&s>ht-H(0A9U~l{#bBP96`}$x`Q=wiCjXqQTL0JYX;Xcgg
zepFh(X4ncA=G)W>uz22%dConsPk)3N;=P!$KCgbj^VvJu`h1`X`}4PrEYLq<j(n;W
z`cL&ZTcZ6|Xt_0u?9k0IQ#UQqZP*rVgEjgb%<Vg{ExI%2_#JuH@3%?o0aoc=r`V<Y
zH))xUgLQ&z5`h+Kd<q7(iqUMP9s`R<)0XNfr`W1z2Ux4~*j`-_WU(#@vRN;L)p`-^
z*4MzcbFH>Si^Pr?`4<iQkNg_|E0X*h!n;2`*mLUPzXjNlD*vv<df7Wz8+Z%0g5Bya
z*bK;?umd)O*RXz2hjoN4SWS3EeOY}8Rs(4*cmeAT&%l!KG;9S=s!y;5U_Gn^kE)Nr
ze(*5t2Wwz2SPeVD11j0Z$u8d59$pQrKowg8u7`C%+QY9^7YEtIJ*vA&yLbWS{&Unk
zSOId?99Rp;A~1`s<kL^FlS?c4I9LM4z&=1T{ZW|rC#fUV5r)k?K^<n;&0}FXAA-4l
zu=Ttj+s|p{A8b3n81wqBr`XRsSQd1e(Mub8h}!HF>-pc7{rnha_D9)%9%wQD3bXew
zus-yk+s$8Bb_CeYx17OxzJcfCk7G7Yvv8VOuZ0EuA<Kq-59Z-_HDN=)$*`i|VA;_t
z|HYE-IioE-&$6axVWw!>)2A60^(kyqpU77AahQ{mP2IGoOG`T0(WMPt+Rw>$9%wV~
zu1Kr7-(v2!mbW!*<zy!hfu&r5mE4C}y0nx3Wm(F9!`z<i<Ue9xaDzB(*vr2&EaqRa
z&HRvMHUE_D3LjgR^L>Wx{9U%5zh&6Zcd`Y22i6fyEBY%~VccX{&!57YqqLa^+RE>-
z?BuHq%XkH>;?g3%R2#%r@e<g*GhyXks>Q;hy;K{BUEr;n&>jBgwV9leQfi;hog>sy
z5PV9q6(I^KqWnR=Pxt7e`&H+hd&#{6dX9Q>%3#M<cgl_1?!WTs_qP<j`R#!v^?&@i
ztbI%6)`1uHsGZz*^oyQ^+}-yj)*RTH`P7e}=Dy`SzQC(?ua0W3-hE!LIZrPbl=SMP
zF;8xPW$I0PA1rG4{;$Qme*2_6I#j>;+|Jsg3;X50Ffl&)tyf1p@yP=jD}Vkw@9>HJ
z?%mBs)J*7<^<atKY<<T8y<Z-j_U`M4X8!o`Klv-Zy!-0Me|@Pkv(3mm=Xaa^P>1l4
z=Z3`fdgt?`_YR$y{6qa+v#b7o+4)%WoR!WFiT7XLBkb`(QO!4>Kknz9C#S#t;b&K^
z|9VsD4ZqyG+|@4o_KYs}wK08qKGSJvi}!q^e){a-#CIAtXRkYcPf2ylie<N7_~@-0
z`@UBDe!`b89!YGu`-03%55(n;`*GHSdA`L}w~5MoUp)7bC-?Q-zV(;EUu^4~((3)o
zuI%&e%);@1T)U(&w6^^D&ez|3XTPr>JsMy4!rl=PZw<`|{p6y&;-8ne(@xB&enEZs
z?mOBqfBM&6U%k3#(6;TdW5V}dIJNcnON)wro4z=`%^Q^;cl-9vW8q~F-5j^}xo4Bc
zyfbZb!J*RGZR)!^`~RI#^HH;%5B}EaoAs;oWiLNBV9o1Srj7l0(aiiWyX3e1b@<i&
z+I_$L_bxkb|FF+PYc~wN?wMOh&3*6ci7B65ksa9(U()XQ#Vh}4{@wi_ba?&oXL_vO
zd`ndM&TGb9_2Ja%sb3Gfs_!q|N^KgbfOJ$-mnEOVbf2#F_=V!v5<hxI*B9<?cJdP)
z?byc-)I<u4FNzb*Ej@HJ8egv|?D>pfS(pTl8DR`IzD}6oFC}o&48t$0IGIR6dS6uf
zvfQ!?iHCU~J9Igo5J%)@tgEJS{JQDM?2CdA`1yVL6J_|j=M(vK$-It6Iw5A$#$a5E
z^hDjc5-{s-;%~N(Szl^1zKr^WnBgxa(A*3g?a{&rCmLI|sD0@&%Qeuzx|qDo=Vm!(
zeyxq?Z4KYV(=6Y_vyJiG^r%nGE71hto9PJ=Doe+&3_t5qn>BA4+NPZuR<w{7ty;IW
znc?A$F2buTezcc}b`EVYDq#9%dz-%5-llK1x9OYhZTUufn{)(0AurQ6+FO`@h0!9W
zZ$vk}F>TaKmv>q(=|}WT<okM>{g$_urfj{oZQ`L<?kSx-=-C7r|BK;0_!=;L60VM8
z=O^x*-(~0g>Ax81SIP9E#PDYueum*E8othcS;b7dpi7@_zvphcOgyegELy9)5^}Cv
z<{Q5%QR4ZB5nf%#>BQ<p=?nJDDvD%&;>cEczs`(r#LL)<4F?$O8s?fR_Uoz`?<!`1
zD&~MHW`QbZfj(bH_?_UNk9f4d=mPi`!oLW=F8Fm7Cw-BK6NO(iegp6uh~FTjiGe>D
z{t);>kuDZ~9Q@1hi^oq#xI2D5@Vf-Ro`@R;zZd-8@WT-&0)8L(m*UqKzs8r@Ze<nY
zxV~i-35IX-3zJWnd_(dReZ?QL9ghCSe$>ii?3YdcmHi`$N7>(#@(cSL3XZTZ5`SiY
z_1+)ZpI!a~`}*Y#^8Ubj_7g{X<^A06*`IyeckGvS{g(aJu5aY?gs<7J+wc|p;>j=B
z|6=<W?3aCgi2cO8&*k&hpUM009FXD1K9&B(pGZGyKl_RGA4z}vhtl6H`Cr-2_c>g5
zcpv*^y7cQV-7CWtd!%3T9{b|tJJO&2w)7+4lKuy~*)O|ym-LtJl>Rku$mg?Pm*H7E
zr0>}-?=N{xhF{qx!~5!F_<ZS$$G6D)V_ud1moH2I?w6!LZnN}zY?A&T8>RpK3)27j
zdFg-qob;O;{sqs<@Q7!mKYxSt^PZOe=TA!i>L;Y%^Kt1PTrd4+*Gd2SN2Pz&BhsH<
zEB(BOrJui6`q!<I{+frRzh|}dTN?hV2V^+>e(Aq`uk;t+BmMZhrQhZ*=^wd6`ulH}
z{s*^7|KP30^IN3f#_$K-EW^30q@TD_`nzhRpMRtD+gD3}PnGoVS|R<C<<g&ez4S9G
z4Zp&;UoQQU>!g3zGU?ZqN&m=F>6a{#e*0^szu_9`&%Rpv`XcFzQt5xOK>B+;(ywzH
zVVCjTDScu1`g|GAD3QKiEd9E9(oZauzL;y=FOYs&zVv6$k$z&H;X4dJ*YI<sKRa9c
zWm(d%n=O4|_+>MV@C@VmH0dW^Y23dek@@;3Q>4FnveZ8wnPm7A6W@6o*Ao+r^qJEC
z;&OSv&E-aZ8Hoew`gNQPm!-?}z0zd7x5r5T#?-_>xj*~s!S>d|f6e~7mp#-U6!-+E
zy;V@Sx!u$|==SWde@|=?@LVJwN^Bk!elIa3D7-bXSy1@tL@g-%V4@lnUYV!_g(dx%
zI0Ti2cvMzUdW6mL0`a6W&3t3}MMsG+SDc=cRa8{$)(eUX+yz;M1y?(CPf2c;+u_s;
z3taBd)5LL<x*bKij$FMY%ZYEP`J?yuxSah9i*vFH`#an@Fm+}vaOQe)9sP2Oi}FOu
z`1EAa&$#8x5yP|NM#SaBjf_ijB*%>^h$||I8=nz3-{qbZ=UFhhG;Yxqag0Dg(E{L>
zt7m6<a&;%L(_JNwoPxXpV9-0v)mx%z#VT;?Ily7AUgB^T6z85Xa)GPFh@9&v%v#iB
zT!+(H?4+u?3X0|!?V}eX^DK8kaZwW(<Sfc5bm%$7o+5V>Pm4=9S!7sFC=AKe36mYj
z8aaiz`Xbf5l7d21jKg}C8+Q?DWO2zNXTh9&w;rAop$~|Pii(62qmOVFWEJU2j;x}-
zdcNCT64$@~!i5X_W#`T-$Z-~<+2{3dD)kUb9jlKib~xwgQ#?hkoO~dYjs_SIgWRKs
zil~^l0Yl@WqtO8q7P;JxdHTYFT&h%2UcnrXQT04vsu#HQ9$~H?vJ+%mIUQNK)K;!D
zr!<pIa)I8?ob&0T<Q6+zI#IBr6!fa2pMVa9vvj9pj;AoosS}cYb=Ta2k`mz56q=sX
zlrQlcE+#YefdJetJ<I8cgPmVDZ#s+TU<k}Z4;qiSM~jN-yMx9PJwMB(XFD840n~-w
zb>~xa&YPE2l#9Vu<RIkbJ!)b`n~<Hrq`n9h3dqsJq)4$Nb3lqrP?V3`iHLKu3X0I1
zL|G%Vih8?|6&?ko#!!+~3pHwHp=wrw(oV5wj!PXkI!@299_!THl%va2Qc~=sR&UG*
zK*Euw21?<s2)$rVQL)pJE73^~8cC-nHki(YiDP4;qKJ3If=$WL<N;#LMEmIUv8kzC
zvvI|`eR3v^N_P|O+gC@Q>OCS$^bADkVYCJ%pfJ~-sU#0$G`FAe*s5@3ve~9YNk&~U
zB(oQxgFs&aP3c}#;xI-r^*Oc4|5R^NUIG1_Vd8XZKTl$6$e;vGTyZ)$2-?hu<?qa(
zxMnQb=(BPi3v!Av-opbKc!VCOi>T7D(oj)UT!eauxyCQRh%ey5K7zP&CUIx$LZ;mF
z6C7@Q2x^X=&8*pC%tk!K>KC0yxtZ}Ab7g<Tfd!J10=mFr0VYvqj?{}?IR%A<S#As|
z$fAO5$*+v04rgAma~|RIFEIm>>X1Ml=5_dpsqR9?pofAYJvlieb9_3n>8#vbr^Dsa
zqhu+TM3q7!FN>IZU)`BAOg2eUu_v2^M7{%p3cRn#kwc>x12AwH_a&x4q#QX)cNgo$
zvb7!HF-(Y@+9Y41Zgg8g4$!p3c`oNi{1~)btY_uqI7&#|yWCEE6qO2;=r-cp7`0h$
zkJF(;7s#@(cA2-)RRR3Ly3Mh9T;Z@GaI{<<4Q=9NGW$44D@M|vY?vNZD#D@$z(KxO
z6wGzFy6bwXA@z+qS<(ARjFU^j7~LqtdcdWHxkv&av#EZE5(Kw*enH7;npTc*qhT2z
zS5}^59>zkPK8kw6lx+d5ff$3IAp3<{^v}QqBfXwm;L1XugWojDcOpv*H>#sAD)u;;
zu@P@K^CVJT2zrJP(X+BK%!!}U>Gb)W(YWywlYv~CeL{*p52!*0oXUgxf)I45EU1B0
zPs|LV$Ix&<mSHX+VjwA-A<w~70O@H6A(l8v1}8G=k>hbX9nf?*^GK&-p|b!yAW#RQ
z4#_1Zq=y&ep%PRdw=*ket|K=>Hif|-PM-y6SB{$ix|3sy$Xe>GEIm(~g~KVEo%D>t
z0?<B?h(vp0xJ4EjHFEhSbYC6K%5|cMIUpFBobnI8<EM`a#ZKoUj21)t$wm$JJkX3w
zUkDArQ{;3M77zvW(^Jty3mp2Kf(6hDJSB_;G#Dc1z)mN!YfLPZA@Ip6n&Zgru1`V6
zVWrf$U`M3+EJQF=Oeyvh<`OYMqRw>~ok<DNSRf)JITY%gxx@8oi~1MM&;@1Oh%f_k
z1#ipo5Z%!brTZhtPfAPTM)GIa7}vtHLY8ASDmnkGQgW<DDII5(l4CVWDMoQ$jUO9o
zKs3aijvV5;#JgS8y)5jZ2Nj_g^@-?)xzx<WgD1JN=733n0Zo${nQKPqcvj6^abOA1
zMdC?YDJo6~<`24_>6q^+KoR|PQ`z(La^fbD*?K(9eIUggjS?I3*P&-lh#W9*fPad_
z=|&)3ftx2ojnbI~kxtcLYFG=9y7AO0+~bPioJQ*LQbCU-bviIJGbft$u^w8S*Mu(5
zndG1aEcGKW53An($2w_NoGPhtb6Mde$x!ty56GGaK8pb6j0Pv9)+^BCd2$z2B4?61
zAwwU@Q^h2n{Y`^J=ZTXGy<U`y4n*<{U=5yoYHAB>zxZYikg*<RVc8h4y3Cxg`URLF
zc2H=564fYuhUC|n4-iw5)#eh%H;U*Fnn_Np?&#qzhl9jURLsDLemd29k{%CPLY<Hh
z=UlvS@q)N`>UsKfdcw3gk{DTTYMwJ(=~5Q?XUbBF6i7NDoX>EjdkWnJCD4$7i7}jL
zf~98_78Wn0(dfv^$;arN?{UCRafXa^;)|A$Bb|+eSg|t~b4~*x63M7?(P?u@DrT)l
zO17+`MNqy-gcWmEQa|AwCjVOw;3Nfki#V?5^l=TcHU&#xs8D%XXb*j1KE#F7Q&dF7
z=Q)e#feKtX&Vmv*XX!d^mJ_J!FqJV?5vx!7O2vX_%r0hSdO_Zqo0Iq}1Z6&p7(ef4
zVZvxMISXObl8eYxgdeo;tU{f{8>dLt<4O8acO*>f>xXCPX*8=3;0hGY>^4b9F3zEp
za*%V;S>Uo+^Q_^Tkp-pvl!xd$f3BRvqSH3sNH*kLVsIE%Y@lSCx<4nrLXR)<%*%E-
ztzymGQY}?HFui_BqYM_9@lWw5JDl0Ykle){cZtW{Pmf$c|D;$$)053N|CB`Ljmtd_
zsEu4xnwwa8%-195a~_4b%{3TqCOO3imn|XF7|%F7B;+9NjA@|`g0@UolQPrd^mxMx
z<;q$B(_&VBKg<;86nXj;JLmKV9#=uhb@ew=_fH5FZ6PlglhA~d8x{toz2AU5mw-Hl
zK8l+Hzv!qa>j}@*!y*T{^kI5fWONLqEi{s_+!>^MghdXO_XkD=+|TvQD-q<F+A*fF
z$lKy?dOXeD67=|Sks}tl9j*jH8l1qq5y}<MU?>9~{L(e^IZZa%(a0-%K!V<{Uq1lj
z5(LX8VKAW}&Mm<F1$1t1;l?u^%qxJ7Ag#fQL(I$6xak4tNHSy0<%A1XS$0r{Gi#w`
zUXqAfc*SQABn$^7P}cKYR^C~;S9x4+(oo5+A`QDPJzS~>Fh~|IiVzFjS<X2q!>z|p
zo<^|4JtLuU95CuUGY-M0#K^-0T}B9)spl~_FUnceI6qg;Tp4-7$gze|_mn6l1p*un
z+$9&96edy=GE$kph>|(;(4Uyhg7NzYJuy&XKO)~zh+|ki1#Z(+ouG?^1UR4&Q>A0t
z@srCmlU~466F_$~vo%SA1m-C-VD2Y#{;P*mb`flPhb0ZqFt|<Q!5Jf=xH;~8%h+mV
zWG04XCMu?|l;j--x(+?eNwWkdVbn%W4QZHIDUE36lVBqN;x*10S#n)yE=OYok{P7U
zT3^6)7?T*7H)W=*#+fKb4Jy@X<mrpUT#G}6{}kgaKAzZYZYgH{?QJ$UjRqcC@Qu+$
zx5j~sP@Op0zqYFxt8vxNqS4HxE=QrXJeYaVbm$T}SYZ*(ai9TC+wx{6jhg;+6`%^5
z%@<Hd*;AAk5i)iBfKoC-86;p?Y`C=lu$Ruh7(EBlWtc2IR7?bCLN)wim951*7);BY
zF*Zr<HZ0!|KL0^N8q_cx6uI&sc97DTauM4DKa=D!jRDYy1i<MeFeqWh3=Gz$l9(yj
zXV!?U1{q{UnKz=UfKI`*7>b!IPLQ>!6pWshicAB5U$Jl6jCL0GveVeg&_@`E^ISlT
z1j4^Gdy{<KY6|A)dORCAjXLwKMwMPrT<C`E4<JS})~Og6tBNEgEFmEWshP%ay9tV<
zhdXmfu;)ft=#i)}v745@c<u}+1jTtU7sKIkPZ1j7YDtm+Y>jAVM7AkmB=I&<2czwe
zKFeR?sWpK3GAkf6!;MA=gN@QkrJw!FC}%|0FAM{74aU$Pr-_zbK%!ZnM#i8bN8yZM
z9Qk1*ESn$!%A!#$Bfo&kn0cMCI+LfdreKhXk#BHqj3|LskqcNRGl_$C2niE8*hMQ9
zp_9nqh2hbggjR2p<&YX+YFr?CEQSS$Dyi^chJ$$#WGzyM_9l7Vn{8gbnV(uYfdvt|
z5aq@)9%}-SBw6#au}E6%F^ucxL_aW^OepyUFY-c%jRWV9mLR|Wr2{{ft!#nCig(iq
z1GuiGf>^WLrjyKru4fr`OE9!&xoG{L6kZCM&2korG4;WuYmP%U-oGcN7%<zTu<$TX
zgx*K@XTUeW06c!-0Yd|3`bHmFshUPhYS6rLg>J}olt34R(G2DS>Qa|`F4h&TwJll&
zffCawCtivTg9?)ewn|-F<aQPpA}v{SvkHl~FQN%Kt#8PrQ?i^iA&--*xc;Q>;$j`E
zyNe9X05is*%>L8F(yVpr(#_cyZ!A^?XW?2@<jyL^<P?%i7_ICm&CddLIC7b~Eh25y
zG+0j8nTTKnFw81a?TL<z9@3~)d5#u`XmZ3Amrx%y9mi@m8HtRNlCT2sZaSrzJDD*}
z;&<vjg0?33$6C{|dxzy1`$?>78@NNLS^7GaASe9N3}Z6xIN6SJ+Xj#5rc06W8<&tg
zeiSt%u?fs&h?VJPfas6beMqx5x*^oiHc%tuP8`-44C4w#1tZ2H3(bi@cSuiJHZHQH
z*ySpq314wxZlue-h?XRIiwEyN(18Y-ymfsN?+TL3Q-KlKaEOVw>>*gAvgW~P2kC9j
z@p<P@KY6=R>AWJ6Q#_{#oFD+(I74#eVd=3@&ntA4!p21+3VS=KdSp4`YD7k2$sHA>
ztuwrkFASwRcM;5#1vw_qK$9+7G%E)q*X@{<?a71k7#?xPxK!SM5)<m83t47kMkMp6
zZbX?fALHp+)Q9v~@Es$Mc?B*PhM-I*J1#PyDPRpUW6}ym9_*r`pos3G@StXsQuK^9
z#x#Cb5iDqDRcl9)3v0th)LG0KQG2<|AdXs{xipPq*F4y3S)@Q0W<JQuF|!qe8|Tc+
z4TlC1Ai(@nG4Q4wV|PUs_K_7770)963qdt!7AfIq^f+u$h@jN&;vBGPZYCIqd2!g7
zn$U`ztHhe85LZtoZpT)UfO6Tc3DcA;gYt){V8d&81X|i{iKI{@T0py@V1p;@QDt|2
zF|F%jR|@L@1|OBO6h<0q8#8CZS@xzmPcY|^G?N-sh~+yP`1J6!GdIfED8tWs&Ri*0
zU06(?b!`aaz+~LFw7kr9B&|fU0uX~->Sw{uDGbf$Y*6~I8k#zh4U&e<%#=eVSR5d1
zFgak2jn`mlvsE$SirKQqkUCjz>}kX5oV4TTk|`f_N9(7s+DY*u8NSmI>EBLaZf3~J
zBerVN4rd~#VI-_%YFd0{te^sTFbc3mfN+b<EnX;>APmgOcmVn&_Rd?!*g_J3u7QjZ
zn--E?9_-?9x$-=eX%Kp*LSpXR3Zp$s7$%6t>m;NI5g{9-gB^0jJ88VZwuf04M+O$-
zWza~>I|aaJWi24=sfS@}2c7om(?>Fw%djJkLaaLKVOV?)H>et=8+5Hlnoxx9SL~Tw
zLPaLX9qkyPaG0YbcouEwrx;U2gqER$NL4Pb(C{+q$C|K3tATq`EGrh#k+tv3Y9%sj
zV|%Hwph<(xY)Lc@WL<FkapMtnVc#9?bdb%~bTgv$WZu>`kf5TNFZ6}%#rL_e5()N6
zx-TR=^^9!2Qe-SmE_!#`I74;^$aSc?#q+rJtm>Hb3qE2XOf?DEm|?YEP%Fq}+%0F5
zj&0kg+xEfx5kQp_a8|(roS-<0_S;$G#sL<bnv3~9_0eV0R0!Q4ET0(QgyKB+Ld*lL
z?XmQzUs%p%x=4XEXzCG|tjMrdn9ZGgn2*r{G0`JLBlG~$t}v{!n~W=kFIb4tX0&Ar
zOD8-Xl+ReY@f?N63vzOc(58x|xo2K6Em#tVkRup-0l0QaauXD(!Er_}lHmi)BivIo
z7wuLgx5iM{SO!Of2{5CAiYqr^0@a}XM<mul1)7H@B~s;r^_)zW1`13i7%<peY0ZVq
zB1~K)4>KZR61Ct|8BP431S=NGQBZ(J9wf|jjrpq)Q!--S^eXYpFwFMEOQl8LA^Z#5
zc)7UHK|5vqk0oJJ%k!E5^{U9k(HF*jTFn>push1*%4cR|fS9jAZzKVQ<2=!h)bPVB
zAgmy;QNSIr9$xBZ6B||BRN{?v0h_vw7CI$`8Iv?K!VK(E2kSP6D-@Y*!jzXFsEeD-
zC$bb}L&pUNXF)~7cZ8WNsE1A|-^AEl6h+O=o%;SA^G2btz<Eljn&TlFpnjT!55gr5
z2+}Qa7A&BRon*$8icFDX;Vd~nqlAr&*~k~l<ic6Vh*)qFF{sLt&(L~)j;Y5or-gtc
z(*VuCO;*afQ?93kay%tBJsfu_33gUu;sN&D^u;ZwXJ9-wdY(b%h^8-!jcI<ED_!no
zm`KYz=^!0!Vx%?E34|$jD(04AV=>uGj62f1gzmZY^n#)(x}Kg@3RfpNHv*;v<QeI|
zbOPB4bma}>j`V_V1ty>jsPb47jfM~!l&gou7(ar^Bo;Op00qc59vYIwq{~GPmnbUc
zHZ*EHz62agw&{3tt%uqw6*EeG1g634aJvu$YSm$rgO(-J5L(8C9Tum9j7Q*%M)%2D
z=wU<AqG4FmWqirO&SMZ3h}nG#9Z>D<<__;ByOTK%-ld>@Gs(OaQoi&N6d93nVJ!mw
z8TQf1X+h5d1K1Z&yG#*p#DoEX4;sP#c$vu)k|(n1vDk%$8)#mEmw{Yn^2E$5^b$`Y
z>{X{;MkKtifVXu_Im&D^Ag&RKMm(tZG|`Mm6AR`!X!JIHArcY)1gr^5dT%P45ozSS
zTt}(nbkWS5FriB;E-q<$j2e+ffVZD6AD!0j2`3tv7<VuZG<5|;VrpzE4stTc-WuLX
z4(M==*#nA%nYYA+-H*j0GufUbrevm0OlELa+IZ=wq{_Q=gCEbrowV`xBqAcZX~D+*
zS;<o;&ax*ZWy<IjO^i%Q&6t&(X`hfRGDfG*N*-q)k(Mmt4SfKUK@wUCB6ak*@tMhD
zvOR55vY;%IC*ahmaT${)it&>sl4m6$I~B3u1W3AE(q~~$uuMJ${fkAsAt(}14N#{@
zPo031tH)1B6<9j3@<|ZLC>x8(vy9pLGz?VQVl8Iq0I{rQpBNi8AsR0gVGzdg24+K7
zX{;sC2$e+<M1_#g#WFxeQx>cVv-As`Vnc)RZ!9-(GKT@)!I3g?B#ipJ<DZo-V$+2n
zIZW$>^)diBH8esDbYnLU)?aAMH!7J7oYqciY$L+<cO;ZTD)5a#eDcrZ$|#`inVdtm
z$5q0iSu}IR1_a_&XDM7S3H4_tck~8oS=b?J41Idp!)POnhcl<K`{%k)!yKgh%BxQw
zN~lZJ^{`l%7**h$$C~wmu-txOxdJmfJ<Ju5J@scU-uR=f_x*G`?M8=&fE=mQM)6w?
z)U-UGh3U2^3+4iIFGkamvhc1(L8CbS7Nq6ZS;z-Xh#doRp_`DGdHLhfY>~{M)YLRb
z3+NL}GJ@=eaZoqR4uah)2lf!W=>a(}ZMi6n)iSh<(J<U-#+0?6eg#eJK~zPw&X20{
zv|i4t3aDwRA^Zi9?rh<2WeK4G+OkiYI>4HJW4}~EA@9Ax6Qkh>kAS|7ld}+*b$RwP
zY}kV6EWKARnl5suB@7$b53ipDlmc9xAYn5;WHOl>%=p8gF`<)#Qb-|1lwXYL3%!ws
z_Xb8zFiFur=OFwij7*igY=W|&?uPjtts`d@hK+$J=d{UD6ER{$>Ufac2uU<lcV78o
z8xy^t5NGJ!R{f}%I2x2}+J(kkU!Zv8V$$5dWkK<Rl3Tf-iER8-8ALjgl>a~W-aJl@
zs@(rS-P1!BAT$sV0kzo_l!VR#1W@d(5KSg+7Qn0C?j$o=WRht!6G+snt%7m|wZV<6
zh%F))5w5LQ1^KEpivnKM5z&i^(k^I3#KsjD<oEfU=Xt76*Yr#}nC~CI*Xvu!^r=tP
zd7rILojP^4^0{X@G6HUp<7Q=t85W-_T4C~I1%1$D23lqj=P{zm2o?M&+u5iIU@w(y
zwHh~5l-*b{j}g4M(G);tMO@oH4%HpZ9Dg=4$DDIc%q)A!S$&I6a47s{GGJ%M@+)H|
z_fVLR#=n8Yep@Qo4HUl-S~n=)=495S<*V>T^4zH|zvA4*csi`f=a(&AyehMz&xcaq
zX-`KTN;*Yx_j070e+gw@?+~i@Xk%N0Ila;&tG8nWA_19fuxPD;xFL34xOS&+^t*7Z
z$4i#%k<W|RxYzRg4X8IrRMC^7_jWY%%3uEQdB$3;Zwi?jyaD6gvn!&lB5w@}R;~9n
z5?|fffrsz>MY8K-rq2*&O+M=6ag7$Ex!U;022{NAv5a;oG&#-zrAC-H^k~!-xNczN
zLQZzg`m*L!T!JV|vngXB$l=m7>Yu21rl9=epdMe^z62%siEjO{Tf2P+|7P)LcIc86
z%GT~XfZlqPRw$_Oj*M~@?t~jEc6eg((nn!oeIVMRqv%5O(|cM)o3}IO{DP%@^HERt
zw>oS@=b4{<n=^_>Hvf#^1w679dDm{Ajby%%!@O#(U*K}Mg*quv@@wms!N`Uq*wHYi
z5zNmf(j2dsb)3emwxW0@UQKth3l|+noZLHgE!&9EzP({^=SirO&B~s}1Gv#3&}M|k
zKj-hENXoZvV=b!?dEdW=XyB!sT?L(+&t7ueX31X&F6-ut#<qq@iD&I7o!h6PaH7km
zn<lEo&W|5oH#9UdIJ6cs032IWd^-}ZlW$6rLQA7x*wdyFK496~gRWnBQym#Pe}HwD
zcoT`gK9OB(3}Js^W)t3Nv~QX1qEp>wUm(ZYSiHl2s1$x&-<stM7Oy-}W~sj9xQ%Yr
z>Xn$g9UT~UOBbE!UxLv8z8x(k!|uiY`HmL@G^?P5!M)KTnA?0AAuTl+>*+@@*yMCy
zRI##!;sNceGo)7NmZK*Q118pHR?S$6Sv1@F9UmTpnX?CWIF3n{s*SS-D%7UY$PI~(
zOUEe<Sfv(Gr5YJ>7ouNJ>eOa`=}9YsUNI&!r=@HjV&FB)@rB0+uJ!D1-C6otA}Py@
zt<6wuA(j}RdW2qZ375>ckRoAt1nrzBA#5Bkk1dauNe(K}sgY~jI6+tf%-DeN`nUZt
zPiOd!4CB3H#%Tosw-3r<rfe&OKKWbLCE<D6QpV0n$fYjC^ODtwv;5-`bJ$2;pdGwG
z5|*|k_S2P5=gS`YCeP#h9d`ZCRCjuo3sGdVbLBLSw=8nuh*sEedm<+=zXxMTTGwFl
z%9Sft;!<!j^zimAZ9N|y0kawP@Zy<^EQ555oskq&_q9jLKOHd?S??$rv(g?kOCikj
z!<Y{?$7eR-&*u?TrhI1r;>4VW1d7GW;HV=8jbhrf@2|BchOhbgXJ2%KNcxXS7rRbl
zZY|9`V=vgMS$4(Ts@bx8%6V?p9NC?R-P0lqyiS@x=23T-D@@K)x=PLt*J0kCfNjq$
z)cZPQDocFJQhx3Z+LHaS;Vo>4@0Ve>LZdG)=w<7e*Ty5!Tf=E+HVs`0Rvc@~a$RJg
z%&LDr2aT6AT3Ja-$<`eijokM)xReT7RG=UceFjWKh)wY<$)c#@knj1zv-?DsUDtM}
z^Mo#zaQtz@Cq(10q}^mQMmF_tW>*4hPJE%qa(VPj3MuxKX#HG5AZhtp3_RX){!-tX
zBC8a!wD;9z1W>B28O~%yS;%_J+V$GW-x<VmH?5vComLxNx6TM&sx(|2u55F0SsvK+
z?uPS0Y+IU$4q)wzsO@PSSEP~lBuON`UToj$JEu{e`=Y2-ImFmlybYnF)c1s(p6Tr1
zim;<+qBM?PoK`Gcw7AbtX7>-($V1!#tS=7^%<vapM;OX{e0iI&=Ein!kc_x~Xc!yk
z@absi^8Jc<WAKw?beSoAx02!S`kI5h;Pa5hHF6t6M4nm7p?$fPboNF}(?3DCTkh{<
zOCKsy6^R8)-mF_gALydJEix}zvp(9?bkvhY35AvKf$frAht{z3OGCIDGMhHTt)+`r
za$eL3hVrdK3;d>SLl|=>^L7S@xXjn^AO;ZN?rFVhdQRqdNs|K_QEfpm3l$QY9mxGy
z8UQ2e+Ao>bv-~;CPvyV^c_klvvD(~thF2`S6#mUH43E4jcJ@EA{ER(bx^QvS#MWv`
zvRCiphI!sv+&Z0a<uo*Bbh;^`!>tr%!w0PH!A%i3@{D8JA*38~%IeY9AUGEF6))HK
z54}&Px>=d!XTRQI40h&xn6pn7a~9SdqsE%KZ8wY-G6f9QXWL15MO%XceEVPLOWT3p
z3sL9bgn}RR5(cO>WMQ0q-j3~saIiujFFxfMioMq33b#9}r+j2#QW_q-7@LKb^zeQ$
z%8x4>Ku1yM(?Qu2l_9>(4H>+hKwjg>%`kn~cQOM#o~<jj5zWC?S+fEKH>2m;owK8@
z>`z;PQ*Fg{%XSdpi3(Z<1g+lr0vG-W)1~E7^eh?^i_Z4<;PSS6iORt+GJ3~@yw$p>
zxTq6tnP4|{7WSR^@wCU!oOvQH%89&T2eGOQ+Q?#IX<0>izX#DAuU=yJs5Fm;IYwsl
z@_ZM!cnjYPVe%u1x=fG2?p{g|4kM9Kx6#$$dxnl}X%)d7%48PdHKh!kLG7GFud(#u
z##l8thD=ZkjM?<}8?q*H2BuPP+dMFgmjRt3(w<jipdaKU^NLUi@r9A^6KEriSDRy;
z-Ecm6tzD;8c7%6bjNA*?UtDAZVK-O6+uNfHV8ouLs&RXmsD@dZ@)qtUNsZeJDT<2X
z9*r;yuJ6)4Zi5Y<2Bf9dP1D!j2Rl{YTlU7SzqhP(`CMs>gjL|r!oy|@#*_NHb>MYq
z8N&T=yyk2K7Q?i+VgbLGuyH|)-j%5Pv(mgi<7Q^utI%$<1FLm)be)f~waiwm;bZz?
zW&rDpp?W{AWwfv29WwG(nw?SDZ0FeG<F?1h=(#@Cuf^#Wt(<?>3hA25x4Hs2I#s)4
z{0lGZzj%9JiWf&&+HTRdwHt@Fj^}ppl%MEnyR;C62E9sgn;3pDg6Ol9k=iI`8fv3O
zX3OwKq-=Z8%mKYLs30wDy=8M%Mm&dPf=R2d7^$<ouzcYfKcJUg3Nv`epc87zxvgrx
zZz;wQ3Ruo`cni?eVjQ=9CN8eGX<hbX95S1DkyF2QK!{wr)7u<W%g8Wnm+km7)h&{)
zm!;?w?7YP)X>AF=M`c5FQQGSiZ4Pn@73y6WR4o0uc44Bjf1=R%BpH*+XyN0!$>`zY
zV-fS*_^N&3&^9i+iIof2j|}3qxa|%Ja@HE(8@Lu1P#QSKyw;A7a+QM(+qe4pX&8|-
z!nqoLb}w6PZIq2JpL6C*GIM9nnmfK@=WQ9-xHgktgpn1x^ls!>lvlRlO8Uik;M%O+
zIW@+aPGLHE<{X{KsWtSrYb9ao%Ar$c&YB=ZOexOe!x&?Z6_N7wM0<<rA6U12<GEPX
zMWVFYuQ`JoasV&D1JbMr2iOkfhi75t&rJUa(Eb_ZCeE!vwbr+lv3!?_I2^L$8}-;t
z>mAj;(@t@<hbOWIR<&+>`xr0ljLFKK-q~B7F_EvG-T{^tqH4W`<g69J8&F#qBCC7n
z?u?v^M<@)znA<X<EWC0jV_H^pE4SZt5fJxgEI7t9T$K(DCqA>v@zz6y7jTbSPTE}A
zJ1H6k7X!s&<z2_%NhaYFi_2dZ7M&X{g<U|2ppW4K&)a@z1-<rjX4?tcZ_6xNF^Lry
zR$W=G!-Js*HebNIrG)Vy1LIXG@My&%MQCE!j`stugM;oB%q@>9JRB{5-1ZY?QE<AZ
zXU6fptu8i>orPG`aK+0z#wqFxl-`AL9I*B)KAqa%mzMfb1z6ex&1`%#)r*h0YUsvp
z)fA+H;rz0p^Or7Lya?^B7)`hl{e-P{*w!)4{;dN8Td+($8%X_N5-yLd<()g-cWS^m
z`<zwzlk$1&abSoXKFJrqkylcm3H(OQgrhLgeGY15s8ky0$KFa=JP><UW5Z>L90@wm
zTjA4#zMHglG`fd^LmYc0ezp$!ZZSVGHf&5r^+l^}L8Fs;#F1I3wQ{0V<cahs@el_p
zaT*F=M6sq9Mg?Mg5ymvVT<W^+#7ur6Mnq@>2Htgs@kDWGIkELKq7hmC;yCY?-^J5)
z)q-}t90xRi*kEzfmI0!+%{AH%+Fr55(}xQ;a^SYwbSu%+v}o~yHD{f>bmij0s#o?c
zEG+T)#-9mxmo8hj_^kQM3O;)I6-)b8dmDCm;fm$U=l3mYJGOZFnq~7>uUJ`FzG4wZ
zsKY0-&0rOlw%bM)DXdyOpJUkro68q3U$OF)h1IXjcRapwejkRahd_S*%K6I|uU@>e
z{V0d<b#PvWt&{ItQCK~H<ynhY7yNKPPh$*vp|23RxGH{Q<4rPbB*H_z^*F(*>?MZ;
z9~c>j+B>DU_kn?km)-tED?DSKQV5tljbbHHbbO-5^tM7fAfm_XZl7!Zwa)k3BJAxc
z6u7r{(kO5+o=P}1_5mzUxTvP*#yqB4Q?QxxNJd|w)2?6Sg3cYk@h;<T8c^d*(3Xyn
zPtf%{G3bj0)N!zgj4t*xPTz0bnI#w&iE6Iz9z-jOe<a|^wie&`XupW<Ni=@rUfhHK
zTYbE~<)*D~FU+fBUZh$#PJ6VFU)mhmYZ<i7)lRu|f*{Jh?O*>p^!-WWrkstxRw1Wj
z%zbvY?_`k|*60PU)wU3vo!9}H4Kn8Cf4tXy-wwchbB;cZ?Uf(F;y8qJaE>Os>HH4+
z<&GN;GOq`CyP`!!MlQtP=GkPAD$_IVwp&{0;K1Iw=p7u6U-$7k7RMCk?frR{vya1v
zlx$J%AVbTWa(ljRcVO>Cu-(mg+&TqqOuVdHar>~0>xo`VTRlG=JBhG(3g%#JWbLY-
zX7KG4A8&lV!dHoH&=}tlIFpKRck-zbss6<ZwU)0a_AQln+k(xSyLD-S+dGNd=A<mj
z^MAqN_(kg&*D+Vka(1g9%+jixZnV}d*W&k1)W(J@9>4LzXHjH-lOKEK2Rd;&yI%lG
z>RM|{rNL-PJQh+mMoEVZ^y|EtC=&<WbsckYTP-WF9Av)TcS$YPMRQo!3f>#L8@@Ge
zBWZhR_GbQTcR7B6I>*;8Pn5D@H=HGHr+!Q1wf2t7i7F~FtKD{djq$^7hR$(mFPCF}
z?xp*nJ<fac>cztQPhCFW<=4&Cv%bMSy&}fh1?gD2b-Eq~?#;_#Ztnf7VJ^onM#t##
zR^n~s>+~-PcF|I1|KmwA&iW)$Pvg5mutZ64i^j0PI^L+T)*Lzy{bCR3|HBAVEW5aF
z0MBTAJuy1q7rv4=$=G?!#>N~5u8S3WgnOq^aP!^QFW6?I%vqSnz9QOMn`B|D9@ReT
z8*z)?6Ll1ETdB<oOrih6*dUsvSgi!dOZ}V2oWN&w&>iW|Pjs%6o2^%_IkQ>PPgIu0
z?e3kN+^X?01hJI&4@n7`_E`tB9FCVK%}b8k!N#?hV7$+G_;Ism&K`489vZ9WFJOgk
zZ$IS%XEE>?Yo=_(XF$-lh(Km$oQXwDX8L9F+OGTB3%1Rfjd~y67mx24;?M%F)meD2
zT#6}EGOC@8(Vp^C-Tc@z#yXau9h^Atyz}<V4PT86BKQpRf$t^7#Y0c^7R-!x5_q==
zO{4MFow$$E>914FFt*>f3E>k!)@MF8AD}KBgt+TV!dtFGw)8zc9gYW2GRd?P-A-dH
z@9Cq+XJGLsUQBncCQMZ25qF-+O*Xt`y`R@Gjtj92=+^))uoY<>`)C@&II!a|tb7X=
z`I$F!9+#7ByHCUkKY+D+H&{gQ?(66lK6bozo3GZ%<j?V(Z3SsU=cHs|JjQcqY#hgN
zP%;Uh#&D|JdX4zHr`bt8LBaA*<))T1&m=Pik1~7I@iX3BL;N@n@7I?n-{&Di{W0U1
zy((zcL3xnD=RJn7i0anDV6-+7+SGlM&$^+J5qxio7V+FR3tLMCZvm!Qpi^As32Qxy
z;rF@gw`d6{TkUFsqjbtIS2YWvpR0efvY6a5_J?-2vX6z~M}!beeD@2ha@n?3VzFiI
z#?9+z=|M(BcQKkkzQE)y%=SEkwkP2Y?D_=Nz$3uyA;dhlR=DK=ZTZWC#re1-p@kb!
zv0!KPLhLr&8R--ww|Am2erynpFfJA=lnoib0;rFYeEeJ&D%5c{NL8*7YB>@grS>Zl
zahMjrd(O41F*X#-vifg0`6f``)UT^pam5>*P0ku&+j=Q}@m8Bd??;hHNi`Hsbn@Sh
zi&nIYR-lM(1S0v?I5xkgnRHCx^Rb-cf_W^qYL^`M<4l(Lb*lZ`tX8ioDl22YODs)m
zzBJZ$5iD60OlEGY=SukPgKb!(lry0-Xm(|{0fuJ#R|!rM-ho9%I0Mx$XFHr39N3_}
z^TvwRSy)w+YvB9-ScG1S@^(wJyRkH9VoUyW_V~!1PU)M0HwnM;1;Xva>_dV0qZedw
z=gg=Z8Y$ry)xnj;NUi8gsqtj+G~L0w1|ol6`}ruU^5N0l#kC7ti0p*6b{AWLpK){r
z-+g@LbE&(FZx^-@-wAE)F1`Xk<M;}``}oR7UUwJYE^Hyb6WZEcd<A~S@fEx+zN;3m
zT(H0w5^iKYh6CZw-iAHA*7!Zv<rZR<2o@F`EQIRZMjW!rsh#q5GFaN`>oMMzSlT><
z0guNYy?W`2g*z6keEHEQxZucgbjHVyphF%<hSs4oY$n!ez+j>oi+Jz)5aNBPpF&@r
z#fNk4a~N1zfuUrvmszuFfvy|U*%HP*W3dpf2ZPzW{POrV-#Z{(a1$X&`hI-Ld;;74
zJC(j{MRK)0BjWBxHn|uL)?GdyZOvS{V(FqxKUP5Ha>Y#NRs<tp{ovZoTf$E0RkB9+
zOgCSa5AMh63j<hjX_1V!WpHHWCp*G*W3~_Poas23e=(P*pXqE!iOl=;3pSy_#98AR
zihX%?^Yyv)n=n#Eio@u#4C~-`%N<7W4G{x^v1IqrPQQ*3o$_@TJj#!DJ`@-nE(7On
zz>`mcm3}<fKwBnQf-ar~`gH|KD7A&E+t`r$N##TQ!h=l(u~4_W6IELE0V}T<8T;aa
zL^#To{-Mhy8*EhSqSY%;TDf`^XAyH|ITvLaIo$^v{Z&!6l{G+oM%7MVPMnuW@P->}
z7w++yyKOU;pc#;lUvwnlUF1vK>+Dey^6>m}EU?I~{!N%@dpbWkjImT)mqpivVn9Oc
zXn8?(7q;|GzBSiBw57wByrbhdgfb(#Plxepi4^h|Iqsn@NTlO)TXvW_NDsf{n{NrS
zVhaoF$y-d6;O*9+n1+!xeVF?`?E*(y;7xbve3>~S1F=z{;VUIrNCivU`LP&&P9uUc
z*dO^34J4JTsy#)Wu2m}vyrs0+L}DY8Mx-G?bDrHqv|!^SQTj}<keOwjZfu{(aB`7u
zpG)JUoMPg33I(4ZQr(jCcn#dV^-T9-Z$^n)@RDwHb}c#`cg_b!KAnUo4o5%J5oQ^*
z#ZvOSRk06j=*K+*`*JlnT1yr$&@XIR2|u0--K5=Aw`KFXlV{0F66$lSxs`zpu2T?h
z)}lLyyPbX}Ul{2ajN{ks`KL<oIi0nrx649t8CjE<D+zJcVc&T^=s!lx1v=UuZkS{s
z%NW^cDa{CSA=@J;cd4#9(7JSNv1jVZrDJUar7@N%z$G8o?w+QVe}x+BCA`+j?J~Sp
z3zD`tp!g_Q9|D(zmfnSqfeo^7X9^i)k3JxyA@1xLW_3xn?jpF_%p=3Q&={><BKk0~
ze9Namlq9+=)PzB>VxJkDb7_LF-^ACALz&^<wU^kWlyh3EY5LVcwHkso#a@1LcD5K?
z-f1-!BxX5mn-xyyU|z-sI|viUZEVr-3M?czD8rq-4HUX7_%TNgIO13%KkjG_KfT7Z
z3qD_{wsp)=TfzqG1MKeN2Uefq6%SnKe3=6a6I=uo!g3?(6)v<!UhFOoV~J-Nm9Y+W
zj?q|qtxVe*zJdD{Uv-ynIJ8}!vG|1P;%lAEN@1bxKh2~m*6Q-=`a?#+?eABU_78;M
zewXmdL!^L@agST*(V=#0dz$v`bS%N!PwL2K)}F0^9_#<OX&Dx*(hlxxGvh{W0{eSf
zrU%K*_H64R++D^F?LHGP+xR_v(vFQiUE71iGV9MI;6X|5zmF?p+>u<qTE33o6~cFP
zS*rT4+(%^xpFRPA*>Ky}^A@!4q;fe$DSO#yh%&hSsSUjACwyRcPh%J+ZQxAwIMaC%
zZFxLQ5yo3DL|b~u2-XfMVt^%sUn7<%8WuOAa?74%zpQoiZDOvY>60hOxlCMs^_O06
z@D}`I$xkBPgc+s$q$m^nxS2SP$5&gKHwNCGIs5e<#m9jB@Cis1mt!D&_qQP9!|88H
z0|u`=>_4a1@;F#HEJ(14o$$*-jB&z0+OwEpBs-jM)S6?4*_AeZEZBu*ng3nzwgH}k
z)gi?YhoJo_O;pIj4n7Q`0luwg9?HS37i_^hA8NX-jKT4tobnp0Ozp-YU4x8eo~%6a
zPdT`7`J%#k`IRfqDxf8dvuciqI?K<mDR6x|E16g88sE4O6NS&ibaQbZCd?G*FddDY
z=_0KnCpcHe&y<lM`P~A-QJB*T)?RUM?p}1S@0{fe=C4}37hS~l=3CLKrT;S4RV+1i
z!R&%QNO?yMZ(@rH<_>ex_Yyy~0#p45(I<tT9k*JhJEG=kWo$d`TLSpjOAD-`j>#RZ
zBjY+^k9EsA<9TLJb{&@???GXK(H=H&4uuNZC(z-tlO09)Aj^8RPuWQHXs%kz%V>QJ
z#r=E81gp};$ikNM{lKR^pu;&hSnFafKCFWG0W^DY7PzJj689MGpla{IV~Jqt7tTbL
z;tvU8%>~*_7=443ulk(A3V%?YVza5d%VJ=g7h*q_y5<;rhc|OM4e^pqq9d~Kq70?6
zHD|}c?Q}Q|bxeT6tF6;ewM?H~SSdkYF6)Lc8|$E<4j%G~*m9c4sBCxFn8z$f!vZaq
zQRa@F*&XKxOX;F2=sn`s+WZ$0w+*58!3(Bo-1gdvOBM45Pg#FE?#?@#ND$3$-5n67
ztgZ<nPr1Tuc4r{lwRV=je0KYN8#G`sp7uH|UkWjo^$mx;xm-MJ?J(9bX4OEviG?q4
zQC0wMd(#=;vecfL`S+y#4Cx$rsM*HfLgOwWI(`r&hqQvgIL6i=#piha!Zn&Sn!sxK
zWng^0B4dlfSZcSPnfij(cHg(vTM?z88X1;6;l#pNaoKX;UPpuX^yrDYZ1Mba7LR=>
zb8#2HQas1Fjtw!}OJ%t*+?kdqbTV_RQNFEW(1t|b^V19kOuvoa39Z1(*eI4*ECssr
zD|}x*JrjB6zcVE@2ftfbxT0^#(z7ObFt>XiIV7LEnlRX{aadun{ZY)L_TLE@C!yNO
zSf<d2Q7d`cZAT#-FI}Z}5WY6H=O&)<i<Y6_jqZxLZ{b@tUo!B$oPIRCGAL-D#exTC
zW=@_pd-u3q%<fYq^0~WYiLAGR#_(eGfsxH<WM+rl?2}K~eL$mR?c&0>=RMT&mn@sV
z>TGGumQUcdRzXM2b^MxsyF*bB#%5xCLamjB`-Zl%k22rtrCE+aVuMn5J8n4M;)xGo
z_+iF4-<qR2#?q=mKH_F|V+l{<$R+<Um?JM(bHzB>8?)JOu@cvi#i=!@S`b(H{<!Ec
z+fsd2T)7aF`LS#b)<wlb=>i`2jkt@)IUdw!@jS5C{#JI!!QjQq3eP^|4^)0w-(gUZ
z^=GVHh(-Tb&zKeJd8=pmi0S#c+2u2Q)B^kS0{cAgQ$WvW!TV-qvp;Y7j8g*pr_5bG
z1D!ij0A^+3z^otyIB?#KS#3d>ivvLz1PKC>KNn7%)^am@3W+dOb7rrZflCwlnw>Ql
z(GJ6T%G@<GW}Vuyv3=p31=$(1gMiVO*&)KDo82Bz*a*Fy3rA-MA@@!MsX<TX&YLki
z@HabWHXI2fGZ!f~Ck(qk5CqIeW^O!WbAynrSvY6@thsY%VCk4B32<y#cE+3_xHz&9
zM}qL_kyG0!aVc<pJ6%U^njKscT!Q5@f>_X{Su^GYHuOkfC(FFk?$^TEGv)?SCxatV
z+*iM1Nq%nRCRHnjR0x#?ebtJk3vJ(@nj6J@_2#WR&zrL*I=gDsihOXEezfdDoiewT
z!{@JFj%7Vi)J7gHU$*3w$ol-%=kfgNtb4_3-VkDa&g{7}Ua>s1MN6}0&s(`<{;bI6
z>ZN_JoHuXAD^|~o4td95Z~iPCo^?ue9N8OJv(3%3&siK@?D?zdR_m@~{9C?nUpNOh
zOFYQ%WflUX*=5nvyj7LtIjiMP?0vCw!PB|xXSOYrFFj1zsE-My-%On3?Db(eXJdS&
z_sPzU?S1mCcTu0Z?~+0NGN>E2ipbW~@bS7jKw9mx)wHEY_V5E>t@rGXj%wR56Azuf
zTRCh1%iKsyLG%QdWFH$M4p5hiG#2LbC3C!#|Ck5DFM;~nC>Cc~Ej#R!W1_g#vJe~V
z5c1(1EHI?U@I*o%B44r57=d?tafiLuku!ApL`u9b;dtaKEwml*L1;VDmNu=50lyy;
z&AktovX>CHz8i|CpM7Vo-Kj0U!M}CIIrPbz8)B)dZz(}@5(bK5oEz8e^k2yK<Ko(H
z0I8k&YS`&mO@D2_uZTU9khZzx9hCa!UUKW7cE*n&`KMixh*@)wT$b2nkc41batsRc
z^)vT0aAZO+*|Z;Yy6m=>MqXD#q?>*kX3RCw!0GV{Ni2zQ{^k-s)~TZd*t6kN?Tnx@
z=SRt6>^swECkMjmGKWzUl#h{hn#AMNp_j#CWXM0&&!Ub!)1H=2co%&wicQ>Avb)}v
zt{myy-_lm@puY#rWLpa8Y{IG;d_(S-*KwKlcoAi}#+xpPeL5#-a`G=7SaA)XY~%9-
z%M(pdT(T#HpA>iO0Gn~a&>*HQ<1N<@*bB<KQpx*=MNePv+bO~l)jzOWzJ>R*Vy!Ry
ztO#dsgf<bOXZVN)*=l>S8DV(bwXb#`C0olbt_lYUGP!&~6D?M^1%sBOv4g$>(dGxZ
zJ(%Gci=@Aoce4_G6xP79ZyVAfuxRntu<~nV_Wo$^g9vLoXOZ+rjno3sMo3yL+sS7b
zP25FX_z-=qGKY|DCcFo1mN<)e9z)1=J?bdN9Ug<@7u|^In5V_~wh^kReVXHfZEkgt
zmAMM6Z~f%ZJ3p1)8Z{Ai-<!dBg;z9mR7a^!buzG3dU|~Y*SDFoK6JeAxb#&Dosugt
zhcg(f$vNv7s?s)ZeZ0`2nLD${BNGHo-9$Qd6XA9z&ps!ZiXVltn@8oVvTZ&1h+B+`
zKP>@B>$|V=M*|z$O4OJW@n;$zT(5c6tUdL3R!5J6;SCaaHm<~8auA;2fo!cSV}oo@
zRLlEV5(1Tb86uAwJ1X>8;b!qlyq0=a<``_)K8W5vUNhY4n)b7_B@MIqGCF{ilfP!H
zk1S}u9N&rAyK_R@G%ayC%R`raj{<?tAIl8EXs)Rai%YE?F8N6KJ_R&o`y&PW)?TZa
z()0QjvqfK{P^ik=2PfHay#Ly*!&rP2Q{i@GBxcG<2c2}=V9po|lBw>(3oo3xVKbKM
z8l2fb;Lt@D3k>EWVwG?{2l3L-AIx3J94(fQmK*<q&HWr#xg%539q~GvAF>2<8YjTH
z6!|$z7oC(}y67nTny7p^t+hZn8fC>xoi7l%9VR<F`D`4uz01Zeb}_-m=P7=<SqGo`
z;Y0X<KtC?yj5CiLe({W0{4@;WG_Fv`i8zs~W+8N{?JCKfQ7lox=L#RRHc7F~7N5R6
zDN|p}ism2OXnR~o^50$M9g5nZt<8A+x`Fj;dB^x~Drc~6`&taM-ikX-OJXca#SV62
z!5~$ZM);gU=6JjYZpMfoE4I}ZKc3C+J9yMvkOaLjHe;$iFf;8A_Wj8I=^(Lf<r2v?
zTCc}RT)=47iIpW%OB*{`1lA+FdO>{!r<46xX(z>N{H;44X%~7cMsVwt6M$5hup+r6
zav%(;+%D`vh2L9;T4g{iM(rW95&&NjUcX7wGiJYad!TcMA0=e72fkvw9pA%3vq?wB
zXE|P8X_XJ{;|+h@pb6$@gE5artCCK{$S^XW=D647t9{`kA{HCHM!sa?D#)Drp_mQp
znt<-dQUFoGwsz}Iya@!!Bb{)W<9%8p0w>sY=4E1Q2rFhNQaKYDp9PibIrjX$h?$hz
zwz0ONePyUgVj_{bP{4GA!2*U^_#QyyxpmtI&-Zn4jN+AKGf*QO%}3cVxP5pN@(w)0
z192PX2cmJQ?W%DILu;LG@S*FiizQX9;C@Bv3P*9D+k6He5dSp7b>A6#9Ie2MntY)E
zQ2Z@PW}u@13I+ATJ#L5Ms@7T=<p`qFGyXF#89zxc`gu*~quMzh3%U;aVB|B$2VZVI
zG2_Q;*vDlM6Z@i5|8_sw%&x*>&OyXn(=pFNri?uz*iyLTB>teN^EIJZFqmm}7lu`O
zmjxGw1*u&aK0t6u{RP1dxyR*uhu%>u6FJwCm2|9@wf+UH8tda%7YpZF0W2Rfe&v7*
z2l{39Jf@y+8;~_7nBV;^D346PZp4K+CT~x{!3%H@ZK9kPuSfljVFBsvFJo>tY&H*W
zO~1C+*wEU-TMUnXdSdZ?-?xtSJ?K*F<-ms+FY@g2MfMO|7$LPj`WCP~fsuCjthP)g
zlEPtzdoezQj^k%~M<t@TTt0kUzN@YA!ouP|?;bisM>t1~0W;5-Q*qUOVR8ZjeXdjk
zVu2SQI|tinjTo(BK8-|QQok)>GHW+tXf@VHK`6wM@A3E3Y2kr4eI+Oeeq_}rqCeX?
z>TL|4I2^`}B?~ly;-94trZxJ;YxPw_(+V;^#23WEfBP5h{r+A%!@JE9Y4#;+v1uM@
zT6njjwK6SNX}-hDgO+R@y@MQ$Y6^P7(UOfVfxjd1w-5g2;*T56B>ujAUN28468OJ1
z(UUmJB@+kkn@UtcF2f1_J^B=F%6<>b{oFB$D^vcEt3J;qMxW<;8X4%LT_SUgbLkl_
zRh;2^^D|wlI@7sY7D1ThQt8>Qr+BhUl}>Sq$|){2dW!2UpNjocU9x_vbIsSgWaAC4
zH}`L@C;ujJZ*#qsi(R6Au}hZU4tsA$kl*1FwRgB=_TODk>7A~(bg4_EF9Ua(OEh8T
z-sO6W?{Ph~_aGdXyF~GF=W_3JJ?Zy5SGgMD{HSx~Yg}*UT9?Ru!nxuNE>XP!ZhZ>&
zZUlFuOO<bOu5mN=Z*eYvt4r2zb&1BUh|B+h|6hWeUxGhhM!dg_aD2t}jD7{oZLoWX
zOE&Ltz3wj8Q@#uFgPHxRbEUgoB6AP?|Ay<yebc4t-*mmrQ5?J9B}?CNiSl<`PxCu2
znRx(V`;klKe+;)82=h;!tN$AAKjwNze}nk{*16F?xJ2_0E>-&@!t_Uk=})ltXP0XH
z+4W}s3j6<XJ(Z^sj;E0>E|IDx5{XJOk<9fZdWxw;sx&E)Y)nd|Dw7k5#^gkAc}gN#
z+&7WP?U!)17bOy-Cn7t{P4raeCKA=TiDVO|J2}zgPD!}pyhQKlX$e<enn*O4CX(fs
z!OqJPu9{Eu)K-F9ljupGlStOjf!pUKTy9&UH#d@SqdVco8^FIU(Nnr8ktko3NRGm6
zT!dp+!L6$jxHixqMHmp^#>Wz_ehrvw6RvSB%<JIBbuh0_xa?OFiQ;W=yPoK&-=65L
z-kEUe?<RUn-%Gg6Ly1)5A;j}XiB#stiDdp^g!LzI?<a}g`cDzopC@{2kHD{ABod`v
zIJPU{N{{0BqlskgF@)nciJtu9aOby)-pX&m{u%NAb0SgsOCpv3TOwKg8<@W*dTLK4
zT(LKqDD@^?W^yu_pPWpTCnr<6DY#D#O!lOwCtdaMWKZUZWFmJ&vZs1vGSPTW(lw4r
z_SBC}CPt41cYLzPose{;7bbf%FG?oMFG{-doMfUpCz&eGO(t_ECsXd!B<>4vrzKO(
zGvMZYxU(?nMwcfO#lB=uX%+llophBou(t;1U!6?UU!Cl&u1&h!K(aTzF`1}rOeV9N
zVE?trp2lmFiSicsyA}3^5Qf*muh%7AemI#*kHF6n#A!R+zaW{&>`1!uPK5uB(B)*R
z`nF^u{SLVMPPq9_g!}!;RQ3ZncVjYDy9sW61#W*OnabRjOcrm$em$AW-46F|hj~Y`
zXY`I_s&Z#CnYk;Os^67#)q9f3^u5VM_TFS~=03RhKr&f<An9s9K>GYJ*^~Y;&iy#q
zQ~xpi_zCR(6#P$N?-wwCnM}G}2;(l;|25oyEa{%<mVHpl$Kw5Bmep+N@to?an%U>4
z9CG@Y?Mc_;k0%pi?x*IVYG%}Yp_;hGy!|uPJX_6`YQ9>{Q&M7YgX)r+uUGRTHQ%k~
zm1<t2=8bB8K~3B?-rujQ`GA@~R&$q{zf%+0-P_*>*@p2>tBLIG^|5NsRCAu13)Ebu
z<~eE>)kJpm{D_)wQu7iuuTb+UHLp{%rsl0`-lgU@)qGIRpQ`zontxK$^@zVYP1mWa
zr>pr~HIG+wwwf<ibBUUHHUCA;el@qMxkJsjs(G23A5gQZ<_&6oPR*~Vd5@a+tND<c
zzfiNO=3muJX?&)sd6=5#X}(;i=AfDvs99F?ooeDy>8}eOmEOEw&Cja&B{jdM=BS!K
zQ1j<%KCb4`8jcgyv>WGyH;MZ*)tsy5i`87D=5jU9QFEP|Th)A{nr~P0ay4&K^K)w6
zs^%SP-lL|4r{~QQo`cn#rsfniUwWyWf4Q2kQFEi3J1&>=557apH>f^C&42r#9KTr2
z?P_jObEBFTo*Q*%@J8XPs^6~qdexV!zCrc%s;^c3CDor){XNyF`uOcp)z_$YH;I2A
zSACf3kEx!e8dW5}ou&FZ)dkh4PWkP1s{d2<#j0QNOY!I3%f)=9>Y|#1YA$$K&Rdy#
z%x^@q9?ETw>Ryp<q3X%1SE=?DVH{hpdOtlsta^XdZ&RIC{a)1vs=ikB!Ky#6`ViG$
zQ+=4~|5g2L)w@(5uKG#UN2s3ixWte3b#8~Ney&LOBGu1R{bJP_)qSduQvI*0k5)aT
z8r5{al~o_B`f}CBss5Pi7pVT6>f=>^RrLv~zo+_zs(-2aMXH}vomD;Mw-R4_FL{pY
zd3ydN)n}-lulh{Yt5h#hy;1cV)o)OJiRw#LU#j{es;jC$t@;+#x2gU=s=uw;^5f4`
zTMgt1)s{b>R;{l~Zdy~~%XcwuhpV0<(w(5%^5;C&mOsx@Jx%SeQGI~w0o9ftFI0V~
zp1(-7<<Ix4w)}a6YRjLuskZ!iziP{$kE(u-y8jQ=mS3knA@Q~Aak%QuYX5lEP1UEW
zenRy!)t26e{a)O&^gdd(rSFSWEAHm1&gg-&RonF`s-C3hx2d-4^G?-PzI<49^K1!+
z`SYXKh_26&dgM=4AMmg3$ET}4M$J4jKI3+R>VldzybtsEfa=$)>2PE4_?uLJM9roi
zzee@lYUWN8`}e7SQq4SWD7y0x)h{eaIIDU*tGZ9k+Ka{hYSkq*Gq@4y&UV#TtLbub
z{2JA_tC^lJ$G@ujhiYc^_`|CIs%A-#n?7=xgfo8pX|<nOAnuz+Fnsu)#)e&ocQvoM
z@3*w*w3_Z9(RDSOYMS*+wBWBCCibdFh?#w^m^C%?8PTO<#LOKhCew;r=}38xsD59L
z%Td&?A6ENnHX5Rvc=s{Z?9$vFU;f#|yroO%=KtIOe<|?)w-h+==y~TZC=Sdo9*F-7
z%KJ|~cYgWo$t&j<=PW2qUbEm_eBp96_EsO5D@gCs@bJK}d&RaLmFc-cVbQ>bwU|YP
zZ>tV08^RF20avc@&fu1)z(T=~tShYFbbevub}X6X^dP<#zpWGrv=~SGY<Q;_DsiBL
zE6=Os`gacY!=dfy+`_1Yfo-mQiFiRzG{Lu(6AVyc-RlRo4Y`Wjc8O@;QcPVDy=Cq2
z`P&d&9=cKw4QyFo+Q~5TU{wwdZ!MuyXk>#OzFrTvAFb(84j=T9WLE=Sxy4RwLsyEq
zQEwe=`FD>T92vs;7>F9!Q9FX~oy(C26NlsqSWKp{32T}UZQDs(4cfx=@g18-D0hh*
z+Cb5yz~#Vl`IJw3xdB~B7&e7(6Z2R(Nh>@y6dk+7ALE+#NHtoj$bq3@NiMHs&^^yq
zsrxry!2RpFZ(*s4D9z@XTPQa8L0^=0ky}T6GTq}<bd5&6#F*b<T7A$ftmU@VU(kk^
z9PPuCyS$RCLERL+eMDkx$~#o<VG!8kK%1AS@^Pwo;d@qi?n+Ad?;WYC7}zRNRLMmu
z*X?AdK8czhMRujUMWr7SxS@Zozf^S|^oz~X$~|5UWBo^ea+Gp#Xd_QO$o(zRb!&L(
zb0^R4Qn>|7fKoSA;~G*vNomPbPC+2|peK{(F7eW5Xv&J0npRhuKo2udR#p3?yPm>Q
zu9iYJq`=qXeF$#RvzF27)Uw9nv9q!#XX)HMa%=<xTQE(WM@IF?1?Ur}e$Z=v4bSI^
zhL?W!AJ6Xcau}WelC{0W>Y2wb?ZfgRn3)4RPs%~uYv|D4g5tw%EB7)eBiq(*k_0d*
zXDcR4{u*4VvVXg0t16@9yIv0<E7I+nO03}!`FBfnOnj(ETD-VNwFPKYHG)VdA5=Lq
z<nw4FlD<sZ)sh8oy%`<wN%mwUw|iaQM<PFhE^L3`5*}zRstgY+as+wDFRqLuSMC#)
z@j5<%0jsthjc%0d?XVy5fkDq0nSk|+<(6oj(~{$s=!lHBF5q+Nbi8iIW!d3^EIW)b
zo?LRcz=s0zkJ;h44~%Z`&mSBgZ96Vq%TjFE3Eanl{YH3LmY2mMIa@GBkiP7)vs@mM
z2by-k?x-j209I({x|Hp4E>F_L<D60Nz$JDB8tbqG!*1w&B|1C8!dC9mD<|P9Z66*S
z7?5m8X({d!1$2--tFUDgidnz5NnsQ2MBGvTmDqy*RrlEhE&&!_SUXs7Hz#)PbPp!h
zy36+2HsJm=Y0%w0^}@Bds_tw1u5-WHceDH3{#)IR(>A#8PTMrFLzdBXmme_fK6t?S
z13NDq!h`zj2bA3C0sZc>^m=z^T89L?>kr)S9(Xpcj=T5pp$o7I=lb*A*N;G_DTcUU
zgcBB-8Xk5Jp>FTcj#<Uabdp!W_XxZD5*%^h?oXs#4Lw*X$9^maZ*EBry2p|QcU2EU
z`;8tc|K6TLi9O)1NYMfJrxcUX-PL>HwzVZ!ohE5^-84r02vix|Ek|&KjN5g@R-77k
ze>eh9#t~OO()IBBUhWr3jHE$s*sy_1_9D*@xLZ;~_;yEl<SVI^E58?E>OnoG2W1={
zJdYfXStRc9BV2NayR-*ijQ{Hqu=M>z0w2*uE*jeD%KNy~dX$PI1L~T)yJy%v(u3*N
z1Fd71r8W$@E9t?zkT^*MVcUp%*y6fR%8g#d;}}-GeiObdVosG)DEJU>fQ@PrX;!_4
zzcv3`{Wy_U#N20713M6|b=x<(uOOH;oQK2L^0#~)?XGj*NlD&!kEVb!Io!`vSXE)z
zHQ~qTf6{K{2LJmh5WR!$1HDM(8+)0^pY8Rj`juYs;}5+qDXDZ_?*NkKmR_(olCApR
zn*Xi)U-Wl5m*Rs1iTYDIxyw8GxVrUMunljs>3_@U8-r{9x9We{TZVXin(^4yzkT!8
zAwSomv~i2OcApEjxf_s(6`t)WxNq!p+N^AJ`V&)Rt#%BbLpkAoeYo4tKhkcUgaIH0
z_uWZylYMCNu>0X;8G7LUFxlt3zfQ&|kiz<%SXCZ3F+SAc{$omO;+^~Gl&u377Tl+%
zu-JfO?rl^1-M>#oy^Gm_2R=R3CH*`GTo+$gcHf%hnv;;!pJPNeZRQ$*?$Jq@)lnKm
zb>Z_<aoukAF};NrxXyL!&U)WuEVv<siTiRIDfVUBDY%bMcHf;0%a}3X{(CaVk+?5T
zhC{dc)8_NNlijy)w0sAhuYKJo@O`vlU!rx7Pv%|rjVU;NzYoKAc{+^#d#A91j=b<^
zSZe$)EmeQue;?v+{YL<Luska7^t-1Z1vvM@JvD_>58eMk<m#8938}}gC-TS?ANgM+
z_2}XgaIyNX9$w^k^S9}L8}IS^75<K14mP>HRB#`fs_FI1eO;32{K=`_huh&p^9tIn
zzRwfy_w;}8xAI}o`^lv#xy$!m@9sFb-+k|31j7B}V0>+Qc*I>feGn@lxT~l06FKhM
z=_TZ=>BH{M>D#tk;C?h6dBXi|Ix_E7hqxqT^of0=6&Bphhr-v7^dxY(3s};fIS|>+
zr$l{UoVuEU#|Z{>*!^T*UtVJEP>ktwUk2NR1;p{Aw6=L<9o9rIxTp5r?(W^+O-5mY
z%u(NOTmQ}iR!VnY+YiN@-@9+WlDmJu3pU8{-|x5H{bj%5(q{M0{aY&?yD#sL=wD0c
z>;AWaUlh$-ybHhCPvW2}vAUaKx%>%QuHqNT+wU&gf0L`=a9s|g?*l<B75ulf+-LS5
z;M#q7j$!l+mJ?%Pawja;YILLV8UOoP{#I@#h|poo4IiMJM|k)Cc7Kdj+O}bEXLRI`
z^y-TwnrIev$*u0<Y5nf51DGzB{XaB~qmSGZXb-AmPz^l#5B@gs>yo@Fzcg+8mUSrJ
z-Ue)B=zLV&zBNro{kWSBN9aBTi+JD+ptR-5-%r~z!phji2g2FSL+;W85&sXT62tDP
zX>k0*bi90ZDpBB9eB4v;w(?QBFyd}HVC@DBH^WRGcjuw-@UMrWfWmMqck2P?yQ`iB
ziys5#-t!z>+-vAe<ywHLZSFS*?8KdleD?M<9$h~^1lI$_iF+$}RH!su<uu+6E<yGv
ze}Zi7I(o`m;N$6`g8T2orBo@nTaM&Y#ru16TI2bjh-V!D;Q#coUGKi1#^rqY@a@~S
zVc=B3U4{oF)@*XWPiwjNmoz>tjG>F}X%sKj>%Ets<Zt5!@6L^ICuz$N4ZEujbk`uE
zYB&rlH~EuxU2i>bX~ETTcJwhEpMt0Gdk-4H%Vq!2g<IWq2XW}C`|LryrEWP$-VeWd
zkg-2FsNXdX!bdBkJn_^)xOMQIL$mRPgK=3=U#}j7z}|Qe!f<;p!*B<G%Xjj3^s8un
zPIA$1ch5n%>$bQDV6XCkxAzo(n-}5X?V6XM)jD}$<n*5pl1WDHZ3n~I`)OtLd$58k
zf#ld54(@N+t{of(^GiS)KOj<m*t`8xk6(^<@+2z>ZuDUM{O@#Jm~ZfyRw90hqifxl
zrz36GuXDdU*gXk%%6L@Zca*=Qqmz<D?y~9I-4$S)-{G<9_x$gJ{H^)lI)35i1@2}P
zQX}rcLjd{{4Sxc2K-{;d;}yi+k26hwru=;(1^0{T?!H4@&sO)x>HV&L$lzA@HP~tV
zz<d7CBxK-=QRd<Oho?S3{2_npN5qE<?vsb`$^K{L!maLev~w%$)PL;lG<*nu%HPJ%
z_*;3z|Ng=s!7rZKmbQOC1a<47lKa@<_|_V4wYTBEsXR)Xb^PL%^+l$u9?I9p(Ifne
z`1eph<HSh+2>r~V!|vY+Jwd4Hf9t;|>YwxckdoVVC~E-R9d?f&iU)}7{sH${?GHXw
zf8uZTBJ_v$tXmg_?gP)lB+Y_*;&4_ZK8QM2<zm=KVt$gl;aOO;!oBy|uD9TR{w&Oh
za_>7#Cw8)wyYsM37huwwMf2XnHe%Y+w$1VlL|XXfvt5rL`R(3{bN*`s?vlgI{<{xD
z{QqY%!qo7;^=~p{cJ|AMMRWG-(6<iLX>IPiM6aB}w0Ok-{+hp)-=XWQ2T2wM=`GI=
zg8PnVw*~iI&xXfOdHStWnJ|~2W4LwEz7(Q&w4?U`ZN8IG`D*@-Vu&OHbosu_H|yME
z&n{uO=|HQF^LEzRgJ8Y?a6bUr;`QOfQTq6L+(%dwf8V}z^6UJqKjQZv<8R|PbROC0
z&cl7}W!T*X+s((lr(E#z`-iXN%jr*f^mAzt<<Il?s$2MbJ$`w+Vr;$6?R1wOp}t-Y
zVwbno^uM()lDOrI>4c2KcQ?Yqlm1}sPJhb(*8T5Y{`VgLJ1W2bLpu-p--rBf!~gE`
zzfJ%9r2j47N1K=6S86<09$9i%^D*R)urhMvk$8~1&*IpX-fq>ODY?6kMA(sU-LG+X
z+C=7uX<6^3M}X8kQhR`&)E@G`Kj-f){<rRb@A1E*_{FOP?!K#^<L}VV;AU(590^du
z^Yc>_kCEJkU%UfWUz)8XtI1q0lgm~1Z|swACi0b3zLIPv8$Fd|CRa<Ov(;(kmzF10
zW;YX!WF^^{+UUvF6X{aAny4j46ZK>{QBI_zZ8VY2mwT#-d?T4}^o}M*leNi>M0KCh
zWFrZ?$!emStWKqMoJ*8O6Ez%eOs&9bwWpM+CyK>Vsgfwt^;)8e!JZZPkT2F#er1)$
zK9y7r9@bI_-e@vi$~F$FCbDI?TuFlHt*2@|Wt;?+Ecei#I($Qb`2+7pQw_vzG&!0m
zW)S*BHIdGha@AxdQBKyOONep~p3?I~ww7p~SxwfaRS>ImIoU`xlg&wp)|ATROumxH
zFh=!Mxu=O(jl$Pj0)eVeYaCENptcW!F{zxYB^&8Vl6b0-sO(ppQrovSIa8|kRFm0J
z#J+(fY!GKkOh&TzG*i_BoBQxgxu?-n?X4VA?y2`SlC^#7iE<)eswHdimQhQm8;NEj
zQ!G_rxrTo@UF*qKQrT=a&A%d&7|!lrLQ-+7_vDfMuyjDW*;7wsaV3!;smeZ;-ZIj^
zy3c4&Igx4Ll9cyrB+`|hdJlX+w2F<%)kztIHBkpwO;u9mRJEsq^cYPv4^Ed8mC0p<
zp^i9BuJmR`dn>8xBsx}QilmWQ;BGntr_*T$ll!B{62(zCm#txsY7`j{7j9CcrwN~U
zq_$7K-c#vqq-v9K0CvlhDwFHI^=akaMxr{oyzl7ba&HlyWU9D)h~X$MT^)b8gsD+v
zsAg}Yw>dRiMOZ6v0Jc);bS2T~sU>q|L<Tu5S;|x<RlqpemL2chV`vE(d8u=kxs>~R
zKaQtTE;Hy{5&FTmI)@>m?&l{byuR|433n`yZ%()qVWxH@+>PM(dt<`g2YuziNw)}Q
zX-U#$VEzH)T6ch-{OY8e40{!{81SZi0Pprk!n_BspR_k}d(w?ie^ty6V?YFhV%wKu
z`cCK#JqdTlBa>c5JB-gv{BYbm_kV};#|HXI=!<AkH`+NCe;EJnH|jpx4>aA&VIU08
zO-qY=rg@Bf7JuBR$%mSJN%=#RH*I{HJJ@KD4>kGni{#u3l{ZcM^gqKLY&6J+ntb&{
zIk!N0)3i@Mhd*w{=e!b4zM*`d@}|4xGdiB4sJv<8Gl73T{DG$bIptrgylLZefqn9!
zCSO+mt;(A={^S^M`XjKP(Q`DegMK~+_2lqaA^U07XREHO&a3{a>Z0nOsJ>G5Q>v?~
zpM?QxbpKk_b5&oj`W4U_21K`4$Mir<Z;k04F?~r)Gfw^d(Jg-eT@L&Gb`s{5(4FqT
zx~BKtIM4gfG@WLCtLVTSYF@8U^LpiVJk7V2H*I_o@8R5x4>frkck__)rj5@F9`T_j
zZ{u@*sk~|9n=wAr<ZT>JQ+d<IhyL~9V5rI4c%Q#2Z`$}Y+O@b*lMgj{8yA#1NYdZ5
z@u7d6{I~H#2Pkja_^^EP{__Mj8uZ`B86B>?Y2!<Qee$6uZ{v}UQ{J@kjTj$l@+<&o
zoTR*I<98Q+8{affdDF&c;5IjEhCf4rjhg;v=ga<l<xTT^H|1?f`Ijkg+V~nh!$wX2
zLrwoP3*_8t<xLx(_H>I6wGY4Y|7zh^ZG1Myhnjp*?Qc`wwDHfu`!6?YhTrsCU_ZkX
zy1gCx`FKk@46g*V`#x%vk2Nh1uT!0UuAKk8>UpZkOjMrT2K!-o_6=y3XQ#&M6Xm56
z*26GvjOCf>qo6Ocz`~?|yuRh2{=oQ!n(5;(aFWJJ>YnL{kCks_)n~%~^HXq7$KfwA
zJxRvXtx}ztBKp;;)BA}YQ0)#7J!E`Z^mf(R14X|<bwl+<s?!I_`S(C)5D(iv7}Fn(
zX~u7&>v28ohu5P9&Fe8Qemw>y{r-sa{(7kXJ9MY(k=B8+^q<!w)Vv;;pXjegYPz^*
zn)Z1;oA~2qe5lEn-!A8lP~NohMeYQAsL40pA^Z&GO&h<v@~U}>@N<<nZG2G&zEU&(
zp{D=&cME^E@}`Y%a0eR=@}VZ5t;o4m%A2Nrre9b-kPkKaqVnsNH*I_!Zg8U}U#GxE
zO+ItE?C((CG|$ujH2%0zlMgldtnzQM@T)ey<mnb4YVuXJ|6b)y8z1`D$^V-2A6DM9
z@zt3Bp{D=&D<o_;DsS5OT8s}hdG}u7Z&%*5@uM+5)Z|B%|E}_;jn8oh8x6)k)Z{s@
zm**Z)-ZYQ#`jzp=jhcL!0vk2?it>L{-Zam5!>2zWZlw-^eL$v-Pt!AO)bu~p^gpBg
zLCTx%md`4Gr1GY_<#WovKzY;M@_FUwC~vx3zNq|5l{eijUs8U#@}|4x%gUdtyy<TF
zit_7}H{C5?Renf$)7|nl<=?2hY2(BDjrlLs%zxz%O5VKG;;-6xG>7<&n!M=`z&`5}
zIengg#Pp%^e81lGb41rvH;)zlMb+sOMc=MEJ4f`_RlB*O?}yGvQ2g&hJdgTZPU~xr
zs9vP{x2n%p?G6?DdDVxgK2P;gs*9>mQr)lmY}K1o7gd*3531gw`rlQTRbLGqhX2}_
z{!~og8q;^gG_S`*^`WoBet(c&4?uUS4^{MfAMq?Hzf9A8mVbG5gPPYr)XYB(<xf=J
zwDD!`V531k)Z~l*A?Fq;Z<_Y$e-(e+jIVknn!Njv?5|YbwDF4r`}9B56Q$o;xEH41
zM(9rImskI9Q2$Mv|3&U#qe1^e&G6SgEaz@l-ZbrZlm6~1;lHiCY2zD7`rh(C)bzh`
zwVeB*@}`Xs%L|4-)IR(l75*^`ziQ+2+zI>-HF@_j;s0*oSItw5e>R05Y}E8W)a0|D
zkaN>9p^eX9)3i^%fj@54<Qo*&sL7|Vll^0rH_h|pGqLxnP<#JBDf~(1ziQ*d_|pGS
zlP}*O{F%y|HonLmY&6J+ntbC^a_(iyo2Gq+KgS(xG{}dVeC8%OS5V$G?UVPQ8stOm
z`TvqbBgU&X9@)Wf)Z|TH1p6$%FVXVxL#ivPzW|*PG~y?^U+;$f{=ohybf^2ZuHicr
z?{&;CrWrney}5&p2E&^PG~?U&w48gs@}_Cc^Sz`4KG5Xd=jGgK%9}Pm?dcXDYVv92
zmnv_%TRx-wdCHsamd`4`NqN)V@;T+-th{OC!}5jcA8H@}FG$*4VewbpE#FZ4S1WJY
z_);wWLrwqlH;ezDQr@)jVR$=*KXZ%lUsT?-@mcO*qd`8@-v2Mkx%<q2)yC&ye5lD+
zZWaE=%9}Pme7~pvp(fwFP59p_Z`$}u?0FMv^5r{(@5KaT-hZZz-(C9U?-c$><xLx3
z<qkF)41cJ7`0tW)vz2eEHa@)G<U>uq_*LO^%9}PmL(j2Mlh06Kqb6Tg{uLH~)jZGg
z1Ig<*YVx6;sQg<8_xhEkF$mqM{L6h!!t&qhziIQosBW15p=S82%HOHH>27&<xA^~U
z<xLwOrZ?jsYWk10w0v4Vti0)N`G)e3D{tEPN-X}N_Ws`^{{O@LS8aTlUJQSz$&af2
z1CEgVZ`$~3%>Ph(|L+z5k5s;-+W1<G4>kGB*M&bpdDGqUqspIV;a6>ZCU*aan*KNM
z6aQbPylLaZ`1avosL5juHGlojQ{J@kY3^X7K|a*vtKXD!8<aOq`@H|k_~T}L*(=fH
zGvAW^VdYI5pAYQQ|4@@JDSw6Xrj0Mg_)wD{RsLhjn>IcdOaD+$RDS#y+zZQ(TcA6Y
zAL;ug{!gp_rp^CsEc~Hn_;bon!vYd4|4kd8iSeN(UsV2i%A4+%FDsu_-gLKoRr&eK
zo9>pcE5A~C)5aHL?;D|J{4?K^^e-rH+W4?Pw+{zHP2Sc!8&ux3@wHg`hnl>ti-s9V
z{`#3Vz8vF2O}_Yj3ICPKn>Ich%fF!}U-_Z%H!5%1`0#%3!@*FKuRbLFy~>+5J`)SS
z>Hmd&zOP)V?<c!dU#0qS)m7DWZ=(Axi3L-_`)wL@r~9q`kc9VKoag;w+QOUX4mKK$
zZ>SmH^pEA-Yn3-m`z-I$_~T}LsL5xP|2O4L8($JU;zLcoqWrs*H*I`2#)q1GUHPjm
z{;G{HP7w#F`|uNLAO2kux0;1twei)M|DpE&tNlC8{}>;Jm;Q&Ed{gazUwPB!zfU-X
zftq}%J^w2?^qBFgyXGGiKJi@1KTXr{%3psvgw6bq-!JYlId_Eerp^DF;1M5chQFr#
zEago{eC&R&1)6;Ex8i?JdDF&+&o`!DsL5BK5dM|Qn>N129c(nnhnjr;_i}DTdDFDd
z^m9RY$%oqWe-!=-<5e3UrZ@RelP~^B_^T}bs=MV&e-{2`<xLy^H^u=QHT^ezH|+cI
z5?z*OkHLOeo;?ZOsXQw^DSpj=p5#Z<7M?P9uvvIQ&GcygMb52O-n8*)!6QD@<lSF|
z->AIlZuzwGuUFo5w|qwVcPVeWTb^tD(k{oD@_As|_*}0f05z{?s2Ts#)53p2dDF&+
z=|w)&<jcz6tGwxMd8|$B!~a9&O&edA;78Xl)bu}(Gqn4-@}`Xs!`mtRMdcG2Nxw+L
z&2FBDCFKuQ-gLMAmzB>dZ`$}e!oiK2;jdF*qh|bbSO%H<OEMCE(>%uTm+;4pntZ6q
z*OWgeBfM$jM+svyKGfvPN%4PUMtIZ4=VRqzsL79}gny&*rj0Lh2OABBKh)&2`v`wU
zM*KHT`;32sJJ@KD4>kGpWZ^%V5#BWIlh1Pp8x8WICSRN){B0TGP18R4Full!ntXPu
z@ZVS7wDCo_!Ht@Hkpdev`HJ$7X2gHfJWu~|*l*P2Ga@6tru;u}g5`&4+V3X(<$Wdm
zha4rmY2$AT{G<P-Pk?<sPY!#YjJJEa>SwFoqB^4*=!Es>cf)?a`bFb|(4C$)T-Tg#
z{Rrn7U(-Cs_*U`9jhf-DQedNIdN-7R^eEv?^E~-9{<u+-4>kFw^1nMuc+<2`K8HVU
z)Z}v%*r>^8_m}Yh?I__*^E~+y{<u+-4>kF!^7|YuylLZegs~Z)^Qz^4L-~W0H*I`|
zJJ^g5HT`!7Ncf+pylLYro^J7>CSOth1<IQ?-g_MQA8OB|LPfi?jaO}aJ?4L?$>$Fg
z{&eL{cgv>_68=o(O&cFxuRa_MHT^Fuf0pv5jjzSRA8PX1gT?>V%9}Pm9pghyKBxR^
zls9dBF2;x2hhO>47Jk*ne>BFMz5w<!dXC21V*2u!{%A~pCZ@j{)8CEhAI0<|G5x!k
zek!J?9@8G)Lu2~+G0ph*^GCP%e2F=*-)|>jo&nvde9KIi>s!WomT#u%G|PvIx<TEC
zpHTDq)RezOdDF(%VtlB{7Y`Bt->bZ7<3AMRO<xWB96#h<EaQ7<f1>pGB<zRj@mXl5
z$7!+gz3xy6&yyM+(-xj=EIgrRe6q?j@tB^bjSu6`^b9rmhVln0Z`%0&=Scvl$%lHP
z_&*!&h4DWIx>Nk~r%3!?tNxod|1;ddX8wno;V+#k{2P=vZG3i8J0EKD)iZ^EkMgFC
zuLvIbA8PX1mkM81-n8-Q7$0i#Ipu50n>Icl<3mlpqWta3n>If5uMY=9O}?u9!xn$l
z#`}mP4AkU9?fIO<|M$kLHolmY2pAt~@@}E<iQ^>yMjEH!WZQfh`d=c0jRyJBBH`1@
zo921)%^v(<qb46}^2M`-KSp`e#y4W&4>kGR%Y{ExdDF&^ro8u&|Dh(IMunYrmnm=B
z_;id9HTleH;fu<fHa;WXNB)P}hhO>a7Jk*nhxx4!2SZK1qW0gVylLYrG5<sD!@owt
zf0cz_weewi>3^un=hXgxS@>gojt*g?K|a*v%jbyyw<&L$_L+Y?s0R5^d;VPEzhS&;
z<8!h66Ke8x%rB<hA1ZI!_%e5}(V+jKCZBti@Q+#iRnxxD|Aes_-xTRJ`RuEOPd*>^
z18sbUJJ@K@|4@_9zee~Yls8TL^gn!`CLe0@)q?OZQr@)jc>VJm4f3WJ!akqJ`7^tF
z9xsFaesRkGo(tXSc~mP(cs{D(F>T?gsT&raP%}QowZeZ|dDF&cVtlB{mzBRmdDF(D
zxbPbdrbnpBkFFE{zpcD!+UNDi#h!<uCZB$-@D1fn8{dfWp(fvao$$X?-n8-c7$0i#
zwVlEzUm*F>wDH+kc^+!=4b01@-Ra7kHr~bV$54CzO~M~*ylUesG5<qNzVue%=PGa7
z_|U&T9t^_c`HO^KV!UeOv)sW(gM6sTS1%U+JmpQ(KCgdqGJdcbA8PXM-NJ8C-n8*)
z?qD-M)a29e5&q4}n~r$FTYR9&XOyofZ`$~LV80IsLruP<{58s(Ha;EWLruP{{O!t{
zHa@&w^gq;|zg*(~J>yjy--!7iYVyS^gnvYN)5fRw5eKO0f2hfqt`z<+7Jt>o*HC71
zGd|ShGanIt+VOJ#nU4707$0czqt^(3tn#Lf&&K=@HF@`+!k?zRY2!2EeH8vs`|vBj
z!osiG_)?4yHTjC#-=w^0<Ez}kMxzfup(daGq=dh$ylL9!{g>emHX7tZO+J5v@b6dN
zH0_hm;*Xp0p(bBe{wC#38$T*|#E07Z|0(hRHuGP#@nLzx@Q2#_f1~i<HUCu`--!7i
zYVyUKgx{sSY2$O;!A67rhnjr#zl2YmAo(}au+Q{s;E$W}4X;F#FMnG2XDM%*_Pe=$
z)tc~g%zxF!hw07mhnoJEJ|p}x<xLwOrZ@ReldpbO_<r+Wweh)>M3|a<sL40JAp9GY
zH*I`_JJ@KD4>kGvEy7=+ylL8J`c=4tjRyHplh5BO{Ku6yP5b0a!Sj-QsJ;JR68`h%
zziQ*Fli>(9YVx5bU;L`@-%#GP@uk@FKh)$$?-Bmz%9}Pmyk7J_)a2dQg-^T?@eMUj
zG5!twapNiS4GL`3<QvK#p}c9HCtv0cHX7tZO}==a_&-~D)3opX=MFX+-v2<8&wW$)
zWy+hTHS*Qi^$Rum#;EWE7Jk*nSEj-dY}E8W)Z|M)6#hcxO&cG^mwc$nHy;xIUCNs_
zz8(vIsL9tJ7XDi0O&ee24mKL}Kh)&YKN0>*%A2Nrrr!<0^On5nZ^J&{hte;V_o2tA
zry@UM)k?B|p+<jJw#)viX;_D;ADnH6LU(#!s{ca5`zoAgel>03t*Zmn3~#6z-|{bo
zU$4Ar<I6EV)a2bR;Y-S!Ha;KYLrp%f{OgrBZG0)lhnhUU$xFLjr^?4)wejKo-G_sr
zCg1#(@b6aMbhmuw*TTPFdDF)Gz#)9p^gq<}Kl7OIR~fI`_%sl1#)q1GR_$M_yy<TF
zobsPi-gLKoUir@|Z@OE)sQed|H{C5?QogRd>2CS5@^>q5+W3Y~{Z{&in(1Hsja<KP
zSol>N-;D90CeQCj)9!bbH*I_-#)q1GN%<dI{8bxYjPao+KdSbBro3t6OEEsw<a583
z@IR)!Y2(w}!A7GGKcOa%RWbd!KUn-#(>}}F2L8Ai-|$K_`Ro(IKc&2B<7<I^`X6fY
z4dr`Jl=8!Lw|wPy;{P<|O&ed1`5$WfpZ>k@)0H=Ed_Km9ntW0DBa}C7JYI+VMuYJW
zb-$jYg?NABF>o(@{+s~a>G_lXqlACZ!mpZ6^ZLDjj$<?bLp_oIJ7fO8c^v<9>fase
zziIP79jh;dn(3GSvxNVDls9dBR)QaeKh)&$&3Aw92g;l7mai%QE9Fgh%QuvNQhC$H
zr(@v{HN)Rj{#jT@kIzrj#)t7`{s}et%##xT6O=dIEuU9@p7N%<<;%*SrMzk5!}v1%
zp=S6i%AcpaY2%Br^b0llrt*Wzn>Kzl#)q1G{V$S!Z&u#4@mphjs3*FAE{A*J{d*O3
zr~5biSMmSn>c468Kg%6#G?;#&X84PL6aGo%P18Q_|9Y&wEY##P$)tCCznPN%OdG!m
zZg8Wf|E8Y@`&_RrqwBTJSACS~^{S6neX;6eRMWkQ((gLh57X~+&`iJ6W8()Z8vdto
zp7)Pwy3hFMxr2=c!yjtKztJP{pLUY)rfHvim|w|<ntW6F=O}NwTi&I_{}(B5x?4W2
z{OQV@?v~Fezf^hC-SS!G|3!Jz#@D%njRw;%)IR-sCH@<fZ>lyv@97pFYVx^#gdbMk
zwDB44V533*LruOoN%*%YZ<_Xb{j2!nW_;Bv(d3<epY}b<n>M~LuuuO@e;oGxc$%EN
zuYQ_(KipqkzMtL#`{Dg@H*}}_!@i$;a8~lSX$xO%k_3>N;S05oA0F5|ceL`HphnHV
zZtf5JPVa2xO&j0j4mKL}Kh)lT{hsf9^Ix^`b;8(;uY1+HKK5PUyz-`v$6>!2A8Pt<
z-xDq>Z@ODPgY~g#_X6cj8($ai#|?i&`HPe{ZG1jfzX~<OpFLFke~<E}jekXqH~n$g
zXZ|c|{`?$tM#D<ut2~eVTGRacu<FmLeq423b<ZrZ-%x#s>YuAVL3L9#!#C0M;SAUh
z^Z!}Uo$|kZ_ql@e{`sKafwuUkW9^xtX8PIpqCcd(Y2z!g^b565fBnAn^~&3Kr;RT&
zF|kqi;ipW2jheiDpZdR*H_h|B|Ek=<MuU8)$=i3WzpT7z+9#ih#Xr>K?R(gFD{tEP
zQSM-)LH|Qd-oB%Kzw)MOpZ>oIf82~W{WI8S{wrzz`xA7=+mxSuXSeIaWBO=l=FiDT
zN&DaFs?)0J-$eOq8SM85{;h%Tl)viwo$wFiJoA@ny6@9h-JoXrWCG3fX(<0m<xSH*
z`673)(I6jcpS~}U`}>Q^=TsY?i}9f*Up`*=dzCkByo=QzL+$yQ!aroZYU3LWJT_{E
zzd?bGntbsj;U81pG|w~sY5Z}cCLe0@CFTF7ylLYr+`&eJe5lF0S>pe`bL9G&<|+DL
z=MFX+<U>uqK3n*sl{ZcM<Qw?oW_-gd(d4Uhgg;q%)5e#$gU$F*lTV*4{Cwq28($MV
z;zRAjuY8|{U$ybY7$0i#nN!67S1WHi;#1-Pbsv6;fhJ!*UHFpnrj4)0%BN6!|IZZu
zZRWpf<1^xY6#r0@&#C<nDsS5OMvM=&_y48h|EJ7<)yCIje5lDc)c%*1Hy!cZ!A7GG
zKlMP9ug(|$zp1=wTJ!mrFg9w>d)3N+#RbAYqP%J2GqLAesOf)sk??<1-n8-Q7$0i#
zl_kPYoh$dBY2#gt54Gpd7XDD<RU2RB4mKK$f2hf4Uncwuls8TLOut0T|4>i#{5Tcv
z^@F!<0d%M5M{b$;|4#MawD}+2?+kya8UEUG;jdEOwDF@F0BZ7~CSUFo{xiy(HoiGU
z956oA<V)uXf2Z=MjZeq?54HDS`3KB@)y9`&e5lF0SBn3?P~Noh>7cyn!@*FKPrpX^
zr<FHtyw5oBhMIh+J^!!5Pd{1mZ(6nS4Itc%Z+In|d{gZot-NXDbKJpZe5lE1i{k$*
z<xLx(6+GfYO}?o7eC16WpO2+qsL9v*#s71aH*I`aAMV4!P?OJX6n;>7)5d3F;SaSB
zzw&Rj@T)d{G<N@nntb-P;{TP(n>Icj<3sJkKPdc-7Jk*nhtI1%91J!2#*py0DR0{N
zQSM-)K|a*vYp)ajLFG-;KFhB%{<s-m_NtZtvfG4z!s4&m_-bI^hd<Etf7I-sBKbek
zut)zhfqn9!Cf`(ky7H!R%JX^dV531k)Z}v`68`5aZ<_Y$e^}m-4>kF`@@FV-x?8@e
z{Bq?@8(&2jxKY#pDg`!b`tP<&_%|qTny0$Cer4s~puB10GjN9+HT};}V56r0RpsBK
zylI~ACjDy4U#q-n<1=uF8+9lDN0q--dDGqUP36C(ylLZ$+`(r4hnn%vUnuGSGv!Si
zALbW^Kh)%l%Kue))7|nV<)@vB^af<w_?iSi3V*2Se`be-{{-bt8()s`p(bBdKBv5C
z<1;Zn)a2{RpQF5K<HPjo!@*FKA60&f@}`Xs{UaZ0@=fJ0R^D{Ce0ry(-&M++Ha;wG
z=zpl`fARIg->kf8<HP($KGfvvZxH@l%A1b(So#+OO+NER;dd!-+W1lKV533*LruQ<
zZ^HM^ll*6z_Idx;@yE^hx>usf*WM)jbCox3d^WI8|3gi_q5SE}n~r$yV58yrK$FLZ
zEB(21l{Zam41Y1OPd?P-OK%bWb;_GIKD^%KLruQ^R^i{JylLY@|2p}fxk&iyls9dB
z=wB!QOBV}&mxW)o@g?qHqd`8@41eS8!atzAY1;SYKX<UvAfFC2`Q|%>|B3RZX^nh2
z_WmAf@}*0K|D%Opwebz^V533*Lrp&aF5xGg2LA$0`}DtwKW^0ILrp&SZs8A8-n8*`
z!q|+jdnKB@dynuZDR0{N-CaL?kJh_A-@>oj_#$_((O~#PP5*0`3%^Er)3nd{XJhFf
zYVwWu3BOHw)5hoF1~+Q@A8PX1_X~fC@}`Zia|as@@}VZ*{DAOP<xSH*!;j?foAIG0
zU;Yo_zo@)v<BKsq)Z`l<7XE&VziQ*NsdoQEO+H-}{xRiE8($Z^75_k!A635hbjiP_
zjUVL>HX41jA87K`YsCL&DQ}wAn0|Hqaib<*r@%%{zW8zBXDDx)=gEinEBR29Z(Jw*
zi<LKRd^(nXp(fwNcVTJw<;t5jz8<@Np(bCuN%+?&Z`$}=tba4q-v7@DKVtr?HohG5
zKh)$)Hw*vo%9}R6fw*y_?!!-m0vk2?{4K(NSb5Vt&-Bm4(l6BB|1SyuY4cyT@#WZf
z=}?nz-Y)!I7Jt>o=VShdntbkS!v8>d)5gC!mVTyx3;VwRdqIy+i@&R`tKR<%oX7a>
z+9A?^bExWu>f=<G@R51?HOJ25tMAnOo2Y$m3GDa7j&0{acWR%j-y`w+IL`C=Vw&#r
z`V`dx>OTC0n(33dSNL0%H*I`1#)q1GUHNaC|Ei78#Q0E?Z>asBDR0_%EK}(>YKA}5
z6Q$qZ;9i)1sTX%nKlgQs|I2Wm>1W#f&u|AD4f-EyhClN^!vBl%rfHw)U&kLe<Lh3v
z?yrXOTa-6#d^)gC|3gjxo67&2@}|4x-F*`N%Pjt?yXDhr|0?B88$TKgf2bM$hVuVy
z@sIgmiSeN(U;2iG|7*&dHvj7}KGfv1-xU6S<xLwO`qzhpp(bBf{$b@!8()q2A8PW&
zZ;AiEQQoxi=~(#`YVxIT3!iw2<ljicU*^B?dCc&Kntbj%!cSM;wE16(g+J8fYsw$3
zylLYzF+SAfN0pzWylLZ`vG|9YeEoY8{+B6l+IS?7->CcWWBQe_&+@%-mXz=3Q=>or
zyra4+pD%{}uza}!x>NaF{l0|nA)IIVV%ox2iaq~A&G@As7XDYtn>Icx(TmELP?OIo
z|7Yb*8(-xPHX2NyP?K*o#Q)Tp5`NRP&-@kUNAjU2-~6fY2P$vc_zK+MMom7{<jX%3
z{&~uqHvV4jV533a^laGA@Puw>#&jN<<3s1^_j}Ky#`Q1i_1~zvU-gjcQkVJTLf8-U
z$6KJ8KhB7a56wR!@w*4-nLkW3K1|;Xcd*f5{6fw2Dg8qD?<;Sb_Q~gB`9IX;YrBO1
zjq;|APs0sv)bu~p<m<{mrM&5G`BCMky;S0F+W0U((Em`=|KhJC{6{Nq+V}={u+bnN
zYVx^X3xAUGrfHw)m*oyN8stMwzVw*zFHzn!?fdj6jLrC*SE9++lwYR2Y2(X*efl42
z^4Z^r{{`hu8(-%RHX7tZO}_cK@WaZRrhSG#6U#rLCZB#n_)C;G9r4`3MuYxm0!=>q
zJK?Jqe$})_|4aDeMom7{<g04`)5@DR{y<N+_)t$&f4m*;^(#x`>(HI<-@5vr&LO<;
z)U^3uiM4Npn&Hp?N#cLF@}?u6o@1kC{Nwq*q5Si6;=k!``O=@o|Jll$Hh$+m@EDu<
zAL=muPRltr4VH44$4a|7)g{$yRC69C&u>v(JyG;d)eY5`s?K2E0PVkDbx!q7s>`bH
zQC(Mkzv?{t&B^~rbq(#%)VowWwChnnp}ML1Z>n=>H{to-`4Yc8-Yclns;jDxP+dbk
zj_04RI)ieNI;+~{M4zUb?(qBq)wD<ba@8f(YgA_z$oYb5`(FE2)%Lyci&fkAyDw91
z-{Y>Tw(n!t%>D<({d-i~_cOnz+P;VRh}r+N*niT_e_r%tgp>Kfz9;uA)%Jb37pS)H
zy`8DrzTfr=<G&#8y+*ZtU+uN3?R#lERNME@F17Pt6#gTs?fYb(QElHFyGwQX4zd43
z)%HEGC(Qm`a{g)6_Pwt3LW!?^kLxJa_C1i3RNMD57O1xGU#wJZ-?Lb++P+t@-R$oY
z|1Yugs;^dU--Gy!>0gQcubF;SbVId$f8kH6?RyHnizGhweT3(#w(lLBrrN$=aIWb;
ziu-Gg|C8u9s<!V1T&CLA+yAI)TR;D^s%<^|ud257?H^Qa>(xK5I$D2zv0jg-#s7m<
z+xqa&S8eOPpZ5Q?cP>ztRpp&85k(NCAu;h0haMw=u(Y~p9+I^t(qe-Y3iLFfC~@7s
zb?>RJo4zmZqq<8cq*pKu<4hPv8OG<>B#IJLT8v5<#z94c-~&lCJ}@*P4kVaJ;tM0n
z{J;JE|NHE-?`<&@Mx8~kwY$#m+mEx~&+qI@-h$SLYCCf}S@*Fok$2Mme6sFKznHB1
z&)+8Z`*?VNLe~A{H<NYW_?=|kAO2mk?gKygWKYlB0UqA7$hxolII`~FK8>vVwCiNu
zzd0uBKFtfsx*zj0vhKTlCt3Gbeq8=}ALW<C8$5n@lXYL@cgVW`asL;wex2g(pGnsJ
zjO)p|Z}DWZ?oT{d?s>oAkgWR+e^2gt-{7TkPkskk_X)mV{4$TvN65PG?>718{eAb4
zbwA%@PVw~Ue!YXqx-ak7$+~atH^{m_?Zsr>hjy;~^S-b?S@(VY9$EKyy`HT5xZXk5
z{aQDYbzjz(#JvCN9<uJUdO-f);Q4Xzyr)n1O&w0w{Zapptoxug%l$ju|2DGjYr24}
z`;*>G)_q9t5x?90-$2%VL0=H>cKdILuW^3-sUBb5kMm5j?z@>K>;9Szvgds?=a6;3
zOpmPlU;YzW_qXhl`%n4%uOsVzl|PqzY`|Fm@-?#VKlwgc_n92>VvoP>CpnU=`$kS6
z>wb&V$eZ}R?r)Lxz411(z8`)SS>FS{k*x1~uOjPv-RsDk_&w_<$@-r5%Vd3@__t(z
zZ}?rZz8`%2OFVu09`Gq-ec$(MWPPu<o~-ZhP9W=hy3@$|KJHwyzIW@9^?lj-vd4yn
zmB+<oegE}V*&pKe?<VW}tn118-s(28zMtAd*7s2NlJ$MlgJgaGv;S$HANqdhm&y7b
z=UHTZU-KNYzLz<UtnXi5K;Cee$A2?f-%k|cS+^gP^?k!@$ogL4QnJ23xQeXr2|i5L
z_W?JPrSJcja(}G9?`ve~<A0AV{rUs(A)?J6*FN9fuO&<W{TSJw;PxkzrJw#Xvh>Zn
zWa*EePnJIT>&epZew+9d4}UjV`qwv*rO*6%vh<VhCQIM=e%YVn;T>>>r%(F8ze<*V
z@9|>l-=0jC{_WXh>C+Zu>BqjBEPdBY$kJcELhh-LdOcbCrMJp`+v9r|S^A$3kfqQ0
zlue$Vxq-Vsj4XZ2<H^#0JdG@U#u{1ri95(M)SvqUvh)WpCrcmjgXG<G|0%Nc_3k7~
zf9`&=^x+Qt_a1-gw;fJiOZ~0qlcj%l7Fqga+sM)nyMQcxuQ!pUe|3%gQ@`pKvh<_w
zk$>txJ!Z4VPx?#GBuk&@d1UGLY$8iv=9OgWznn*we#-@9>8o5ymcGeVWa)3*M3z3r
zUy-F>@g1`CB@Q~%<1hV(BgoQkIFT&<gmcN#H|UV1KX3tA`T(yZ>wN!mvd-(@PuBVS
z&9dit`W<AQkN+cC=iQGxi}i!&*H0(we0q+o^W~GsI!}E$S?8r)vd%j%lzX1%y;1h$
zE6F<FyOyl;yPL>5f4f8ed7k!9WSx)wkgW5rC!X!;)A`lY$U2XDE?MVG8^}5@I-RWZ
zpBh=`Im=|7&-^}F=OM2n>wIGuS?3k+A?y6%I<n3aZX)Y^;45V9hkt{t{p|<I+OJ;o
zQcu73pPx<Ee)3Ud?GK+o)_(8lWbNP9$=Z({leNG4TC(;_|4{C^pZGqq_A@_byf5~D
z_x1CtTg3Z0f04X)f9E^NYYue&JMzpy&fk*%HO~J`o;%oi=4JlAJ>>n#YYuVyUnFlJ
zKSTUWZvSiIXFAW4?|ZiM^T=zS<9q^n?r7&z$TP<{ZxZwOJ<cWTe(@$*_v`(x+;4FI
z|Cy}s#ot2K_q$iiJ@q@TCrjVs(`20&-eG(I&M$d?-`B~~2l+Nx`XKwB<L;#oatL`3
z^+66Zej<L)iuaEkP1gM-XOne*$#$~tFL@(b_m^Bp*7?>)jSs}WEYG`cA)i9NoxF*B
zCwU9`2jn-9pZ0POZx{J!^4rOq$nPR|$h*nEOP=HJL0(Kgp8N*#2J+?PjpVDyr;x8F
zZz6w=d=B}m<SpcT$xZUUukiFNk$;8UCm%uHK|YDRll%(uMdUvD67qi`>-T=&O4jfF
z{t;Qf_xmC8Zu-BStlvBPAz8n7w)R|)zkcuR1!UbP`BJj(@2HV=Kf(%G_aj_H*8K=?
zCF_2KtI4__;bUaokMMc2zHk3~vc7MBkgW6er~Q`4U+1q!kahk#N7ni4K3KCI^q4jH
z-}m=^DKO4Q{)hA7<Qv}W{5<knGPZB*r^Dj!pJO---2bGzuaotA@ICULtK9xI;y-h~
zlzi(=&X<$d-t7E7*^@s?-u-5`zm43d|GUT=KH>J?B*)*kN8By`Yv1Gc_?e)<GjDNT
zOWyP*=jX|u@jZ#Wi{YP1?$dsOJa?u0KaafgkDY&qyygn$i{$<t&e%5c_+0LcZJNNl
z-{yRSG5WhB*x!AQ_WJ$pe<17k#P>mgTYB~T<_D4Wd-4B<yagEvXEW=>UvhpSc_;19
zBJ20YvCIkKZ=gM<-GTLc=&vR3qCM1bJwCU4`0pj__h+G|7}B@%>8?)#HN@avzh`B7
zD53m*(f5O(CK6b`m-RQsPr~^LlvFG|IA#s}RPux5wd5x~*6ruWhl-DM{}@(-|G8P`
z7m{!Mx6Y><<3&3EJDaTEXRDKSKG`Ab_o&8X{l3+OWc^;&#bo_n;G5*1zX$kEvVM>6
z8nS*L?}Nt3kGb_8-w)GXzrT13S@&_@Mc%{ThxjI0_k|yXxs;_>_m>|*)_u??k##@(
zE6Do2h&EZjzj40oU*qL@33(ImXTO51-~0FgS-&50BU!&^@)zVS{JoL8$@=}R`^oY5
z{~qV*(fzplk#%3~lgYY&_9<lDXZj4X?g#!=vhG_wlC1lCkCFeoJ-sg=ujPHI^JLvu
zdInkdhn_?3qoG^<-eQdMJ)Y&eB>(rh{dr{FAG$)G<NJ2Xp8OxlyFTOX^HTEK&pN-K
zto!&rLDv1WpC;?R%+Hf`f9F@ox=-{jvhD}{y8QFL*Kd(^|Lph4y3cc;$9wth!kp6b
z;|XN_KIboxb-sTn*($NQKinAkw}JV04EZLu@86_*-N$(<S^5fR(fuj(U!%S5%UmMs
z_aeu1e=Ea3UwoLi&x`2(67Cnjh4z~m{*|=X??+xk`!CY}M`^#4zwh{2@}B?c`Ll<t
z`vAX5*8PI}?dSQa`wE{y*8O`&8e{y~&GBbFd5QcYa-aNC`q%wAO|tI88Ig6r&1>ZT
zCf^TxGg;q%UM=Q+*+<CwzUmILzBhY-tna^``UFp(?qfKTtnUL)BJ2CBv&s6Nr$yHH
zK(8iWvc~Jv1;(gPTUcKIReYS6@7u^r<ag8m+=*U3H;}iGKTG#d;P|x182NuK^Y`oI
z`^i6~f9YdCd4Er@^y3aSM*MDPeL2Dy;q^J*9!2+kw)YKW-JiLcyz@ejZ<9Rt-<+3?
z5&jLV-@i}$-L$`qeCzAo{T1X({=4%B$ZN<SCvUmL?Y~T3%kb_p#{2d#J@?XHzwi4k
z@-Di6fPBei9^U@wH^O{^{0rm_<U`48$j>Fuk&h>DB5yQCe0DSar;_hy{5I45&bGh*
z<>cM;zhsQ^_!XAtfd22H|5uUkBVRzimhXG5F*>%L^B(@|$urFFcak@~&h4+4d(Qv=
zO!gPM{cYr3jNcvPKKXCSTgcxf?<DVov{-(a(y;Zn2N>f)zu$Za7>H5X|Cw%S%Ih*d
zKI4rUZ_aoj<MT4UAmht2zC7crGX7x3H)ecW#$V0&9%qbd{_oqF{SPvJEcPPO{CQ%=
zPtEwSjMrs+T*fD4yfNcbGv1W(IT_b7-kNbY<K>KhC*un<{)3D!&G^k3U!L)m8DE|8
zhcf;|#-GXf_Kfe!_}+}~%lQ6`XV7-i^4>q=gERi+j1SHD@Ql}Gd~C+g&v;|Tr#i>_
zdsb%u%8Y+I<8j94XMADC7iWA~#&6GfcgELdd_%@JWqfPKU(WciGyX=#_h<Z=Cs)h!
zfQ%2x_~{uxE92*6d`!l_nemG<-kk9(ol)idUpwRfknu$szcu4`W&EcZe<9<$GyY!2
z`yUkYFUD_e#z$s+OvW$H_@x<lGJdsl9G@=8__Z1T5yro_!@L9L3K$!2-vx6e%zI(3
zhS?4CKA3A@-VgI9Fdu;VAk2qgu7&winCoEv7mSV3{~PARF#iYU2AGe)d=%zmFgL<{
z9Oe@+Hh$j(^GTSSVQzu>6wIe#J_GYvm|I~!2V-OVpTqnG%;#ag0P{tdFTs2n<|{C_
z!+aIyuV8HK-ve_e%wNOY1@kvBUxWF-Fn7b;17mZ7zk|6K=Ibzj5AzQ&-+;Lf<{x4H
z3FezH--7uz%y(dH?r=ZM_h9}R=KC-Y!2A&AL6{jE3t?<d@mQFBVIBwbc$ocQo&d8y
zjLk8g2y-CJlVI$80RJ}pA;S1$n5$sk4f7rt{M)%V^Ovyy0nDRi`m<N2YiDY;&Qh(|
zQ8dP*qPA4jo5f(JRv$FSt!}T@>b6GxtsMxK2fuODT!m|mrB=UI4C=!o*w>n^VZU8p
zA&mRAPT@XlO+dds7`fHfVpMCaG}=Y2(HnOYVQ)O@kIDAt=)c`-)DgSLc&NV31WT=Y
zvuSZ(9@M(Uc5^*i=`(I7==B@DX2NBR@Ycx~4UiWenmyGPRuF?`u~;9s8O0&eQNGe>
zp*0%17o%1;re@gM+O3bq1HOH^7_=6dQQHTt5yjy#yvPG7x%y(4_v>5TU$fUQ2DM=^
zXco&e7Kep;cPmP#Xl$$X2gRT`Z`>N<C5T#SSr%QCb&y;^vj`<AECz#GyGZP<cv|&#
z>s5$?9HF9A9rXvjt%G`}R&?tN?Zn}rxl(mF?6=BbmKS9^hJ0WJAFJWQcr+>oi|v(C
z)Uaqb290{ZUv&L(I7YpLNZH&N4+ced<n>43r5_1Vol!1ZU9Gp<MLUsrQaaW+SP3l0
zkp<wMS03aq9(#TKL46;N2Cc4ziRW>@iDb;w7F+G2)ze=DFv6QU@VD3*!9D&CilR2^
zZ7aIzGaM`xJG$e}g1x?lM7FvXl>Kd?=Jr5%({GRJTRYq4=dA@Cy}rz$C~vfT)>b1o
z2lcJJZmqd}id)*noX<V=o2_ZSrUixeZplnu49Re%+ejpn@0tFBLD4`RkC7RMB2REM
zM)pS@73j!%+mV?Rl~LYStZeTMkd<vTVgDZmV=%@abT{@t8ovES;nnR=fimi$+3Km*
zSO6@x219d&MEU=<HeP60v%jrw(Y26U-Jx69gIToe!CSZ3Vg9^_^GcZjdIR;nXx-j_
z$vUZ$ZM1Xb3;wjMLv0T_M)<#GX|ul}PWE809)@<?9u68yGqp~=1(|h_ta$dQ8mmg@
ze~}7{b8i{_S!3IbwUaVO0mC9xe@g|OTAzUM;M8KKH(1B8FkUoi4;^C%m6Cl08d%x0
zmol_~{t7x^%c}FnMZ4|piy<sR@2oa3DEd9TJopT@!}?;;LAP&>e{nptPB4nhXD$nU
zs|n$*7%VK5=~D;m%^t69EZ0V@PJvM?xJ6$OJK^DI+p%+VH8dj2TT-m`<XGpOw-#M=
zD2?QWA&{lzVLzAkCnU@3?Pb=Qr@1d}F+}Hqm6lV3&0-1Hv3aFd$04~HPs9Xns;}@K
z(tFBUs1W6It#2J7+3Ov;{!XilY__(=(KX7fkY`wLlky)A7h<WD&**4Ft%IbV<_LJy
z>L#NLhLDBOY2snn>Y*^V*W25yNm?aGWeQlSs4FWNd(d$dmZC-Lu_3{DT2v*A?P3SS
z3uE-$aIn}O50_FO!$!S3$!G(3DclEZ&mHIOtx;nM4J`44F|3D9c4eipR1eX>Fy0Ff
zHqMxZWn_$l=c>f*!bUH5qE5^yRCs^%7P+!wwR~koUXU_JOCaKCeI{(#6XI#vhRu}~
z)b~M14MPk)h*|V|eI^4HAdH-lmHAT&k<Uuw0B;IY%#{_Je8p7xOw2;Hr!o>oe6Lcm
zeNe~fQQPQ~yv^fo@e*{)HqO>+3$H2$=*DZ9@P<6Zw7EXqHh>!wqH}5VQSM9V6l=9%
zH}rOkkux0CF*AeP+G4$hjDUwI**eCE<swYP2NoUJHc{F6gedb7Qyz@{eB)@4ynobd
z_qJQbtD!!OF)zX+1~$x)hoj!W=AB4!3%yo-)I%qXB!+s@SVW$ngD7mG7oaC-V<1Iz
zAoeK)y4!BiKnTqi1{x2n*wJ5)Sqoh(Ho7CE4fQ`{*P?ZPK+IZfG+e}#6;)=@GsYgq
zBh*y;W3H@Y4u6oji=juJu{IAE_`m4lmH4~V8;%xMeDnbJ`iKtxhAw%rY3q<yuVHa$
z4eO(k4cj)w>oBoiV&J0F=`G_uctG+oxP_P@wE6(fk#`~fim1oa{tr#c<LlA2|E+q3
z5y^9Oh*sYiJ^QG+W9Mv$7-7yFW{`MX_U_Ks1&HFX*Vtw+A6m0Ukyx#N_WbE*Y&_|>
zV~kMN!=lka$=mZ13c~)1`$!xZGtKaqQHBJW9VFe<dsqIts4~Gih6pb~FzO-u0hkcz
zZ%sB9TeBIL4|p0ikoCxBxEeK(Jb$zfcVUeF(sL*xi`01-24#D0wCk-7I(D1l*Bi)4
z7l!^fJodWiOxm^15G7-RCSHV2Z(A|w7HtfGE%eegYbs{B*y>`{HZFq?0?eXX4eLYA
z3F2IFVT{CK-d-EFI(=*T=FG-5fAY#<vH^+~Ws=7hy^xioxxfRb=3^{k!q^eSBWp?4
z4UdQIqCjLlH<~N$CSE>9jv?Y`vg^*qOk=oip|`MZV=>%@3ce1*PIKHWo_p-<QFH5N
zY~nWCcu05h6r7{&h56pP@o=!N)orv9+`3xB7Rs}j3yz0jQR%b4IEvOn^T~zS9`I&`
zUL~yVk*PLLySI7=H60S`8<u)jkAj^B&d}*BpdXy{lUT(;*WVq2L;G(Q&9FqXl~dTA
z$fJgM%`Vl4OQD>@+N+Y5S#5Jn^XJp@+{P0-+w58U-ixLCOjd*CJb7}yo6ll3(Xjc<
zzo1Zqa}+98!B}ZphhR@^U-roT8GFQ}-K}lv;!nPQGE2xTJMD4VyT0&<Zr?@-NEdrU
z^uP8rv{DNXwrsbDPzd(0RJ0id>^a~aadu`cYx;~0-aHVC{%q*6ETllTszJY;*!zA9
z_62HTzUR~an(Z?D7@0P^uH9N-bC|6kQ9`Z$+%%-#uZKy9t!HLZIeN=5MX@wv(*xOs
zX-VCNL99&%_3p6Exk}i32~ywqSXr?>19v!BZx(~2g6FNh5ehF@>rr#H>LdwMs$#Ip
zBzhR0IGdt5qw`)_DY`>!P9<|LE8@wCEK3j;R-U$Ur5AIYOu#U)8DW~ve$HmAKWcW0
zZakYDYkE2{E1o(DoHkqZ`EfD<pO`O)>9wZQmYi~G=#|ydWKYR-R})+lYtm@leCgH5
zC&TuXc&*GwBcKS<DKdshO=oLGn7P;LjYeTJ8!HT(>)|h!Ea-&rfJznqb}$Tvhpw%U
z)0sAhE-L{|jwcJ*bIDv_T8d#N1l2HiHGf{}VQ5ml#2yLyc#l>XC^bRPEgJn^Xd$(3
z@axabmW|1_EK;4olC`i|s3nXRAtIf6SVVYcG9ytR(nXVsBNPR<tXJ7a6pFPHK8HLE
zJ)8tKo3Y+BY}F!NlKbpH<P%|ZH>-^jLI}~pzIJ%?<W4mD$jbJ&Pq!xaLJ$`p8qke#
z@0dIpWEev7y=WvALHvl#Y-<=3Tl<(KPYTn+gDj%6K9J_pP=mvc%ftvggJ|J+V)Yqq
zfiSQ0;|{TQz5SKtW))d`-KDh;0c7qJ#4T}()7+5A#zj7}V)+>i7g)5)%E@9GD@pWk
z#T{n_^ysp7kB1!5V_L8Mg<;G?U(YE5{iA=g^#-ZjX)Ue&a0CpGqt%y92t^GcKhLq=
z)`w)gFHF6CrXb?TWyn4qwbHAz1%(Dwo)y`2Kg>GJwQb)=;LdAgJX9(`*hRH?ddTM2
zi5@3l+V*a?!4x9FlQo{StTHbZisdDrZ3wm%vvA^s219xE$i_ByD<?wbv5gL(((|Os
z2~S$v^~StmNN$CpCMVg{qpf-yGuWkix7oJsj*uSwkDa&<j(#8rGxuSA84aQ06e~nO
zWm;{n#&ANuiptR=zR2dbot4^g$nNOMTX@NA<fTCUN-4o{E05J;D3#2L(!Om5Sz9gr
z29ckPBtkz>h<#IOQz@_*ZkV~3j!?OWMcGZ17S<ox45`-b`A$)4Wes<6(CgT$*SBzO
z=I>3ebcekqY^0bQ4oRhzFJVf~-ZpE~7;Ap*nRs}(>XPOmWEd)9sA);-l(K9`@!+y-
zNl{d`r6?*}QxsJTS8s@i?qxj6s**TTRgoyE6cv#wMHEg{3fWXEg`}#;;#iR-NJghJ
z%IPRpN-M)wF7}bDl!kDV!K<|4NL32T!K##5Jw)a8QKKr(WibVqj$)Hxwt+pUa5f%`
zYQhCJyvLZcm*Gyh2ru!)<|?Zv1F>Gns!Ti{URm+|ZLIcu|H%fviL++kc6B+XwmSby
z&YyjQ41r^Q5>HXX{-{EWM|Cy;%6Uk!#|`WGpX`aej>okwtDIiiARIQMu$uSE?K@T6
z_(OjYb~tTqV|~ZOF%%RFjyi6&Wfa1&B0^{r>IxNQhT14JT~{4g<!c#;y*Fwc1eFAv
zF(F@qDuU}M@Q`nnFH|V@#)%{NRG=YVve>OjpiWI3M?VRw69^w;%a^8|m3(+tC1OV<
zj19C5BkiQ*tkOkQh2B9$Svdb@9!qGQ4tCS*l%Zu??uk6nW58Ae)|3@B1{PQ9!*pNd
zzoI2!6JC37Y3+?Q#0A?>@}vx$$XRUcq{<p<HRU{^K5n9t&M=_)N2boqhtXAGS_MtA
zWPUPF=HVpCgLy22DykyLg-SB!k&bYXkiMdlPZk7T8*^x0r(e-Wp0o4i93Z+$hwUiL
ztM`1&%+!gG*-@eb@}`j0a6~Rq$BTX{b=(p}O|~RaQ>r!cCS5Vc(9$(yDV$QXtuUrm
zZ40?FO^m@z)j}%M1TCc`&X%mIWV*Uga0jcz>q99vWjRLYQ)5TF$;e>MHdO(utP4kD
z7dR%pOl3uE;Z_8pi>gSHVwxhi9;hN_gs10Knwn~sP3<qN{kVEx-eHtBS*OhgRf&>k
zRo>7-Jw5XUC;HSYW|UXeN%^qjYBQCPZJob>u4&f(v;HY$INk&WPRwj#pyqDSn6<vZ
zj;MyK?7ln<8}Lf~F;{|cb+M=s;fiPWcJtB=>MJJ0fq>M|q*~@1Vr{C5QP+!FY1HL%
zjWsEFAykB7VdDTe{0;hFQay{hXwx*r;K3Ecs7;0jyUHxF5G+IRH+GO%^Q<;hgb+fF
zDrR_)ZYG+St*V4rYo~Zj6}c9wC9C4pwf6|A<mjsZW2+dpMc6nh`fS<-inGos>O)da
zTV>|NU@V6OzS&FVHtEG#Q_Gd$u&=c@(QFK?odqOMrHiG9bWuE{i{QXD@o=8d+OgVv
z2|9fqQplPK9Y3i2#nIW{t6t10_I8RCH&+t$xta^S^7u2Sm<~3D3(A2Z2571YEw#2T
z^~ddDA=#kVip?+dS~!UbyCew1wqAqk_v*8x49fCE;ZhYQBBLMK=UWkdz7-L}i6t+x
zO$eGJ9AQ{8pa^l2Eke)2lG{|IJN*;UIB>ir=O?$??Gvd!=LZ2Bain-A^j6_pjxfn^
zop%Ix1_sNGLAPTTXG~`g7v`z7Q4BW+ozVG>*?VngD5&QtxXn9W0-d)J)F4X9Ce%6C
z-6&;@mleSyR3#Y>D<t#X!bhf21<R<cKb-5D(6im1nB(+UX10xg*aGWq!)n|Yla_I&
zu4;bwuEWaA^*z(xptUvVUWOxmJK39%xEkwfYhzG)4IMkxWR)yesYOHaY5a60+AzLo
zF{uFbT?#q2XDaDxAC=ac)@07gNt$gB1ohsq0m^5#b6U8ToB~Ye(iNF65hY6J(Ue)E
z3F;U@Im`nOGS|yUT)BEiB1qSj6k8_~7J}sJyspz)I2NZz$gG$^i=R)y%78-%j?3#G
zk-|nWq2`C=LBH5$$rx=F3rebm3Srqx%VV{~+=;KD6yG>!op3r?yzrkCFeoizvrG#a
zoXo|OsHaP&Bo?L&Z#ju}6s1!N8^KN#H)UyoQ#4uR7A+{#^#+|9)OTzXyz)9*QODPp
zy9_R>s%l$>r=(gE5SBw?C<#cWw;@<eW;2Azsx-bjU6n@Rlq|NFh4z)Ur3uY*L_W%@
z(GTJ*0YNrB3BhVI5kWkWj3Av%hzCE}DJ1eVF(|{hR+(%X(JHH*QJz;*t50P`sdctt
zsvPS;^aWRy$`LK{T7uYd;fRi7O4Cg&vl!9_1vr^1+AS^TjV@YbFPrlDLFv^j^Trir
zu_u)zHY^Fs+zL4baTaGtLfNJ1FwZ-z4ozzdrDa<4N@=wwmGZ1El@?hO$Ss0DMV`@`
zti&kFMz7Ps5o+!<k)kERolpH@wc#8@{ctu$!+mw6aepXW%dosT=Di7=RkI_s<wS2q
z)fWz@^bb+$P0H#qDk?g5pGV@^KAD5U*?ACP)Ny_C0Thnx0HA@5SL>pKdbS9M7^eIV
zjb1byeAPLe@dWV$o=0R%R9NM}xR=j^Bu*QbWR*rNVQj#dG~?TsRmPTqSTy~yY|II(
zj46sEH(7&mY3-vnIq!)nPAjlPrgFe%&k$MoSWT)_lZwnM2}R64Qp`8Kz<QLlYk<2m
z;vz)RIP--s#-{|RDyT&j2k9yW7T5#A5%$9BOG5#%M4;}@eh{G>a5x}&J0^H5CZMCW
z<y&Hvd^2V12Lu+Z`7B#3s)7zLJfbRKvEZ8g5Ql>_i19dsKlYu~>XREnVOpzSZt)eB
zK1Q;n!Ua#U7nXypZUskSGAIYJcDYroUICMRB)LyJ=&Fo;vxHM>RS2`Ji~(b9bY1k-
zW@ONj*B%|e;<UqC58b~G)ib|w{u%pJ0HqW55nNZCnQFqHt^z#f_{dJg!?$ntqG|mj
z^{T7N)Y2{uV`8H2Ah}me5nDU<E*@21<Z_F7!S+Oo&B?ZYEUT;;`pUPWES9KHJ*vc|
z+Zn>)%_F146_teI4G~eN=25+=cywE;5v2=)Qd*hc<YJ%Vl+wH-DQ(z9N<rC5N|`m3
zAE`IRm1AWbmMl&LCD6bujsvp<)wy7H242}+kPq(=MeGoT$;v{aG)pC`WN1}bE-SE(
zNY^>>gfa9b=|oWhFn@(*?n(j&VYf}|e}t51IB@4zj^pN@1l2WHDV=_3i_j|S5fjT+
z24HFYm#R&q%e)v&UiOcwKqS?-s@q^yc#5QYNY9;-N_C&t-pphOWtmhC&C7{zMQr{n
zg3yjClBA7Hky|sVh?D5nstK7|Z%dtmyh|u;vd-gQMcV+aE;+tW&xn8OC(u}<{p_7(
zVtVD*Re3#)SWZ-Ro0au+(b|`$5xF>xY=h9lJ6p8FGLMQqA)M78xA|sJWxS&(c6nq~
z*wQ*Zt(fS6>8xy`+WAV)DU_P97pK)eeI`vbdUctPVsiF#bP!c;U6&o2(q>!J*xw5u
zws_JYsph#mNpn4HR#vYqi+(3_9<IZ-Ky<>oq@7S!>u5ct1nh+q2N)q1KR;(g+TZhZ
zVs|`t(os^KxT%QXbTU&ROy*@VgmhvSg;O#V-X}9O?$1}F8pK&-{TPP2ZPn@$tR^EI
z#1l~t(#c4B@DJ<sC#zg>DwWqV>ki8a=OcW?lSP8#IJViNg`GZBz~YmhVw-~?dpKt=
zkDjV{<*#-T(BpP73SzP+gm9vgPqs0*npRzZj8heVwN4mf+2f=}G8A`to+x3t;=%5x
z?%`4cr6~5`WHrdr`u~r!f}hMreb_5b>jSba$dYUf9IJ;Mq`h2}@pvWp@KTOeKfN7r
z+#K+TU&8V5Z(qRoJW{f%=pBcPIc>F2RY}IIGwSwD=($Z%+_FA@@8_2&4K$<l%*otG
zmFI_hylHcsu(|HnvqTNhNsZ5cMV(OlILl9(!r=wZ*RT!sGk!Nv%*Thk*v78Iuyz~n
z#rXNWyCc89;h}GJ`0+p5PWIt#-j#e^oP6&KM{z${-@QEIpKNMxZa&;A!0!m6n(p4u
md|~qw(@cfJw|(Y5p`bZMf*#|HcxauTNn6ZO1NU}-`~Lv(mY<FQ

literal 0
HcmV?d00001

diff --git a/buildroot/share/atom/avrdude_linux.conf b/buildroot/share/atom/avrdude_linux.conf
new file mode 100644
index 00000000000..46e7ace34b2
--- /dev/null
+++ b/buildroot/share/atom/avrdude_linux.conf
@@ -0,0 +1,15478 @@
+# $Id: avrdude.conf.in 916 2010-01-15 16:36:13Z joerg_wunsch $
+#
+# AVRDUDE Configuration File
+#
+# This file contains configuration data used by AVRDUDE which describes
+# the programming hardware pinouts and also provides part definitions.
+# AVRDUDE's "-C" command line option specifies the location of the
+# configuration file.  The "-c" option names the programmer configuration
+# which must match one of the entry's "id" parameter.  The "-p" option
+# identifies which part AVRDUDE is going to be programming and must match
+# one of the parts' "id" parameter.
+#
+# Possible entry formats are:
+#
+#   programmer
+#       id       = <id1> [, <id2> [, <id3>] ...] ;  # <idN> are quoted strings
+#       desc     = <description> ;                  # quoted string
+#       type     = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic |
+#                  stk600 | stk600pp | stk600hvsp |
+#                  avr910 | butterfly | usbasp |
+#                  jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw |
+#                  jtagmkII_avr32 | jtagmkii_pdi |
+#                  dragon_dw | dragon_jtag | dragon_isp | dragon_pp |
+#                  dragon_hvsp | dragon_pdi | arduino; # programmer type
+#       baudrate = <num> ;                          # baudrate for avr910-programmer
+#       vcc      = <num1> [, <num2> ... ] ;         # pin number(s)
+#       reset    = <num> ;                          # pin number
+#       sck      = <num> ;                          # pin number
+#       mosi     = <num> ;                          # pin number
+#       miso     = <num> ;                          # pin number
+#       errled   = <num> ;                          # pin number
+#       rdyled   = <num> ;                          # pin number
+#       pgmled   = <num> ;                          # pin number
+#       vfyled   = <num> ;                          # pin number
+#     ;
+#
+#   part
+#       id               = <id> ;                 # quoted string
+#       desc             = <description> ;        # quoted string
+#       has_jtag         = <yes/no> ;             # part has JTAG i/f
+#       has_debugwire    = <yes/no> ;             # part has debugWire i/f
+#       has_pdi          = <yes/no> ;             # part has PDI i/f
+#       has_tpi          = <yes/no> ;             # part has TPI i/f
+#       devicecode       = <num> ;            # deprecated, use stk500_devcode
+#       stk500_devcode   = <num> ;                # numeric
+#       avr910_devcode   = <num> ;                # numeric
+#       signature        = <num> <num> <num> ;    # signature bytes
+#       chip_erase_delay = <num> ;                # micro-seconds
+#       reset            = dedicated | io;
+#       retry_pulse      = reset | sck;
+#       pgm_enable       = <instruction format> ;
+#       chip_erase       = <instruction format> ;
+#       chip_erase_delay = <num> ;                # chip erase delay (us)
+#       # STK500 parameters (parallel programming IO lines)
+#       pagel            = <num> ;                # pin name in hex, i.e., 0xD7
+#       bs2              = <num> ;                # pin name in hex, i.e., 0xA0
+#       serial           = <yes/no> ;             # can use serial downloading
+#       parallel         = <yes/no/pseudo>;       # can use par. programming
+#       # STK500v2 parameters, to be taken from Atmel's XML files
+#       timeout          = <num> ;
+#       stabdelay        = <num> ;
+#       cmdexedelay      = <num> ;
+#       synchloops       = <num> ;
+#       bytedelay        = <num> ;
+#       pollvalue        = <num> ;
+#       pollindex        = <num> ;
+#       predelay         = <num> ;
+#       postdelay        = <num> ;
+#       pollmethod       = <num> ;
+#       mode             = <num> ;
+#       delay            = <num> ;
+#       blocksize        = <num> ;
+#       readsize         = <num> ;
+#       hvspcmdexedelay  = <num> ;
+#       # STK500v2 HV programming parameters, from XML
+#       pp_controlstack  = <num>, <num>, ...;   # PP only
+#       hvsp_controlstack = <num>, <num>, ...;  # HVSP only
+#       hventerstabdelay = <num>;
+#       progmodedelay    = <num>;               # PP only
+#       latchcycles      = <num>;
+#       togglevtg        = <num>;
+#       poweroffdelay    = <num>;
+#       resetdelayms     = <num>;
+#       resetdelayus     = <num>;
+#       hvleavestabdelay = <num>;
+#       resetdelay       = <num>;
+#       synchcycles      = <num>;               # HVSP only
+#       chiperasepulsewidth = <num>;            # PP only
+#       chiperasepolltimeout = <num>;
+#       chiperasetime    = <num>;               # HVSP only
+#       programfusepulsewidth = <num>;          # PP only
+#       programfusepolltimeout = <num>;
+#       programlockpulsewidth = <num>;          # PP only
+#       programlockpolltimeout = <num>;
+#       # JTAG ICE mkII parameters, also from XML files
+#       allowfullpagebitstream = <yes/no> ;
+#       enablepageprogramming = <yes/no> ;
+#       idr              = <num> ;                # IO addr of IDR (OCD) reg.
+#       rampz            = <num> ;                # IO addr of RAMPZ reg.
+#       spmcr            = <num> ;                # mem addr of SPMC[S]R reg.
+#       eecr             = <num> ;                # mem addr of EECR reg.
+#                                                 # (only when != 0x3c)
+#       is_avr32         = <yes/no> ;             # AVR32 part
+#
+#       memory <memtype>
+#           paged           = <yes/no> ;          # yes / no
+#           size            = <num> ;             # bytes
+#           page_size       = <num> ;             # bytes
+#           num_pages       = <num> ;             # numeric
+#           min_write_delay = <num> ;             # micro-seconds
+#           max_write_delay = <num> ;             # micro-seconds
+#           readback_p1     = <num> ;             # byte value
+#           readback_p2     = <num> ;             # byte value
+#           pwroff_after_write = <yes/no> ;       # yes / no
+#           read            = <instruction format> ;
+#           write           = <instruction format> ;
+#           read_lo         = <instruction format> ;
+#           read_hi         = <instruction format> ;
+#           write_lo        = <instruction format> ;
+#           write_hi        = <instruction format> ;
+#           loadpage_lo     = <instruction format> ;
+#           loadpage_hi     = <instruction format> ;
+#           writepage       = <instruction format> ;
+#         ;
+#     ;
+#
+# If any of the above parameters are not specified, the default value
+# of 0 is used for numerics or the empty string ("") for string
+# values.  If a required parameter is left empty, AVRDUDE will
+# complain.
+#
+# NOTES:
+#   * 'devicecode' is the device code used by the STK500 (see codes
+#       listed below)
+#   * Not all memory types will implement all instructions.
+#   * AVR Fuse bits and Lock bits are implemented as a type of memory.
+#   * Example memory types are:
+#       "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high
+#       fuse), "signature", "calibration", "lock"
+#   * The memory type specified on the avrdude command line must match
+#     one of the memory types defined for the specified chip.
+#   * The pwroff_after_write flag causes avrdude to attempt to
+#     power the device off and back on after an unsuccessful write to
+#     the affected memory area if VCC programmer pins are defined.  If
+#     VCC pins are not defined for the programmer, a message
+#     indicating that the device needs a power-cycle is printed out.
+#     This flag was added to work around a problem with the
+#     at90s4433/2333's; see the at90s4433 errata at:
+#
+#         http://www.atmel.com/atmel/acrobat/doc1280.pdf
+#
+# INSTRUCTION FORMATS
+#
+#    Instruction formats are specified as a comma seperated list of
+#    string values containing information (bit specifiers) about each
+#    of the 32 bits of the instruction.  Bit specifiers may be one of
+#    the following formats:
+#
+#       '1'  = the bit is always set on input as well as output
+#
+#       '0'  = the bit is always clear on input as well as output
+#
+#       'x'  = the bit is ignored on input and output
+#
+#       'a'  = the bit is an address bit, the bit-number matches this bit
+#              specifier's position within the current instruction byte
+#
+#       'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12
+#              is address bit 12 on input, a0 is address bit 0.
+#
+#       'i'  = the bit is an input data bit
+#
+#       'o'  = the bit is an output data bit
+#
+#    Each instruction must be composed of 32 bit specifiers.  The
+#    instruction specification closely follows the instruction data
+#    provided in Atmel's data sheets for their parts.
+#
+# See below for some examples.
+#
+#
+# The following are STK500 part device codes to use for the
+# "devicecode" field of the part.  These came from Atmel's software
+# section avr061.zip which accompanies the application note
+# AVR061 available from:
+#
+#      http://www.atmel.com/atmel/acrobat/doc2525.pdf
+#
+
+#define ATTINY10    0x10  /* the _old_ one that never existed! */
+#define ATTINY11    0x11
+#define ATTINY12    0x12
+#define ATTINY15    0x13
+#define ATTINY13    0x14
+
+#define ATTINY22    0x20
+#define ATTINY26    0x21
+#define ATTINY28    0x22
+#define ATTINY2313  0x23
+
+#define AT90S1200   0x33
+
+#define AT90S2313   0x40
+#define AT90S2323   0x41
+#define AT90S2333   0x42
+#define AT90S2343   0x43
+
+#define AT90S4414   0x50
+#define AT90S4433   0x51
+#define AT90S4434   0x52
+#define ATMEGA48    0x59
+
+#define AT90S8515   0x60
+#define AT90S8535   0x61
+#define AT90C8534   0x62
+#define ATMEGA8515  0x63
+#define ATMEGA8535  0x64
+
+#define ATMEGA8     0x70
+#define ATMEGA88    0x73
+#define ATMEGA168   0x86
+
+#define ATMEGA161   0x80
+#define ATMEGA163   0x81
+#define ATMEGA16    0x82
+#define ATMEGA162   0x83
+#define ATMEGA169   0x84
+
+#define ATMEGA323   0x90
+#define ATMEGA32    0x91
+
+#define ATMEGA64    0xA0
+
+#define ATMEGA103   0xB1
+#define ATMEGA128   0xB2
+#define AT90CAN128  0xB3
+#define AT90CAN64   0xB3
+#define AT90CAN32   0xB3
+
+#define AT86RF401   0xD0
+
+#define AT89START   0xE0
+#define AT89S51	    0xE0
+#define AT89S52	    0xE1
+
+# The following table lists the devices in the original AVR910
+# appnote:
+# |Device |Signature | Code |
+# +-------+----------+------+
+# |tiny12 | 1E 90 05 | 0x55 |
+# |tiny15 | 1E 90 06 | 0x56 |
+# |       |          |      |
+# | S1200 | 1E 90 01 | 0x13 |
+# |       |          |      |
+# | S2313 | 1E 91 01 | 0x20 |
+# | S2323 | 1E 91 02 | 0x48 |
+# | S2333 | 1E 91 05 | 0x34 |
+# | S2343 | 1E 91 03 | 0x4C |
+# |       |          |      |
+# | S4414 | 1E 92 01 | 0x28 |
+# | S4433 | 1E 92 03 | 0x30 |
+# | S4434 | 1E 92 02 | 0x6C |
+# |       |          |      |
+# | S8515 | 1E 93 01 | 0x38 |
+# | S8535 | 1E 93 03 | 0x68 |
+# |       |          |      |
+# |mega32 | 1E 95 01 | 0x72 |
+# |mega83 | 1E 93 05 | 0x65 |
+# |mega103| 1E 97 01 | 0x41 |
+# |mega161| 1E 94 01 | 0x60 |
+# |mega163| 1E 94 02 | 0x64 |
+
+# Appnote AVR109 also has a table of AVR910 device codes, which
+# lists:
+# dev         avr910   signature
+# ATmega8     0x77     0x1E 0x93 0x07
+# ATmega8515  0x3B     0x1E 0x93 0x06
+# ATmega8535  0x6A     0x1E 0x93 0x08
+# ATmega16    0x75     0x1E 0x94 0x03
+# ATmega162   0x63     0x1E 0x94 0x04
+# ATmega163   0x66     0x1E 0x94 0x02
+# ATmega169   0x79     0x1E 0x94 0x05
+# ATmega32    0x7F     0x1E 0x95 0x02
+# ATmega323   0x73     0x1E 0x95 0x01
+# ATmega64    0x46     0x1E 0x96 0x02
+# ATmega128   0x44     0x1E 0x97 0x02
+#
+# These codes refer to "BOOT" device codes which are apparently
+# different than standard device codes, for whatever reasons
+# (often one above the standard code).
+
+# There are several extended versions of AVR910 implementations around
+# in the Internet.  These add the following codes (only devices that
+# actually exist are listed):
+
+# ATmega8515	0x3A
+# ATmega128	0x43
+# ATmega64	0x45
+# ATtiny26	0x5E
+# ATmega8535	0x69
+# ATmega32	0x72
+# ATmega16	0x74
+# ATmega8	0x76
+# ATmega169	0x78
+
+#
+# Overall avrdude defaults
+#
+default_parallel   = "/dev/parport0";
+default_serial     = "/dev/ttyS0";
+
+
+#
+# PROGRAMMER DEFINITIONS
+#
+
+programmer
+  id    = "arduino";
+  desc  = "Arduino";
+  type  = arduino;
+;
+
+programmer
+  id    = "avrisp";
+  desc  = "Atmel AVR ISP";
+  type  = stk500;
+;
+
+programmer
+  id    = "avrispv2";
+  desc  = "Atmel AVR ISP V2";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "avrispmkII";
+  desc  = "Atmel AVR ISP mkII";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "avrisp2";
+  desc  = "Atmel AVR ISP mkII";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "buspirate";
+  desc  = "The Bus Pirate";
+  type  = buspirate;
+;
+
+# This is supposed to be the "default" STK500 entry.
+# Attempts to select the correct firmware version
+# by probing for it.  Better use one of the entries
+# below instead.
+programmer
+  id    = "stk500";
+  desc  = "Atmel STK500";
+  type  = stk500generic;
+;
+
+programmer
+  id    = "stk500v1";
+  desc  = "Atmel STK500 Version 1.x firmware";
+  type  = stk500;
+;
+
+programmer
+  id    = "mib510";
+  desc  = "Crossbow MIB510 programming board";
+  type  = stk500;
+;
+
+programmer
+  id    = "stk500v2";
+  desc  = "Atmel STK500 Version 2.x firmware";
+  type  = stk500v2;
+;
+
+programmer
+  id    = "stk500pp";
+  desc  = "Atmel STK500 V2 in parallel programming mode";
+  type  = stk500pp;
+;
+
+programmer
+  id    = "stk500hvsp";
+  desc  = "Atmel STK500 V2 in high-voltage serial programming mode";
+  type  = stk500hvsp;
+;
+
+programmer
+  id    = "stk600";
+  desc  = "Atmel STK600";
+  type  = stk600;
+;
+
+programmer
+  id    = "stk600pp";
+  desc  = "Atmel STK600 in parallel programming mode";
+  type  = stk600pp;
+;
+
+programmer
+  id    = "stk600hvsp";
+  desc  = "Atmel STK600 in high-voltage serial programming mode";
+  type  = stk600hvsp;
+;
+
+programmer
+  id    = "avr910";
+  desc  = "Atmel Low Cost Serial Programmer";
+  type  = avr910;
+;
+
+programmer
+  id    = "usbasp";
+  desc  = "USBasp, http://www.fischl.de/usbasp/";
+  type  = usbasp;
+;
+
+programmer
+  id    = "usbtiny";
+  desc  = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/";
+  type  = usbtiny;
+;
+
+programmer
+  id    = "butterfly";
+  desc  = "Atmel Butterfly Development Board";
+  type  = butterfly;
+;
+
+programmer
+  id    = "avr109";
+  desc  = "Atmel AppNote AVR109 Boot Loader";
+  type  = butterfly;
+;
+
+programmer
+  id    = "avr911";
+  desc  = "Atmel AppNote AVR911 AVROSP";
+  type  = butterfly;
+;
+
+programmer
+  id    = "jtagmkI";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 115200;    # default is 115200
+  type  = jtagmki;
+;
+
+# easier to type
+programmer
+  id    = "jtag1";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 115200;    # default is 115200
+  type  = jtagmki;
+;
+
+# easier to type
+programmer
+  id    = "jtag1slow";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 19200;
+  type  = jtagmki;
+;
+
+programmer
+  id    = "jtagmkII";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 19200;    # default is 19200
+  type  = jtagmkii;
+;
+
+# easier to type
+programmer
+  id    = "jtag2slow";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 19200;    # default is 19200
+  type  = jtagmkii;
+;
+
+# JTAG ICE mkII @ 115200 Bd
+programmer
+  id    = "jtag2fast";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 115200;
+  type  = jtagmkii;
+;
+
+# make the fast one the default, people will love that
+programmer
+  id    = "jtag2";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 115200;
+  type  = jtagmkii;
+;
+
+# JTAG ICE mkII in ISP mode
+programmer
+  id    = "jtag2isp";
+  desc  = "Atmel JTAG ICE mkII in ISP mode";
+  baudrate = 115200;
+  type  = jtagmkii_isp;
+;
+
+# JTAG ICE mkII in debugWire mode
+programmer
+  id    = "jtag2dw";
+  desc  = "Atmel JTAG ICE mkII in debugWire mode";
+  baudrate = 115200;
+  type  = jtagmkii_dw;
+;
+
+# JTAG ICE mkII in AVR32 mode
+programmer
+  id    = "jtagmkII_avr32";
+  desc  = "Atmel JTAG ICE mkII im AVR32 mode";
+  baudrate = 115200;
+  type  = jtagmkii_avr32;
+;
+
+# JTAG ICE mkII in AVR32 mode
+programmer
+  id    = "jtag2avr32";
+  desc  = "Atmel JTAG ICE mkII im AVR32 mode";
+  baudrate = 115200;
+  type  = jtagmkii_avr32;
+;
+
+# JTAG ICE mkII in PDI mode
+programmer
+  id    = "jtag2pdi";
+  desc  = "Atmel JTAG ICE mkII PDI mode";
+  baudrate = 115200;
+  type  = jtagmkii_pdi;
+;
+
+# AVR Dragon in JTAG mode
+programmer
+  id    = "dragon_jtag";
+  desc  = "Atmel AVR Dragon in JTAG mode";
+  baudrate = 115200;
+  type  = dragon_jtag;
+;
+
+# AVR Dragon in ISP mode
+programmer
+  id    = "dragon_isp";
+  desc  = "Atmel AVR Dragon in ISP mode";
+  baudrate = 115200;
+  type  = dragon_isp;
+;
+
+# AVR Dragon in PP mode
+programmer
+  id    = "dragon_pp";
+  desc  = "Atmel AVR Dragon in PP mode";
+  baudrate = 115200;
+  type  = dragon_pp;
+;
+
+# AVR Dragon in HVSP mode
+programmer
+  id    = "dragon_hvsp";
+  desc  = "Atmel AVR Dragon in HVSP mode";
+  baudrate = 115200;
+  type  = dragon_hvsp;
+;
+
+# AVR Dragon in debugWire mode
+programmer
+  id    = "dragon_dw";
+  desc  = "Atmel AVR Dragon in debugWire mode";
+  baudrate = 115200;
+  type  = dragon_dw;
+;
+
+# AVR Dragon in PDI mode
+programmer
+  id    = "dragon_pdi";
+  desc  = "Atmel AVR Dragon in PDI mode";
+  baudrate = 115200;
+  type  = dragon_pdi;
+;
+
+programmer
+  id    = "pavr";
+  desc  = "Jason Kyle's pAVR Serial Programmer";
+  type  = avr910;
+;
+
+# Parallel port programmers.
+
+programmer
+  id    = "bsd";
+  desc  = "Brian Dean's Programmer, http://www.bsdhome.com/avrdude/";
+  type  = par;
+  vcc   = 2, 3, 4, 5;
+  reset = 7;
+  sck   = 8;
+  mosi  = 9;
+  miso  = 10;
+;
+
+programmer
+  id    = "stk200";
+  desc  = "STK200";
+  type  = par;
+  buff  = 4, 5;
+  sck   = 6;
+  mosi  = 7;
+  reset = 9;
+  miso  = 10;
+;
+
+# The programming dongle used by the popular Ponyprog
+# utility.  It is almost similar to the STK200 one,
+# except that there is a LED indicating that the
+# programming is currently in progress.
+
+programmer
+  id    = "pony-stk200";
+  desc  = "Pony Prog STK200";
+  type  = par;
+  buff  = 4, 5;
+  sck   = 6;
+  mosi  = 7;
+  reset = 9;
+  miso  = 10;
+  pgmled = 8;
+;
+
+programmer
+  id    = "dt006";
+  desc  = "Dontronics DT006";
+  type  = par;
+  reset = 4;
+  sck   = 5;
+  mosi  = 2;
+  miso  = 11;
+;
+
+programmer
+  id    = "bascom";
+  desc  = "Bascom SAMPLE programming cable";
+  type  = par;
+  reset = 4;
+  sck   = 5;
+  mosi  = 2;
+  miso  = 11;
+;
+
+programmer
+  id     = "alf";
+  desc   = "Nightshade ALF-PgmAVR, http://nightshade.homeip.net/";
+  type   = par;
+  vcc    = 2, 3, 4, 5;
+  buff   = 6;
+  reset  = 7;
+  sck    = 8;
+  mosi   = 9;
+  miso   = 10;
+  errled = 1;
+  rdyled = 14;
+  pgmled = 16;
+  vfyled = 17;
+;
+
+programmer
+  id    = "sp12";
+  desc  = "Steve Bolt's Programmer";
+  type  = par;
+  vcc   = 4,5,6,7,8;
+  reset = 3;
+  sck   = 2;
+  mosi  = 9;
+  miso  = 11;
+;
+
+programmer
+  id     = "picoweb";
+  desc   = "Picoweb Programming Cable, http://www.picoweb.net/";
+  type   = par;
+  reset  = 2;
+  sck    = 3;
+  mosi   = 4;
+  miso   = 13;
+;
+
+programmer
+  id    = "abcmini";
+  desc  = "ABCmini Board, aka Dick Smith HOTCHIP";
+  type  = par;
+  reset = 4;
+  sck   = 3;
+  mosi  = 2;
+  miso  = 10;
+;
+
+programmer
+  id    = "futurlec";
+  desc  = "Futurlec.com programming cable.";
+  type  = par;
+  reset = 3;
+  sck   = 2;
+  mosi  = 1;
+  miso  = 10;
+;
+
+
+# From the contributor of the "xil" jtag cable:
+# The "vcc" definition isn't really vcc (the cable gets its power from
+# the programming circuit) but is necessary to switch one of the
+# buffer lines (trying to add it to the "buff" lines doesn't work).
+# With this, TMS connects to RESET, TDI to MOSI, TDO to MISO and TCK
+# to SCK (plus vcc/gnd of course)
+programmer
+  id    = "xil";
+  desc  = "Xilinx JTAG cable";
+  type  = par;
+  mosi  = 2;
+  sck   = 3;
+  reset = 4;
+  buff  = 5;
+  miso  = 13;
+  vcc   = 6;
+;
+
+
+programmer
+  id = "dapa";
+  desc = "Direct AVR Parallel Access cable";
+  type = par;
+  vcc   = 3;
+  reset = 16;
+  sck = 1;
+  mosi = 2;
+  miso = 11;
+;
+
+programmer
+  id    = "atisp";
+  desc  = "AT-ISP V1.1 programming cable for AVR-SDK1 from <http://micro-research.co.th/> micro-research.co.th";
+  type  = par;
+  reset = ~6;
+  sck   = ~8;
+  mosi  = ~7;
+  miso  = ~10;
+;
+
+programmer
+  id    = "ere-isp-avr";
+  desc  = "ERE ISP-AVR <http://www.ere.co.th/download/sch050713.pdf>";
+  type  = par;
+  reset = ~4;
+  sck   = 3;
+  mosi  = 2;
+  miso  = 10;
+;
+
+programmer
+  id    = "blaster";
+  desc  = "Altera ByteBlaster";
+  type  = par;
+  sck   = 2;
+  miso  = 11;
+  reset = 3;
+  mosi  = 8;
+  buff  = 14;
+;
+
+# It is almost same as pony-stk200, except vcc on pin 5 to auto
+# disconnect port (download on http://electropol.free.fr)
+programmer
+  id    = "frank-stk200";
+  desc  = "Frank STK200";
+  type  = par;
+  vcc   = 5;
+  sck   = 6;
+  mosi  = 7;
+  reset = 9;
+  miso  = 10;
+  pgmled = 8;
+;
+
+# The AT98ISP Cable is a simple parallel dongle for AT89 family.
+# http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2877
+programmer
+id = "89isp";
+desc = "Atmel at89isp cable";
+type = par;
+reset = 17;
+sck = 1;
+mosi = 2;
+miso = 10;
+;
+
+
+#
+# some ultra cheap programmers use bitbanging on the
+# serialport.
+#
+# PC - DB9 - Pins for RS232:
+#
+# GND   5   -- |O
+#              |   O| <-   9   RI
+# DTR   4   <- |O   |
+#              |   O| <-   8   CTS
+# TXD   3   <- |O   |
+#              |   O| ->   7   RTS
+# RXD   2   -> |O   |
+#              |   O| <-   6   DSR
+# DCD   1   -> |O
+#
+# Using RXD is currently not supported.
+# Using RI is not supported under Win32 but is supported under Posix.
+
+# serial ponyprog design (dasa2 in uisp)
+# reset=!txd sck=rts mosi=dtr miso=cts
+
+programmer
+  id    = "ponyser";
+  desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
+  type  = serbb;
+  reset = ~3;
+  sck   = 7;
+  mosi  = 4;
+  miso  = 8;
+;
+
+# Same as above, different name
+# reset=!txd sck=rts mosi=dtr miso=cts
+
+programmer
+  id    = "siprog";
+  desc  = "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>";
+  type  = serbb;
+  reset = ~3;
+  sck   = 7;
+  mosi  = 4;
+  miso  = 8;
+;
+
+# unknown (dasa in uisp)
+# reset=rts sck=dtr mosi=txd miso=cts
+
+programmer
+  id    = "dasa";
+  desc  = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts";
+  type  = serbb;
+  reset = 7;
+  sck   = 4;
+  mosi  = 3;
+  miso  = 8;
+;
+
+# unknown (dasa3 in uisp)
+# reset=!dtr sck=rts mosi=txd miso=cts
+
+programmer
+  id    = "dasa3";
+  desc  = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts";
+  type  = serbb;
+  reset = ~4;
+  sck   = 7;
+  mosi  = 3;
+  miso  = 8;
+;
+
+# C2N232i (jumper configuration "auto")
+# reset=dtr sck=!rts mosi=!txd miso=!cts
+
+programmer
+  id    = "c2n232i";
+  desc  = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts";
+  type  = serbb;
+  reset = 4;
+  sck   = ~7;
+  mosi  = ~3;
+  miso  = ~8;
+;
+
+#
+# PART DEFINITIONS
+#
+
+#------------------------------------------------------------
+# ATtiny11
+#------------------------------------------------------------
+
+# This is an HVSP-only device.
+
+part
+    id                  = "t11";
+    desc                = "ATtiny11";
+    stk500_devcode      = 0x11;
+    signature           = 0x1e 0x90 0x04;
+    chip_erase_delay    = 20000;
+
+    timeout		= 200;
+    hvsp_controlstack     =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+	blocksize	= 64;
+	readsize	= 256;
+	delay		= 5;
+    ;
+
+    memory "flash"
+        size            = 1024;
+	blocksize	= 128;
+	readsize	= 256;
+	delay		= 3;
+    ;
+
+    memory "signature"
+        size            = 3;
+    ;
+
+    memory "lock"
+        size            = 1;
+    ;
+
+    memory "calibration"
+        size            = 1;
+    ;
+
+    memory "fuse"
+        size            = 1;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny12
+#------------------------------------------------------------
+
+part
+    id                  = "t12";
+    desc                = "ATtiny12";
+    stk500_devcode      = 0x12;
+    avr910_devcode      = 0x55;
+    signature           = 0x1e 0x90 0x05;
+    chip_erase_delay    = 20000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 8;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        write_lo        = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        write_hi        = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x o o x";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    o o o o  o o o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny13
+#------------------------------------------------------------
+
+part
+    id                  = "t13";
+    desc                = "ATtiny13";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x0E, 0x1E;
+     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+    stk500_devcode      = 0x14;
+    signature           = 0x1e 0x90 0x07;
+    chip_erase_delay    = 4000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack     =
+	0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 90;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        page_size       = 4;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x   x  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 1024;
+        page_size       = 32;
+        num_pages       = 32;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  0  0  0  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  0  0  0  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x  x  x   x  x a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+	read            = "0  1  0  1   1  0  0  0    0 0 0 0  0 0 0 0",
+                          "x  x  x  x   x  x  x  x    x x o o  o o o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    1 1 i i  i i i i";
+    ;
+
+    memory "calibration"
+        size            = 2;
+        read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                          "0  0  0  0   0  0  0 a0    o o o o  o o o o";
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny15
+#------------------------------------------------------------
+
+part
+    id                  = "t15";
+    desc                = "ATtiny15";
+    stk500_devcode      = 0x13;
+    avr910_devcode      = 0x56;
+    signature           = 0x1e 0x90 0x06;
+    chip_erase_delay    = 8200;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 5;
+    synchcycles         = 6;
+    latchcycles         = 16;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 8200;
+        max_write_delay = 8200;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4100;
+        max_write_delay = 4100;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        write_lo        = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        write_hi        = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x o o x";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    o o o o  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    i i i i  1 1 i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+;
+
+#------------------------------------------------------------
+# AT90s1200
+#------------------------------------------------------------
+
+part
+    id               = "1200";
+    desc             = "AT90S1200";
+    stk500_devcode   = 0x33;
+    avr910_devcode   = 0x13;
+    signature        = 0x1e 0x90 0x01;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 1;
+    bytedelay		= 0;
+    pollindex		= 0;
+    pollvalue		= 0xFF;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1 0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x x a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1 1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x x a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 32;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x02;
+	delay		= 15;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s4414
+#------------------------------------------------------------
+
+part
+    id               = "4414";
+    desc             = "AT90S4414";
+    stk500_devcode   = 0x50;
+    avr910_devcode   = 0x28;
+    signature        = 0x1e 0x92 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8",
+                          "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+      ;
+    memory "lock"
+	size		= 1;
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s2313
+#------------------------------------------------------------
+
+part
+    id               = "2313";
+    desc             = "AT90S2313";
+    stk500_devcode   = 0x40;
+    avr910_devcode   = 0x20;
+    signature        = 0x1e 0x91 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = "1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+      ;
+    memory "lock"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 1 1 x  x i i x",
+                          "x x x x  x x x x  x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s2333
+#------------------------------------------------------------
+
+part
+    id               = "2333";
+##### WARNING: No XML file for device 'AT90S2333'! #####
+    desc             = "AT90S2333";
+    stk500_devcode   = 0x42;
+    avr910_devcode   = 0x34;
+    signature        = 0x1e 0x91 0x05;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        pwroff_after_write = yes;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90s2343 (also AT90s2323 and ATtiny22)
+#------------------------------------------------------------
+
+part
+    id               = "2343";
+    desc             = "AT90S2343";
+    stk500_devcode   = 0x43;
+    avr910_devcode   = 0x4c;
+    signature        = 0x1e 0x91 0x03;
+    chip_erase_delay = 18000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 0;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0   0 0 0 0  0 0 0 0",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   0 0 0 0  0 0 0 0",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 128;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   o o o x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 1  1 1 1 i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   o o o x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90s4433
+#------------------------------------------------------------
+
+part
+    id               = "4433";
+    desc             = "AT90S4433";
+    stk500_devcode   = 0x51;
+    avr910_devcode   = 0x30;
+    signature        = 0x1e 0x92 0x03;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        pwroff_after_write = yes;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s4434
+#------------------------------------------------------------
+
+part
+    id               = "4434";
+##### WARNING: No XML file for device 'AT90S4434'! #####
+    desc             = "AT90S4434";
+    stk500_devcode   = 0x52;
+    avr910_devcode   = 0x6c;
+    signature        = 0x1e 0x92 0x02;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s8515
+#------------------------------------------------------------
+
+part
+    id               = "8515";
+    desc             = "AT90S8515";
+    stk500_devcode   = 0x60;
+    avr910_devcode   = 0x38;
+    signature        = 0x1e 0x93 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8",
+                          "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 8192;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+      ;
+    memory "lock"
+	size		= 1;
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s8535
+#------------------------------------------------------------
+
+part
+    id               = "8535";
+    desc             = "AT90S8535";
+    stk500_devcode   = 0x61;
+    avr910_devcode   = 0x68;
+    signature        = 0x1e 0x93 0x03;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 8192;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+	read		= "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  o";
+	write		= "1  0  1  0   1  1  0  0   1  0  1  1   1  1  1  i",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+    memory "lock"
+	size		= 1;
+	read		= "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
+			  "x  x  x  x   x  x  x  x   o  o  x  x   x  x  x  x";
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega103
+#------------------------------------------------------------
+
+part
+    id               = "m103";
+    desc             = "ATMEGA103";
+    stk500_devcode   = 0xB1;
+    avr910_devcode   = 0x41;
+    signature        = 0x1e 0x97 0x01;
+    chip_erase_delay = 112000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE,
+        0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE,
+        0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A,
+        0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 10;
+
+    memory "eeprom"
+        size            = 4096;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 22000;
+        max_write_delay = 56000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x11;
+	delay		= 70;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0  x x x x  x x x x",
+                          "x x x x  x x x x  x x o x  o 1 o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 1  i 1 i i",
+                          "x x x x  x x x x  x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega64
+#------------------------------------------------------------
+
+part
+    id               = "m64";
+    desc             = "ATMEGA64";
+    has_jtag         = yes;
+    stk500_devcode   = 0xA0;
+    avr910_devcode   = 0x45;
+    signature        = 0x1e 0x96 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x22;
+    spmcr               = 0x68;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x x i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+
+#------------------------------------------------------------
+# ATmega128
+#------------------------------------------------------------
+
+part
+    id               = "m128";
+    desc             = "ATMEGA128";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB2;
+    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x97 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x22;
+    spmcr               = 0x68;
+    rampz               = 0x3b;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x x i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN128
+#------------------------------------------------------------
+
+part
+    id               = "c128";
+    desc             = "AT90CAN128";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x97 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN64
+#------------------------------------------------------------
+
+part
+    id               = "c64";
+    desc             = "AT90CAN64";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x96 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN32
+#------------------------------------------------------------
+
+part
+    id               = "c32";
+    desc             = "AT90CAN32";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x95 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 256;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega16
+#------------------------------------------------------------
+
+part
+    id               = "m16";
+    desc             = "ATMEGA16";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82;
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x94 0x03;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 100;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "calibration"
+        size            = 4;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega164P
+#------------------------------------------------------------
+
+# close to ATmega16
+
+part
+    id               = "m164p";
+    desc             = "ATMEGA164P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x94 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega324P
+#------------------------------------------------------------
+
+# similar to ATmega164P
+
+part
+    id               = "m324p";
+    desc             = "ATMEGA324P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x95 0x08;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega644
+#------------------------------------------------------------
+
+# similar to ATmega164
+
+part
+    id               = "m644";
+    desc             = "ATMEGA644";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x96 0x09;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega644P
+#------------------------------------------------------------
+
+# similar to ATmega164p
+
+part
+    id               = "m644p";
+    desc             = "ATMEGA644P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x96 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega1284P
+#------------------------------------------------------------
+
+# similar to ATmega164p
+
+part
+    id               = "m1284p";
+    desc             = "ATMEGA1284P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x97 0x05;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega162
+#------------------------------------------------------------
+
+part
+    id               = "m162";
+    desc             = "ATMEGA162";
+    has_jtag         = yes;
+    stk500_devcode   = 0x83;
+    avr910_devcode   = 0x63;
+    signature        = 0x1e 0x94 0x04;
+    chip_erase_delay = 9000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+
+    idr              = 0x04;
+    spmcr            = 0x57;
+    allowfullpagebitstream = yes;
+
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+       mode        = 0x41;
+    delay       = 10;
+    blocksize   = 128;
+    readsize    = 256;
+
+        ;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+                read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+                write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+        ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        ;
+
+    memory "signature"
+        size            = 3;
+
+        read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+        ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+;
+
+
+
+#------------------------------------------------------------
+# ATmega163
+#------------------------------------------------------------
+
+part
+    id               = "m163";
+    desc             = "ATMEGA163";
+    stk500_devcode   = 0x81;
+    avr910_devcode   = 0x64;
+    signature        = 0x1e 0x94 0x02;
+    chip_erase_delay = 32000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 30;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 2;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 2;
+
+
+   memory "eeprom"
+        size            = 512;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+        mode            = 0x41;
+        delay           = 20;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x11;
+	delay		= 20;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o x x  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i 1 1  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  1 o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   1 1 1 1  1 i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  0 x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega169
+#------------------------------------------------------------
+
+part
+    id               = "m169";
+    desc             = "ATMEGA169";
+    has_jtag         = yes;
+    stk500_devcode   = 0x85;
+    avr910_devcode   = 0x78;
+    signature        = 0x1e 0x94 0x05;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega329
+#------------------------------------------------------------
+
+part
+    id               = "m329";
+    desc             = "ATMEGA329";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x03;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega329P
+#------------------------------------------------------------
+# Identical to ATmega329 except of the signature
+
+part
+    id               = "m329p";
+    desc             = "ATMEGA329P";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x0b;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3290
+#------------------------------------------------------------
+
+# identical to ATmega329
+
+part
+    id               = "m3290";
+    desc             = "ATMEGA3290";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x04;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a3   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3290P
+#------------------------------------------------------------
+
+# identical to ATmega3290 except of the signature
+
+part
+    id               = "m3290p";
+    desc             = "ATMEGA3290P";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x0c;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a3   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega649
+#------------------------------------------------------------
+
+part
+    id               = "m649";
+    desc             = "ATMEGA649";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x96 0x03;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega6490
+#------------------------------------------------------------
+
+# identical to ATmega649
+
+part
+    id               = "m6490";
+    desc             = "ATMEGA6490";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x96 0x04;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega32
+#------------------------------------------------------------
+
+part
+    id               = "m32";
+    desc             = "ATMEGA32";
+    has_jtag         = yes;
+    stk500_devcode   = 0x91;
+    avr910_devcode   = 0x72;
+    signature        = 0x1e 0x95 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = yes;
+
+   memory "eeprom"
+        paged           = no;   /* leave this "no" */
+        page_size       = 4;    /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o o";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega161
+#------------------------------------------------------------
+
+part
+    id               = "m161";
+    desc             = "ATMEGA161";
+    stk500_devcode   = 0x80;
+    avr910_devcode   = 0x60;
+    signature        = 0x1e 0x94 0x01;
+    chip_erase_delay = 28000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 30;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 2;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 2;
+
+   memory "eeprom"
+        size            = 512;
+        min_write_delay = 3400;
+        max_write_delay = 3400;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 14000;
+        max_write_delay = 14000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 16;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x o x o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 x  x x x x",
+                          "x x x x  x x x x   1 i 1 i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega8
+#------------------------------------------------------------
+
+part
+    id               = "m8";
+    desc             = "ATMEGA8";
+    stk500_devcode   = 0x70;
+    avr910_devcode   = 0x76;
+    signature        = 0x1e 0x93 0x07;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 10000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        page_size       = 4;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0  0  1  1   1  0  0  0   0  0  x  x   x  x  x  x",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega8515
+#------------------------------------------------------------
+
+part
+    id               = "m8515";
+    desc             = "ATMEGA8515";
+    stk500_devcode   = 0x63;
+    avr910_devcode   = 0x3A;
+    signature        = 0x1e 0x93 0x06;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+ read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+ write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0     0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0   o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+
+#------------------------------------------------------------
+# ATmega8535
+#------------------------------------------------------------
+
+part
+    id               = "m8535";
+    desc             = "ATMEGA8535";
+    stk500_devcode   = 0x64;
+    avr910_devcode   = 0x69;
+    signature        = 0x1e 0x93 0x08;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATtiny26
+#------------------------------------------------------------
+
+part
+    id                  = "t26";
+    desc                = "ATTINY26";
+    stk500_devcode      = 0x21;
+    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x91 0x09;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 9000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 2048;
+        page_size       = 32;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 16;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  x x x i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  x x x o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny261
+#------------------------------------------------------------
+# Close to ATtiny26
+
+part
+    id                  = "t261";
+    desc                = "ATTINY261";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x91 0x0c;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 128;
+        page_size       = 4;
+        num_pages       = 32;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 2048;
+        page_size       = 32;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny461
+#------------------------------------------------------------
+# Close to ATtiny261
+
+part
+    id                  = "t461";
+    desc                = "ATTINY461";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x92 0x08;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 256;
+        page_size       = 4;
+        num_pages       = 64;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = " 1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 4096;
+        page_size       = 64;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0   0  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        read_hi         = "  0  0  1  0   1   0  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1   1  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5  x   x   x  x  x",
+                          "  x  x  x  x   x   x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny861
+#------------------------------------------------------------
+# Close to ATtiny461
+
+part
+    id                  = "t861";
+    desc                = "ATTINY861";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x93 0x0d;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 512;
+        num_pages       = 128;
+        page_size       = 4;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = " 1  0  1  0   0  0  0  0    x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o  o";
+
+        write           = " 1  1  0  0   0  0  0  0    x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i  i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0   0  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        read_hi         = "  0  0  1  0   1   0  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1   1  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5  x   x   x  x  x",
+                          "  x  x  x  x   x   x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATmega48
+#------------------------------------------------------------
+
+part
+    id               = "m48";
+    desc             = "ATMEGA48";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x59;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x92 0x05;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 45000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 256;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 4096;
+        page_size       = 64;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0    0 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0    0 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega88
+#------------------------------------------------------------
+
+part
+    id               = "m88";
+    desc             = "ATMEGA88";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x73;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x93 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 512;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega168
+#------------------------------------------------------------
+
+part
+    id              = "m168";
+    desc            = "ATMEGA168";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode  = 0x86;
+    # avr910_devcode = 0x;
+    signature       = 0x1e 0x94 0x06;
+    pagel           = 0xd7;
+    bs2             = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+                       "x x x x x x x x x x x x x x x x";
+
+    chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
+                       "x x x x x x x x x x x x x x x x";
+
+    timeout         = 200;
+    stabdelay       = 100;
+    cmdexedelay     = 25;
+    synchloops      = 32;
+    bytedelay       = 0;
+    pollindex       = 3;
+    pollvalue       = 0x53;
+    predelay        = 1;
+    postdelay       = 1;
+    pollmethod      = 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 512;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = " 1 0 1 0 0 0 0 0",
+                          " 0 0 0 x x x x a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " o o o o o o o o";
+
+        write           = " 1 1 0 0 0 0 0 0",
+                          " 0 0 0 x x x x a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+        ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = " 0 0 1 0 0 0 0 0",
+                          " 0 0 0 a12 a11 a10 a9 a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " o o o o o o o o";
+
+        read_hi          = " 0 0 1 0 1 0 0 0",
+                           " 0 0 0 a12 a11 a10 a9 a8",
+                           " a7 a6 a5 a4 a3 a2 a1 a0",
+                           " o o o o o o o o";
+
+        loadpage_lo     = " 0 1 0 0 0 0 0 0",
+                          " 0 0 0 x x x x x",
+                          " x x a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+        loadpage_hi     = " 0 1 0 0 1 0 0 0",
+                          " 0 0 0 x x x x x",
+                          " x x a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+        writepage       = " 0 1 0 0 1 1 0 0",
+                          " 0 0 0 a12 a11 a10 a9 a8",
+                          " a7 a6 x x x x x x",
+                          " x x x x x x x x";
+
+        mode        = 0x41;
+        delay       = 6;
+        blocksize   = 128;
+        readsize    = 256;
+
+        ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
+                          "x x x x x x x x o o o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
+                          "x x x x x x x x i i i i i i i i";
+        ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
+                          "x x x x x x x x o o o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
+                          "x x x x x x x x i i i i i i i i";
+        ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
+                          "x x x x x x x x x x x x x o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
+                          "x x x x x x x x x x x x x i i i";
+        ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
+                          "x x x x x x x x x x o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
+                          "x x x x x x x x 1 1 i i i i i i";
+        ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
+                          "0 0 0 0 0 0 0 0 o o o o o o o o";
+        ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
+                          "x x x x x x a1 a0 o o o o o o o o";
+        ;
+;
+
+#------------------------------------------------------------
+# ATtiny88
+#------------------------------------------------------------
+
+part
+    id               = "t88";
+    desc             = "attiny88";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x73;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x93 0x11;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 64;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 64;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega328P
+#------------------------------------------------------------
+
+part
+    id			= "m328p";
+    desc		= "ATMEGA328P";
+    has_debugwire	= yes;
+    flash_instr		= 0xB6, 0x01, 0x11;
+    eeprom_instr	= 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+			  0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+			  0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode	= 0x86;
+    # avr910_devcode	= 0x;
+    signature		= 0x1e 0x95 0x0F;
+    pagel		= 0xd7;
+    bs2			= 0xc2;
+    chip_erase_delay	= 9000;
+    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+		 "x x x x x x x x x x x x x x x x";
+
+    chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
+		 "x x x x x x x x x x x x x x x x";
+
+    timeout	= 200;
+    stabdelay	= 100;
+    cmdexedelay	= 25;
+    synchloops	= 32;
+    bytedelay	= 0;
+    pollindex	= 3;
+    pollvalue	= 0x53;
+    predelay	= 1;
+    postdelay	= 1;
+    pollmethod	= 1;
+
+    pp_controlstack =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay	= 100;
+    progmodedelay	= 0;
+    latchcycles		= 5;
+    togglevtg		= 1;
+    poweroffdelay	= 15;
+    resetdelayms	= 1;
+    resetdelayus	= 0;
+    hvleavestabdelay	= 15;
+    resetdelay		= 15;
+    chiperasepulsewidth	= 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+	paged		= no;
+	page_size	= 4;
+	size		= 1024;
+	min_write_delay = 3600;
+	max_write_delay = 3600;
+	readback_p1	= 0xff;
+	readback_p2	= 0xff;
+	read = " 1 0 1 0 0 0 0 0",
+	       " 0 0 0 x x x a9 a8",
+	       " a7 a6 a5 a4 a3 a2 a1 a0",
+	       " o o o o o o o o";
+
+	write = " 1 1 0 0 0 0 0 0",
+	      	" 0 0 0 x x x a9 a8",
+		" a7 a6 a5 a4 a3 a2 a1 a0",
+		" i i i i i i i i";
+
+	loadpage_lo = " 1 1 0 0 0 0 0 1",
+		      " 0 0 0 0 0 0 0 0",
+		      " 0 0 0 0 0 0 a1 a0",
+		      " i i i i i i i i";
+
+	writepage = " 1 1 0 0 0 0 1 0",
+		    " 0 0 x x x x a9 a8",
+		    " a7 a6 a5 a4 a3 a2 0 0",
+		    " x x x x x x x x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+	paged		= yes;
+	size		= 32768;
+	page_size	= 128;
+	num_pages	= 256;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	readback_p1	= 0xff;
+	readback_p2	= 0xff;
+	read_lo = " 0 0 1 0 0 0 0 0",
+		  " 0 0 a13 a12 a11 a10 a9 a8",
+		  " a7 a6 a5 a4 a3 a2 a1 a0",
+		  " o o o o o o o o";
+
+	read_hi = " 0 0 1 0 1 0 0 0",
+		  " 0 0 a13 a12 a11 a10 a9 a8",
+		  " a7 a6 a5 a4 a3 a2 a1 a0",
+		  " o o o o o o o o";
+
+	loadpage_lo = " 0 1 0 0 0 0 0 0",
+		      " 0 0 0 x x x x x",
+		      " x x a5 a4 a3 a2 a1 a0",
+		      " i i i i i i i i";
+
+	loadpage_hi = " 0 1 0 0 1 0 0 0",
+		      " 0 0 0 x x x x x",
+		      " x x a5 a4 a3 a2 a1 a0",
+		      " i i i i i i i i";
+
+	writepage = " 0 1 0 0 1 1 0 0",
+		    " 0 0 a13 a12 a11 a10 a9 a8",
+		    " a7 a6 x x x x x x",
+		    " x x x x x x x x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+
+    ;
+
+    memory "lfuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
+	       "x x x x x x x x o o o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
+	      	"x x x x x x x x i i i i i i i i";
+    ;
+
+    memory "hfuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
+	       "x x x x x x x x o o o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
+	      	"x x x x x x x x i i i i i i i i";
+    ;
+
+    memory "efuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
+	       "x x x x x x x x x x x x x o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
+	      	"x x x x x x x x x x x x x i i i";
+    ;
+
+    memory "lock"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
+	       "x x x x x x x x x x o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
+	      	"x x x x x x x x 1 1 i i i i i i";
+    ;
+
+    memory "calibration"
+	size = 1;
+	read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
+	       "0 0 0 0 0 0 0 0 o o o o o o o o";
+    ;
+
+    memory "signature"
+	size = 3;
+	read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
+	       "x x x x x x a1 a0 o o o o o o o o";
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny2313
+#------------------------------------------------------------
+
+part
+     id            = "t2313";
+     desc          = "ATtiny2313";
+     has_debugwire = yes;
+     flash_instr   = 0xB2, 0x0F, 0x1F;
+     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+     stk500_devcode   = 0x23;
+##   Use the ATtiny26 devcode:
+     avr910_devcode   = 0x5e;
+     signature        = 0x1e 0x91 0x0a;
+     pagel            = 0xD4;
+     bs2              = 0xD6;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
+        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
+        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
+        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+         read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+# The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
+# The information in the data sheet of April/2004 is wrong, this works:
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM2
+#------------------------------------------------------------
+
+part
+     id            = "pwm2";
+     desc          = "AT90PWM2";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x81;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+#   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM3
+#------------------------------------------------------------
+
+# Completely identical to AT90PWM2 (including the signature!)
+
+part
+     id            = "pwm3";
+     desc          = "AT90PWM3";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x81;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+#   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM2B
+#------------------------------------------------------------
+# Same as AT90PWM2 but different signature.
+
+part
+     id            = "pwm2b";
+     desc          = "AT90PWM2B";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x83;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM3B
+#------------------------------------------------------------
+
+# Completely identical to AT90PWM2B (including the signature!)
+
+part
+     id            = "pwm3b";
+     desc          = "AT90PWM3B";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x83;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny25
+#------------------------------------------------------------
+
+part
+     id            = "t25";
+     desc          = "ATtiny25";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x91 0x08;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny25 has Signature Bytes: 0x1E 0x91 0x08.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny45
+#------------------------------------------------------------
+
+part
+     id            = "t45";
+     desc          = "ATtiny45";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x92 0x06;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack     =
+	0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 256;
+         page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 4096;
+         page_size       = 64;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny85
+#------------------------------------------------------------
+
+part
+     id            = "t85";
+     desc          = "ATtiny85";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x93 0x0b;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a8 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0  0",
+                           "  0  0  0  0  a11 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATmega640
+#------------------------------------------------------------
+# Almost same as ATmega1280, except for different memory sizes
+
+part
+    id               = "m640";
+    desc             = "ATMEGA640";
+    signature        = 0x1e 0x96 0x08;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega1280
+#------------------------------------------------------------
+
+part
+    id               = "m1280";
+    desc             = "ATMEGA1280";
+    signature        = 0x1e 0x97 0x03;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega1281
+#------------------------------------------------------------
+# Identical to ATmega1280
+
+part
+    id               = "m1281";
+    desc             = "ATMEGA1281";
+    signature        = 0x1e 0x97 0x04;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega2560
+#------------------------------------------------------------
+
+part
+    id               = "m2560";
+    desc             = "ATMEGA2560";
+    signature        = 0x1e 0x98 0x01;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 262144;
+        page_size       = 256;
+        num_pages       = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega2561
+#------------------------------------------------------------
+
+part
+    id               = "m2561";
+    desc             = "ATMEGA2561";
+    signature        = 0x1e 0x98 0x02;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 262144;
+        page_size       = 256;
+        num_pages       = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega128RFA1
+#------------------------------------------------------------
+# Identical to ATmega2561 but half the ROM
+
+part
+    id               = "m128rfa1";
+    desc             = "ATMEGA128RFA1";
+    signature        = 0x1e 0xa7 0x01;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xE2;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny24
+#------------------------------------------------------------
+
+part
+     id            = "t24";
+     desc          = "ATtiny24";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x91 0x0b;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny44
+#------------------------------------------------------------
+
+part
+     id            = "t44";
+     desc          = "ATtiny44";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+                     0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+                     0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x92 0x07;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 256;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 4096;
+         page_size       = 64;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny44 has Signature Bytes: 0x1E 0x92 0x07.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny84
+#------------------------------------------------------------
+
+part
+     id            = "t84";
+     desc          = "ATtiny84";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x93 0x0c;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a8 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0  0",
+                           "  0  0  0  0  a11 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATmega32u4
+#------------------------------------------------------------
+
+part
+    id               = "m32u4";
+    desc             = "ATmega32U4";
+    signature        = 0x1e 0x95 0x87;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB646
+#------------------------------------------------------------
+
+part
+    id               = "usb646";
+    desc             = "AT90USB646";
+    signature        = 0x1e 0x96 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB647
+#------------------------------------------------------------
+# identical to AT90USB646
+
+part
+    id               = "usb647";
+    desc             = "AT90USB647";
+    signature        = 0x1e 0x96 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB1286
+#------------------------------------------------------------
+
+part
+    id               = "usb1286";
+    desc             = "AT90USB1286";
+    signature        = 0x1e 0x97 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB1287
+#------------------------------------------------------------
+# identical to AT90USB1286
+
+part
+    id               = "usb1287";
+    desc             = "AT90USB1287";
+    signature        = 0x1e 0x97 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90USB162
+#------------------------------------------------------------
+
+part
+    id               = "usb162";
+    desc             = "AT90USB162";
+    has_jtag         = no;
+    has_debugwire    = yes;
+    signature        = 0x1e 0x94 0x82;
+    chip_erase_delay = 9000;
+    reset            = io;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+    pagel            = 0xD7;
+    bs2              = 0xC6;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        num_pages       = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB82
+#------------------------------------------------------------
+# Changes against AT90USB162 (beside IDs)
+#    memory "flash"
+#        size            = 8192;
+#        num_pages       = 64;
+
+part
+    id               = "usb82";
+    desc             = "AT90USB82";
+    has_jtag         = no;
+    has_debugwire    = yes;
+    signature        = 0x1e 0x93 0x82;
+    chip_erase_delay = 9000;
+    reset            = io;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+    pagel            = 0xD7;
+    bs2              = 0xC6;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        num_pages       = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 128;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega325
+#------------------------------------------------------------
+
+part
+    id               = "m325";
+    desc             = "ATMEGA325";
+    signature        = 0x1e 0x95 0x05;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega645
+#------------------------------------------------------------
+
+part
+    id               = "m645";
+    desc             = "ATMEGA645";
+    signature        = 0x1E 0x96 0x05;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3   0   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 8;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "   0   0   1   0      0   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        read_hi         = "   0   0   1   0      1   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "   0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   0   0   0   0      0   0   0   0";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3250
+#------------------------------------------------------------
+
+part
+    id               = "m3250";
+    desc             = "ATMEGA3250";
+    signature        = 0x1E 0x95 0x06;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega6450
+#------------------------------------------------------------
+
+part
+    id               = "m6450";
+    desc             = "ATMEGA6450";
+    signature        = 0x1E 0x96 0x06;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3   0   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "   0   0   1   0      0   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        read_hi         = "   0   0   1   0      1   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "   0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   0   0   0   0      0   0   0   0";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATXMEGA64A1
+#------------------------------------------------------------
+
+part
+    id		= "x64a1";
+    desc	= "ATXMEGA64A1";
+    signature	= 0x1e 0x96 0x4e;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A1
+#------------------------------------------------------------
+
+part
+    id		= "x128a1";
+    desc	= "ATXMEGA128A1";
+    signature	= 0x1e 0x97 0x4c;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A1REVD
+#------------------------------------------------------------
+
+part
+    id		= "x128a1d";
+    desc	= "ATXMEGA128A1REVD";
+    signature	= 0x1e 0x97 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA192A1
+#------------------------------------------------------------
+
+part
+    id		= "x192a1";
+    desc	= "ATXMEGA192A1";
+    signature	= 0x1e 0x97 0x4e;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00030000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0082e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00830000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00032000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A1
+#------------------------------------------------------------
+
+part
+    id		= "x256a1";
+    desc	= "ATXMEGA256A1";
+    signature	= 0x1e 0x98 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA64A3
+#------------------------------------------------------------
+
+part
+    id		= "x64a3";
+    desc	= "ATXMEGA64A3";
+    signature	= 0x1e 0x96 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A3
+#------------------------------------------------------------
+
+part
+    id		= "x128a3";
+    desc	= "ATXMEGA128A3";
+    signature	= 0x1e 0x97 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA192A3
+#------------------------------------------------------------
+
+part
+    id		= "x192a3";
+    desc	= "ATXMEGA192A3";
+    signature	= 0x1e 0x97 0x44;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00030000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0082e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00830000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00032000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A3
+#------------------------------------------------------------
+
+part
+    id		= "x256a3";
+    desc	= "ATXMEGA256A3";
+    signature	= 0x1e 0x98 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A3B
+#------------------------------------------------------------
+
+part
+    id		= "x256a3b";
+    desc	= "ATXMEGA256A3B";
+    signature	= 0x1e 0x98 0x43;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA16A4
+#------------------------------------------------------------
+
+part
+    id		= "x16a4";
+    desc	= "ATXMEGA16A4";
+    signature	= 0x1e 0x94 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0400;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00004000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x00803000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00804000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00005000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA32A4
+#------------------------------------------------------------
+
+part
+    id		= "x32a4";
+    desc	= "ATXMEGA32A4";
+    signature	= 0x1e 0x95 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0400;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00008000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x00807000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00808000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00009000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA64A4
+#------------------------------------------------------------
+
+part
+    id		= "x64a4";
+    desc	= "ATXMEGA64A4";
+    signature	= 0x1e 0x96 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A4
+#------------------------------------------------------------
+
+part
+    id		= "x128a4";
+    desc	= "ATXMEGA128A4";
+    signature	= 0x1e 0x97 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+
+#------------------------------------------------------------
+# AVR32UC3A0512
+#------------------------------------------------------------
+
+part
+    id		= "ucr2";
+    desc	= "32UC3A0512";
+    signature	= 0xED 0xC0 0x3F;
+    has_jtag	= yes;
+    is_avr32    = yes;
+
+    memory "flash"
+        paged           = yes;
+        page_size		= 512;               # bytes
+        readsize		= 512;				 # bytes
+        num_pages       = 1024;              # could be set dynamicly
+        size			= 0x00080000;		 # could be set dynamicly
+        offset			= 0x80000000;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny4
+#------------------------------------------------------------
+
+part
+    id		= "t4";
+    desc	= "ATtiny4";
+    signature	= 0x1e 0x8f 0x0a;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 512;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny5
+#------------------------------------------------------------
+
+part
+    id		= "t5";
+    desc	= "ATtiny5";
+    signature	= 0x1e 0x8f 0x09;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 512;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny9
+#------------------------------------------------------------
+
+part
+    id		= "t8";
+    desc	= "ATtiny9";
+    signature	= 0x1e 0x90 0x08;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 1024;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny10
+#------------------------------------------------------------
+
+part
+    id		= "t10";
+    desc	= "ATtiny10";
+    signature	= 0x1e 0x90 0x03;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 1024;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
diff --git a/buildroot/share/atom/avrdude_macOS.conf b/buildroot/share/atom/avrdude_macOS.conf
new file mode 100644
index 00000000000..d933567452f
--- /dev/null
+++ b/buildroot/share/atom/avrdude_macOS.conf
@@ -0,0 +1,15272 @@
+# $Id: avrdude.conf.in 916 2010-01-15 16:36:13Z joerg_wunsch $
+#
+# AVRDUDE Configuration File
+#
+# This file contains configuration data used by AVRDUDE which describes
+# the programming hardware pinouts and also provides part definitions.
+# AVRDUDE's "-C" command line option specifies the location of the
+# configuration file.  The "-c" option names the programmer configuration
+# which must match one of the entry's "id" parameter.  The "-p" option
+# identifies which part AVRDUDE is going to be programming and must match
+# one of the parts' "id" parameter.
+#
+# Possible entry formats are:
+#
+#   programmer
+#       id       = <id1> [, <id2> [, <id3>] ...] ;  # <idN> are quoted strings
+#       desc     = <description> ;                  # quoted string
+#       type     = par | stk500 | stk500v2 | stk500pp | stk500hvsp | stk500generic |
+#                  stk600 | stk600pp | stk600hvsp |
+#                  avr910 | butterfly | usbasp |
+#                  jtagmki | jtagmkii | jtagmkii_isp | jtagmkii_dw |
+#                  jtagmkII_avr32 | jtagmkii_pdi |
+#                  dragon_dw | dragon_jtag | dragon_isp | dragon_pp |
+#                  dragon_hvsp | dragon_pdi | arduino; # programmer type
+#       baudrate = <num> ;                          # baudrate for avr910-programmer
+#       vcc      = <num1> [, <num2> ... ] ;         # pin number(s)
+#       reset    = <num> ;                          # pin number
+#       sck      = <num> ;                          # pin number
+#       mosi     = <num> ;                          # pin number
+#       miso     = <num> ;                          # pin number
+#       errled   = <num> ;                          # pin number
+#       rdyled   = <num> ;                          # pin number
+#       pgmled   = <num> ;                          # pin number
+#       vfyled   = <num> ;                          # pin number
+#     ;
+#
+#   part
+#       id               = <id> ;                 # quoted string
+#       desc             = <description> ;        # quoted string
+#       has_jtag         = <yes/no> ;             # part has JTAG i/f
+#       has_debugwire    = <yes/no> ;             # part has debugWire i/f
+#       has_pdi          = <yes/no> ;             # part has PDI i/f
+#       has_tpi          = <yes/no> ;             # part has TPI i/f
+#       devicecode       = <num> ;            # deprecated, use stk500_devcode
+#       stk500_devcode   = <num> ;                # numeric
+#       avr910_devcode   = <num> ;                # numeric
+#       signature        = <num> <num> <num> ;    # signature bytes
+#       chip_erase_delay = <num> ;                # micro-seconds
+#       reset            = dedicated | io;
+#       retry_pulse      = reset | sck;
+#       pgm_enable       = <instruction format> ;
+#       chip_erase       = <instruction format> ;
+#       chip_erase_delay = <num> ;                # chip erase delay (us)
+#       # STK500 parameters (parallel programming IO lines)
+#       pagel            = <num> ;                # pin name in hex, i.e., 0xD7
+#       bs2              = <num> ;                # pin name in hex, i.e., 0xA0
+#       serial           = <yes/no> ;             # can use serial downloading
+#       parallel         = <yes/no/pseudo>;       # can use par. programming
+#       # STK500v2 parameters, to be taken from Atmel's XML files
+#       timeout          = <num> ;
+#       stabdelay        = <num> ;
+#       cmdexedelay      = <num> ;
+#       synchloops       = <num> ;
+#       bytedelay        = <num> ;
+#       pollvalue        = <num> ;
+#       pollindex        = <num> ;
+#       predelay         = <num> ;
+#       postdelay        = <num> ;
+#       pollmethod       = <num> ;
+#       mode             = <num> ;
+#       delay            = <num> ;
+#       blocksize        = <num> ;
+#       readsize         = <num> ;
+#       hvspcmdexedelay  = <num> ;
+#       # STK500v2 HV programming parameters, from XML
+#       pp_controlstack  = <num>, <num>, ...;   # PP only
+#       hvsp_controlstack = <num>, <num>, ...;  # HVSP only
+#       hventerstabdelay = <num>;
+#       progmodedelay    = <num>;               # PP only
+#       latchcycles      = <num>;
+#       togglevtg        = <num>;
+#       poweroffdelay    = <num>;
+#       resetdelayms     = <num>;
+#       resetdelayus     = <num>;
+#       hvleavestabdelay = <num>;
+#       resetdelay       = <num>;
+#       synchcycles      = <num>;               # HVSP only
+#       chiperasepulsewidth = <num>;            # PP only
+#       chiperasepolltimeout = <num>;
+#       chiperasetime    = <num>;               # HVSP only
+#       programfusepulsewidth = <num>;          # PP only
+#       programfusepolltimeout = <num>;
+#       programlockpulsewidth = <num>;          # PP only
+#       programlockpolltimeout = <num>;
+#       # JTAG ICE mkII parameters, also from XML files
+#       allowfullpagebitstream = <yes/no> ;
+#       enablepageprogramming = <yes/no> ;
+#       idr              = <num> ;                # IO addr of IDR (OCD) reg.
+#       rampz            = <num> ;                # IO addr of RAMPZ reg.
+#       spmcr            = <num> ;                # mem addr of SPMC[S]R reg.
+#       eecr             = <num> ;                # mem addr of EECR reg.
+#                                                 # (only when != 0x3c)
+#       is_avr32         = <yes/no> ;             # AVR32 part
+#
+#       memory <memtype>
+#           paged           = <yes/no> ;          # yes / no
+#           size            = <num> ;             # bytes
+#           page_size       = <num> ;             # bytes
+#           num_pages       = <num> ;             # numeric
+#           min_write_delay = <num> ;             # micro-seconds
+#           max_write_delay = <num> ;             # micro-seconds
+#           readback_p1     = <num> ;             # byte value
+#           readback_p2     = <num> ;             # byte value
+#           pwroff_after_write = <yes/no> ;       # yes / no
+#           read            = <instruction format> ;
+#           write           = <instruction format> ;
+#           read_lo         = <instruction format> ;
+#           read_hi         = <instruction format> ;
+#           write_lo        = <instruction format> ;
+#           write_hi        = <instruction format> ;
+#           loadpage_lo     = <instruction format> ;
+#           loadpage_hi     = <instruction format> ;
+#           writepage       = <instruction format> ;
+#         ;
+#     ;
+#
+# If any of the above parameters are not specified, the default value
+# of 0 is used for numerics or the empty string ("") for string
+# values.  If a required parameter is left empty, AVRDUDE will
+# complain.
+#
+# NOTES:
+#   * 'devicecode' is the device code used by the STK500 (see codes
+#       listed below)
+#   * Not all memory types will implement all instructions.
+#   * AVR Fuse bits and Lock bits are implemented as a type of memory.
+#   * Example memory types are:
+#       "flash", "eeprom", "fuse", "lfuse" (low fuse), "hfuse" (high
+#       fuse), "signature", "calibration", "lock"
+#   * The memory type specified on the avrdude command line must match
+#     one of the memory types defined for the specified chip.
+#   * The pwroff_after_write flag causes avrdude to attempt to
+#     power the device off and back on after an unsuccessful write to
+#     the affected memory area if VCC programmer pins are defined.  If
+#     VCC pins are not defined for the programmer, a message
+#     indicating that the device needs a power-cycle is printed out.
+#     This flag was added to work around a problem with the
+#     at90s4433/2333's; see the at90s4433 errata at:
+#
+#         http://www.atmel.com/atmel/acrobat/doc1280.pdf
+#
+# INSTRUCTION FORMATS
+#
+#    Instruction formats are specified as a comma seperated list of
+#    string values containing information (bit specifiers) about each
+#    of the 32 bits of the instruction.  Bit specifiers may be one of
+#    the following formats:
+#
+#       '1'  = the bit is always set on input as well as output
+#
+#       '0'  = the bit is always clear on input as well as output
+#
+#       'x'  = the bit is ignored on input and output
+#
+#       'a'  = the bit is an address bit, the bit-number matches this bit
+#              specifier's position within the current instruction byte
+#
+#       'aN' = the bit is the Nth address bit, bit-number = N, i.e., a12
+#              is address bit 12 on input, a0 is address bit 0.
+#
+#       'i'  = the bit is an input data bit
+#
+#       'o'  = the bit is an output data bit
+#
+#    Each instruction must be composed of 32 bit specifiers.  The
+#    instruction specification closely follows the instruction data
+#    provided in Atmel's data sheets for their parts.
+#
+# See below for some examples.
+#
+#
+# The following are STK500 part device codes to use for the
+# "devicecode" field of the part.  These came from Atmel's software
+# section avr061.zip which accompanies the application note
+# AVR061 available from:
+#
+#      http://www.atmel.com/atmel/acrobat/doc2525.pdf
+#
+
+#define ATTINY10    0x10  /* the _old_ one that never existed! */
+#define ATTINY11    0x11
+#define ATTINY12    0x12
+#define ATTINY15    0x13
+#define ATTINY13    0x14
+
+#define ATTINY22    0x20
+#define ATTINY26    0x21
+#define ATTINY28    0x22
+#define ATTINY2313  0x23
+
+#define AT90S1200   0x33
+
+#define AT90S2313   0x40
+#define AT90S2323   0x41
+#define AT90S2333   0x42
+#define AT90S2343   0x43
+
+#define AT90S4414   0x50
+#define AT90S4433   0x51
+#define AT90S4434   0x52
+#define ATMEGA48    0x59
+
+#define AT90S8515   0x60
+#define AT90S8535   0x61
+#define AT90C8534   0x62
+#define ATMEGA8515  0x63
+#define ATMEGA8535  0x64
+
+#define ATMEGA8     0x70
+#define ATMEGA88    0x73
+#define ATMEGA168   0x86
+
+#define ATMEGA161   0x80
+#define ATMEGA163   0x81
+#define ATMEGA16    0x82
+#define ATMEGA162   0x83
+#define ATMEGA169   0x84
+
+#define ATMEGA323   0x90
+#define ATMEGA32    0x91
+
+#define ATMEGA64    0xA0
+
+#define ATMEGA103   0xB1
+#define ATMEGA128   0xB2
+#define AT90CAN128  0xB3
+#define AT90CAN64   0xB3
+#define AT90CAN32   0xB3
+
+#define AT86RF401   0xD0
+
+#define AT89START   0xE0
+#define AT89S51	    0xE0
+#define AT89S52	    0xE1
+
+# The following table lists the devices in the original AVR910
+# appnote:
+# |Device |Signature | Code |
+# +-------+----------+------+
+# |tiny12 | 1E 90 05 | 0x55 |
+# |tiny15 | 1E 90 06 | 0x56 |
+# |       |          |      |
+# | S1200 | 1E 90 01 | 0x13 |
+# |       |          |      |
+# | S2313 | 1E 91 01 | 0x20 |
+# | S2323 | 1E 91 02 | 0x48 |
+# | S2333 | 1E 91 05 | 0x34 |
+# | S2343 | 1E 91 03 | 0x4C |
+# |       |          |      |
+# | S4414 | 1E 92 01 | 0x28 |
+# | S4433 | 1E 92 03 | 0x30 |
+# | S4434 | 1E 92 02 | 0x6C |
+# |       |          |      |
+# | S8515 | 1E 93 01 | 0x38 |
+# | S8535 | 1E 93 03 | 0x68 |
+# |       |          |      |
+# |mega32 | 1E 95 01 | 0x72 |
+# |mega83 | 1E 93 05 | 0x65 |
+# |mega103| 1E 97 01 | 0x41 |
+# |mega161| 1E 94 01 | 0x60 |
+# |mega163| 1E 94 02 | 0x64 |
+
+# Appnote AVR109 also has a table of AVR910 device codes, which
+# lists:
+# dev         avr910   signature
+# ATmega8     0x77     0x1E 0x93 0x07
+# ATmega8515  0x3B     0x1E 0x93 0x06
+# ATmega8535  0x6A     0x1E 0x93 0x08
+# ATmega16    0x75     0x1E 0x94 0x03
+# ATmega162   0x63     0x1E 0x94 0x04
+# ATmega163   0x66     0x1E 0x94 0x02
+# ATmega169   0x79     0x1E 0x94 0x05
+# ATmega32    0x7F     0x1E 0x95 0x02
+# ATmega323   0x73     0x1E 0x95 0x01
+# ATmega64    0x46     0x1E 0x96 0x02
+# ATmega128   0x44     0x1E 0x97 0x02
+#
+# These codes refer to "BOOT" device codes which are apparently
+# different than standard device codes, for whatever reasons
+# (often one above the standard code).
+
+# There are several extended versions of AVR910 implementations around
+# in the Internet.  These add the following codes (only devices that
+# actually exist are listed):
+
+# ATmega8515	0x3A
+# ATmega128	0x43
+# ATmega64	0x45
+# ATtiny26	0x5E
+# ATmega8535	0x69
+# ATmega32	0x72
+# ATmega16	0x74
+# ATmega8	0x76
+# ATmega169	0x78
+
+#
+# Overall avrdude defaults
+#
+default_parallel   = "unknown";
+default_serial     = "unknown";
+
+
+#
+# PROGRAMMER DEFINITIONS
+#
+
+programmer
+  id    = "arduino";
+  desc  = "Arduino";
+  type  = arduino;
+;
+
+programmer
+  id    = "avrisp";
+  desc  = "Atmel AVR ISP";
+  type  = stk500;
+;
+
+programmer
+  id    = "avrispv2";
+  desc  = "Atmel AVR ISP V2";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "avrispmkII";
+  desc  = "Atmel AVR ISP mkII";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "avrisp2";
+  desc  = "Atmel AVR ISP mkII";
+  type  =  stk500v2;
+;
+
+programmer
+  id    = "buspirate";
+  desc  = "The Bus Pirate";
+  type  = buspirate;
+;
+
+# This is supposed to be the "default" STK500 entry.
+# Attempts to select the correct firmware version
+# by probing for it.  Better use one of the entries
+# below instead.
+programmer
+  id    = "stk500";
+  desc  = "Atmel STK500";
+  type  = stk500generic;
+;
+
+programmer
+  id    = "stk500v1";
+  desc  = "Atmel STK500 Version 1.x firmware";
+  type  = stk500;
+;
+
+programmer
+  id    = "mib510";
+  desc  = "Crossbow MIB510 programming board";
+  type  = stk500;
+;
+
+programmer
+  id    = "stk500v2";
+  desc  = "Atmel STK500 Version 2.x firmware";
+  type  = stk500v2;
+;
+
+programmer
+  id    = "stk500pp";
+  desc  = "Atmel STK500 V2 in parallel programming mode";
+  type  = stk500pp;
+;
+
+programmer
+  id    = "stk500hvsp";
+  desc  = "Atmel STK500 V2 in high-voltage serial programming mode";
+  type  = stk500hvsp;
+;
+
+programmer
+  id    = "stk600";
+  desc  = "Atmel STK600";
+  type  = stk600;
+;
+
+programmer
+  id    = "stk600pp";
+  desc  = "Atmel STK600 in parallel programming mode";
+  type  = stk600pp;
+;
+
+programmer
+  id    = "stk600hvsp";
+  desc  = "Atmel STK600 in high-voltage serial programming mode";
+  type  = stk600hvsp;
+;
+
+programmer
+  id    = "avr910";
+  desc  = "Atmel Low Cost Serial Programmer";
+  type  = avr910;
+;
+
+programmer
+  id    = "usbasp";
+  desc  = "USBasp, http://www.fischl.de/usbasp/";
+  type  = usbasp;
+;
+
+programmer
+  id    = "usbtiny";
+  desc  = "USBtiny simple USB programmer, http://www.ladyada.net/make/usbtinyisp/";
+  type  = usbtiny;
+;
+
+programmer
+  id    = "butterfly";
+  desc  = "Atmel Butterfly Development Board";
+  type  = butterfly;
+;
+
+programmer
+  id    = "avr109";
+  desc  = "Atmel AppNote AVR109 Boot Loader";
+  type  = butterfly;
+;
+
+programmer
+  id    = "avr911";
+  desc  = "Atmel AppNote AVR911 AVROSP";
+  type  = butterfly;
+;
+
+programmer
+  id    = "jtagmkI";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 115200;    # default is 115200
+  type  = jtagmki;
+;
+
+# easier to type
+programmer
+  id    = "jtag1";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 115200;    # default is 115200
+  type  = jtagmki;
+;
+
+# easier to type
+programmer
+  id    = "jtag1slow";
+  desc  = "Atmel JTAG ICE (mkI)";
+  baudrate = 19200;
+  type  = jtagmki;
+;
+
+programmer
+  id    = "jtagmkII";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 19200;    # default is 19200
+  type  = jtagmkii;
+;
+
+# easier to type
+programmer
+  id    = "jtag2slow";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 19200;    # default is 19200
+  type  = jtagmkii;
+;
+
+# JTAG ICE mkII @ 115200 Bd
+programmer
+  id    = "jtag2fast";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 115200;
+  type  = jtagmkii;
+;
+
+# make the fast one the default, people will love that
+programmer
+  id    = "jtag2";
+  desc  = "Atmel JTAG ICE mkII";
+  baudrate = 115200;
+  type  = jtagmkii;
+;
+
+# JTAG ICE mkII in ISP mode
+programmer
+  id    = "jtag2isp";
+  desc  = "Atmel JTAG ICE mkII in ISP mode";
+  baudrate = 115200;
+  type  = jtagmkii_isp;
+;
+
+# JTAG ICE mkII in debugWire mode
+programmer
+  id    = "jtag2dw";
+  desc  = "Atmel JTAG ICE mkII in debugWire mode";
+  baudrate = 115200;
+  type  = jtagmkii_dw;
+;
+
+# JTAG ICE mkII in AVR32 mode
+programmer
+  id    = "jtagmkII_avr32";
+  desc  = "Atmel JTAG ICE mkII im AVR32 mode";
+  baudrate = 115200;
+  type  = jtagmkii_avr32;
+;
+
+# JTAG ICE mkII in AVR32 mode
+programmer
+  id    = "jtag2avr32";
+  desc  = "Atmel JTAG ICE mkII im AVR32 mode";
+  baudrate = 115200;
+  type  = jtagmkii_avr32;
+;
+
+# JTAG ICE mkII in PDI mode
+programmer
+  id    = "jtag2pdi";
+  desc  = "Atmel JTAG ICE mkII PDI mode";
+  baudrate = 115200;
+  type  = jtagmkii_pdi;
+;
+
+# AVR Dragon in JTAG mode
+programmer
+  id    = "dragon_jtag";
+  desc  = "Atmel AVR Dragon in JTAG mode";
+  baudrate = 115200;
+  type  = dragon_jtag;
+;
+
+# AVR Dragon in ISP mode
+programmer
+  id    = "dragon_isp";
+  desc  = "Atmel AVR Dragon in ISP mode";
+  baudrate = 115200;
+  type  = dragon_isp;
+;
+
+# AVR Dragon in PP mode
+programmer
+  id    = "dragon_pp";
+  desc  = "Atmel AVR Dragon in PP mode";
+  baudrate = 115200;
+  type  = dragon_pp;
+;
+
+# AVR Dragon in HVSP mode
+programmer
+  id    = "dragon_hvsp";
+  desc  = "Atmel AVR Dragon in HVSP mode";
+  baudrate = 115200;
+  type  = dragon_hvsp;
+;
+
+# AVR Dragon in debugWire mode
+programmer
+  id    = "dragon_dw";
+  desc  = "Atmel AVR Dragon in debugWire mode";
+  baudrate = 115200;
+  type  = dragon_dw;
+;
+
+# AVR Dragon in PDI mode
+programmer
+  id    = "dragon_pdi";
+  desc  = "Atmel AVR Dragon in PDI mode";
+  baudrate = 115200;
+  type  = dragon_pdi;
+;
+
+programmer
+  id    = "pavr";
+  desc  = "Jason Kyle's pAVR Serial Programmer";
+  type  = avr910;
+;
+
+
+#
+# some ultra cheap programmers use bitbanging on the
+# serialport.
+#
+# PC - DB9 - Pins for RS232:
+#
+# GND   5   -- |O
+#              |   O| <-   9   RI
+# DTR   4   <- |O   |
+#              |   O| <-   8   CTS
+# TXD   3   <- |O   |
+#              |   O| ->   7   RTS
+# RXD   2   -> |O   |
+#              |   O| <-   6   DSR
+# DCD   1   -> |O
+#
+# Using RXD is currently not supported.
+# Using RI is not supported under Win32 but is supported under Posix.
+
+# serial ponyprog design (dasa2 in uisp)
+# reset=!txd sck=rts mosi=dtr miso=cts
+
+programmer
+  id    = "ponyser";
+  desc  = "design ponyprog serial, reset=!txd sck=rts mosi=dtr miso=cts";
+  type  = serbb;
+  reset = ~3;
+  sck   = 7;
+  mosi  = 4;
+  miso  = 8;
+;
+
+# Same as above, different name
+# reset=!txd sck=rts mosi=dtr miso=cts
+
+programmer
+  id    = "siprog";
+  desc  = "Lancos SI-Prog <http://www.lancos.com/siprogsch.html>";
+  type  = serbb;
+  reset = ~3;
+  sck   = 7;
+  mosi  = 4;
+  miso  = 8;
+;
+
+# unknown (dasa in uisp)
+# reset=rts sck=dtr mosi=txd miso=cts
+
+programmer
+  id    = "dasa";
+  desc  = "serial port banging, reset=rts sck=dtr mosi=txd miso=cts";
+  type  = serbb;
+  reset = 7;
+  sck   = 4;
+  mosi  = 3;
+  miso  = 8;
+;
+
+# unknown (dasa3 in uisp)
+# reset=!dtr sck=rts mosi=txd miso=cts
+
+programmer
+  id    = "dasa3";
+  desc  = "serial port banging, reset=!dtr sck=rts mosi=txd miso=cts";
+  type  = serbb;
+  reset = ~4;
+  sck   = 7;
+  mosi  = 3;
+  miso  = 8;
+;
+
+# C2N232i (jumper configuration "auto")
+# reset=dtr sck=!rts mosi=!txd miso=!cts
+
+programmer
+  id    = "c2n232i";
+  desc  = "serial port banging, reset=dtr sck=!rts mosi=!txd miso=!cts";
+  type  = serbb;
+  reset = 4;
+  sck   = ~7;
+  mosi  = ~3;
+  miso  = ~8;
+;
+
+#
+# PART DEFINITIONS
+#
+
+#------------------------------------------------------------
+# ATtiny11
+#------------------------------------------------------------
+
+# This is an HVSP-only device.
+
+part
+    id                  = "t11";
+    desc                = "ATtiny11";
+    stk500_devcode      = 0x11;
+    signature           = 0x1e 0x90 0x04;
+    chip_erase_delay    = 20000;
+
+    timeout		= 200;
+    hvsp_controlstack     =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+	blocksize	= 64;
+	readsize	= 256;
+	delay		= 5;
+    ;
+
+    memory "flash"
+        size            = 1024;
+	blocksize	= 128;
+	readsize	= 256;
+	delay		= 3;
+    ;
+
+    memory "signature"
+        size            = 3;
+    ;
+
+    memory "lock"
+        size            = 1;
+    ;
+
+    memory "calibration"
+        size            = 1;
+    ;
+
+    memory "fuse"
+        size            = 1;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny12
+#------------------------------------------------------------
+
+part
+    id                  = "t12";
+    desc                = "ATtiny12";
+    stk500_devcode      = 0x12;
+    avr910_devcode      = 0x55;
+    signature           = 0x1e 0x90 0x05;
+    chip_erase_delay    = 20000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 8;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        write_lo        = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        write_hi        = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x o o x";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    o o o o  o o o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny13
+#------------------------------------------------------------
+
+part
+    id                  = "t13";
+    desc                = "ATtiny13";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x0E, 0x1E;
+     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x0E, 0xB4, 0x0E, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+    stk500_devcode      = 0x14;
+    signature           = 0x1e 0x90 0x07;
+    chip_erase_delay    = 4000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack     =
+	0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 90;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        page_size       = 4;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x   x  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 1024;
+        page_size       = 32;
+        num_pages       = 32;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  0  0  0  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  0  0  0  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  0  0  0  0   0  0  0 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    0 0 0 x  x x x x",
+                          "x  x  x  x   x  x a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+	read            = "0  1  0  1   1  0  0  0    0 0 0 0  0 0 0 0",
+                          "x  x  x  x   x  x  x  x    x x o o  o o o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    1 1 i i  i i i i";
+    ;
+
+    memory "calibration"
+        size            = 2;
+        read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                          "0  0  0  0   0  0  0 a0    o o o o  o o o o";
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny15
+#------------------------------------------------------------
+
+part
+    id                  = "t15";
+    desc                = "ATtiny15";
+    stk500_devcode      = 0x13;
+    avr910_devcode      = 0x56;
+    signature           = 0x1e 0x90 0x06;
+    chip_erase_delay    = 8200;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 5;
+    synchcycles         = 6;
+    latchcycles         = 16;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 8200;
+        max_write_delay = 8200;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x  x a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4100;
+        max_write_delay = 4100;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        write_lo        = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        write_hi        = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x o o x";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 i i 1",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0  1  0  1   0  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    o o o o  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 0 1 x  x x x x",
+                          "x  x  x  x   x  x  x  x    i i i i  1 1 i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+;
+
+#------------------------------------------------------------
+# AT90s1200
+#------------------------------------------------------------
+
+part
+    id               = "1200";
+    desc             = "AT90S1200";
+    stk500_devcode   = 0x33;
+    avr910_devcode   = 0x13;
+    signature        = 0x1e 0x90 0x01;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 1;
+    bytedelay		= 0;
+    pollindex		= 0;
+    pollvalue		= 0xFF;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 64;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1 0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x x a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1 1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x x a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 32;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 1024;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x   x  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x02;
+	delay		= 15;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s4414
+#------------------------------------------------------------
+
+part
+    id               = "4414";
+    desc             = "AT90S4414";
+    stk500_devcode   = 0x50;
+    avr910_devcode   = 0x28;
+    signature        = 0x1e 0x92 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8",
+                          "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+      ;
+    memory "lock"
+	size		= 1;
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s2313
+#------------------------------------------------------------
+
+part
+    id               = "2313";
+    desc             = "AT90S2313";
+    stk500_devcode   = 0x40;
+    avr910_devcode   = 0x20;
+    signature        = 0x1e 0x91 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = "1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+      ;
+    memory "lock"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 1 1 x  x i i x",
+                          "x x x x  x x x x  x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s2333
+#------------------------------------------------------------
+
+part
+    id               = "2333";
+##### WARNING: No XML file for device 'AT90S2333'! #####
+    desc             = "AT90S2333";
+    stk500_devcode   = 0x42;
+    avr910_devcode   = 0x34;
+    signature        = 0x1e 0x91 0x05;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        pwroff_after_write = yes;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90s2343 (also AT90s2323 and ATtiny22)
+#------------------------------------------------------------
+
+part
+    id               = "2343";
+    desc             = "AT90S2343";
+    stk500_devcode   = 0x43;
+    avr910_devcode   = 0x4c;
+    signature        = 0x1e 0x91 0x03;
+    chip_erase_delay = 18000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x00,
+        0x68, 0x78, 0x68, 0x68, 0x00, 0x00, 0x68, 0x78,
+        0x78, 0x00, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 0;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 50;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0   0 0 0 0  0 0 0 0",
+                          "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0   0 0 0 0  0 0 0 0",
+                          "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x   x  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 128;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   o o o x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 1  1 1 1 i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   o o o x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90s4433
+#------------------------------------------------------------
+
+part
+    id               = "4433";
+    desc             = "AT90S4433";
+    stk500_devcode   = 0x51;
+    avr910_devcode   = 0x30;
+    signature        = 0x1e 0x92 0x03;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        pwroff_after_write = yes;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s4434
+#------------------------------------------------------------
+
+part
+    id               = "4434";
+##### WARNING: No XML file for device 'AT90S4434'! #####
+    desc             = "AT90S4434";
+    stk500_devcode   = 0x52;
+    avr910_devcode   = 0x6c;
+    signature        = 0x1e 0x92 0x02;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    memory "eeprom"
+        size            = 256;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+      ;
+    memory "flash"
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x    x a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 i  i i i i",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+    memory "lock"
+        size            = 1;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s8515
+#------------------------------------------------------------
+
+part
+    id               = "8515";
+    desc             = "AT90S8515";
+    stk500_devcode   = 0x60;
+    avr910_devcode   = 0x38;
+    signature        = 0x1e 0x93 0x01;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+        read            = " 1  0  1  0   0  0  0  0  x x x x  x x x a8",
+                          "a7 a6 a5 a4 a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 8192;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x7f;
+        readback_p2     = 0x7f;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+      ;
+    memory "lock"
+	size		= 1;
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90s8535
+#------------------------------------------------------------
+
+part
+    id               = "8535";
+    desc             = "AT90S8535";
+    stk500_devcode   = 0x61;
+    avr910_devcode   = 0x68;
+    signature        = 0x1e 0x93 0x03;
+    chip_erase_delay = 20000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 1;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0x00;
+        readback_p2     = 0xff;
+        read            = " 1  0  1  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0   x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        size            = 8192;
+        min_write_delay = 9000;
+        max_write_delay = 20000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        write_lo        = "  0   1   0   0    0   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+        write_hi        = "  0   1   0   0    1   0   0   0",
+                          "  x   x   x   x  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  i   i   i   i    i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "fuse"
+	size		= 1;
+	read		= "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  o";
+	write		= "1  0  1  0   1  1  0  0   1  0  1  1   1  1  1  i",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+    memory "lock"
+	size		= 1;
+	read		= "0  1  0  1   1  0  0  0   x  x  x  x   x  x  x  x",
+			  "x  x  x  x   x  x  x  x   o  o  x  x   x  x  x  x";
+	write		= "1  0  1  0   1  1  0  0   1  1  1  1   1  i  i  1",
+			  "x  x  x  x   x  x  x  x   x  x  x  x   x  x  x  x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega103
+#------------------------------------------------------------
+
+part
+    id               = "m103";
+    desc             = "ATMEGA103";
+    stk500_devcode   = 0xB1;
+    avr910_devcode   = 0x41;
+    signature        = 0x1e 0x97 0x01;
+    chip_erase_delay = 112000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x8E, 0x9E, 0x2E, 0x3E, 0xAE, 0xBE,
+        0x4E, 0x5E, 0xCE, 0xDE, 0x6E, 0x7E, 0xEE, 0xDE,
+        0x66, 0x76, 0xE6, 0xF6, 0x6A, 0x7A, 0xEA, 0x7A,
+        0x7F, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 15;
+    chiperasepolltimeout = 0;
+    programfusepulsewidth = 2;
+    programfusepolltimeout = 0;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 10;
+
+    memory "eeprom"
+        size            = 4096;
+        min_write_delay = 4000;
+        max_write_delay = 9000;
+        readback_p1     = 0x80;
+        readback_p2     = 0x7f;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 22000;
+        max_write_delay = 56000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x11;
+	delay		= 70;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "fuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0  x x x x  x x x x",
+                          "x x x x  x x x x  x x o x  o 1 o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 1  i 1 i i",
+                          "x x x x  x x x x  x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x x x x  x o o x";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 1  1 i i 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega64
+#------------------------------------------------------------
+
+part
+    id               = "m64";
+    desc             = "ATMEGA64";
+    has_jtag         = yes;
+    stk500_devcode   = 0xA0;
+    avr910_devcode   = 0x45;
+    signature        = 0x1e 0x96 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x22;
+    spmcr               = 0x68;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x x i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+
+#------------------------------------------------------------
+# ATmega128
+#------------------------------------------------------------
+
+part
+    id               = "m128";
+    desc             = "ATMEGA128";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB2;
+    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x97 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x22;
+    spmcr               = 0x68;
+    rampz               = 0x3b;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 12;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x x i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN128
+#------------------------------------------------------------
+
+part
+    id               = "c128";
+    desc             = "AT90CAN128";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x97 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN64
+#------------------------------------------------------------
+
+part
+    id               = "c64";
+    desc             = "AT90CAN64";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x96 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90CAN32
+#------------------------------------------------------------
+
+part
+    id               = "c32";
+    desc             = "AT90CAN32";
+    has_jtag         = yes;
+    stk500_devcode   = 0xB3;
+#    avr910_devcode   = 0x43;
+    signature        = 0x1e 0x95 0x81;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    eecr                = 0x3f;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 256;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0  0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega16
+#------------------------------------------------------------
+
+part
+    id               = "m16";
+    desc             = "ATMEGA16";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82;
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x94 0x03;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 100;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = yes;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+    memory "calibration"
+        size            = 4;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega164P
+#------------------------------------------------------------
+
+# close to ATmega16
+
+part
+    id               = "m164p";
+    desc             = "ATMEGA164P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x94 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega324P
+#------------------------------------------------------------
+
+# similar to ATmega164P
+
+part
+    id               = "m324p";
+    desc             = "ATMEGA324P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x95 0x08;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega644
+#------------------------------------------------------------
+
+# similar to ATmega164
+
+part
+    id               = "m644";
+    desc             = "ATMEGA644";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x96 0x09;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega644P
+#------------------------------------------------------------
+
+# similar to ATmega164p
+
+part
+    id               = "m644p";
+    desc             = "ATMEGA644P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x96 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega1284P
+#------------------------------------------------------------
+
+# similar to ATmega164p
+
+part
+    id               = "m1284p";
+    desc             = "ATMEGA1284P";
+    has_jtag         = yes;
+    stk500_devcode   = 0x82; # no STK500v1 support, use the ATmega16 one
+    avr910_devcode   = 0x74;
+    signature        = 0x1e 0x97 0x05;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega162
+#------------------------------------------------------------
+
+part
+    id               = "m162";
+    desc             = "ATMEGA162";
+    has_jtag         = yes;
+    stk500_devcode   = 0x83;
+    avr910_devcode   = 0x63;
+    signature        = 0x1e 0x94 0x04;
+    chip_erase_delay = 9000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+
+    idr              = 0x04;
+    spmcr            = 0x57;
+    allowfullpagebitstream = yes;
+
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+       mode        = 0x41;
+    delay       = 10;
+    blocksize   = 128;
+    readsize    = 256;
+
+        ;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+                read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+                write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+        ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+        ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  1 1 1 1  1 i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        ;
+
+    memory "signature"
+        size            = 3;
+
+        read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+        ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+;
+
+
+
+#------------------------------------------------------------
+# ATmega163
+#------------------------------------------------------------
+
+part
+    id               = "m163";
+    desc             = "ATMEGA163";
+    stk500_devcode   = 0x81;
+    avr910_devcode   = 0x64;
+    signature        = 0x1e 0x94 0x02;
+    chip_erase_delay = 32000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 30;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 2;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 2;
+
+
+   memory "eeprom"
+        size            = 512;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+        mode            = 0x41;
+        delay           = 20;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 16000;
+        max_write_delay = 16000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x11;
+	delay		= 20;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o x x  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i 1 1  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  1 o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   1 1 1 1  1 i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  0 x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega169
+#------------------------------------------------------------
+
+part
+    id               = "m169";
+    desc             = "ATMEGA169";
+    has_jtag         = yes;
+    stk500_devcode   = 0x85;
+    avr910_devcode   = 0x78;
+    signature        = 0x1e 0x94 0x05;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega329
+#------------------------------------------------------------
+
+part
+    id               = "m329";
+    desc             = "ATMEGA329";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x03;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega329P
+#------------------------------------------------------------
+# Identical to ATmega329 except of the signature
+
+part
+    id               = "m329p";
+    desc             = "ATMEGA329P";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x0b;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3290
+#------------------------------------------------------------
+
+# identical to ATmega329
+
+part
+    id               = "m3290";
+    desc             = "ATMEGA3290";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x04;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a3   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3290P
+#------------------------------------------------------------
+
+# identical to ATmega3290 except of the signature
+
+part
+    id               = "m3290p";
+    desc             = "ATMEGA3290P";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x95 0x0c;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a3   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega649
+#------------------------------------------------------------
+
+part
+    id               = "m649";
+    desc             = "ATMEGA649";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x96 0x03;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega6490
+#------------------------------------------------------------
+
+# identical to ATmega649
+
+part
+    id               = "m6490";
+    desc             = "ATMEGA6490";
+    has_jtag         = yes;
+#    stk500_devcode   = 0x85; # no STK500 support, only STK500v2
+#    avr910_devcode   = 0x?;  # try the ATmega169 one:
+    avr910_devcode   = 0x75;
+    signature        = 0x1e 0x96 0x04;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+
+   memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0   0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega32
+#------------------------------------------------------------
+
+part
+    id               = "m32";
+    desc             = "ATMEGA32";
+    has_jtag         = yes;
+    stk500_devcode   = 0x91;
+    avr910_devcode   = 0x72;
+    signature        = 0x1e 0x95 0x02;
+    chip_erase_delay = 9000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = yes;
+
+   memory "eeprom"
+        paged           = no;   /* leave this "no" */
+        page_size       = 4;    /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x  a9  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o o";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0    0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0  o o o o  o o o o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega161
+#------------------------------------------------------------
+
+part
+    id               = "m161";
+    desc             = "ATMEGA161";
+    stk500_devcode   = 0x80;
+    avr910_devcode   = 0x60;
+    signature        = 0x1e 0x94 0x01;
+    chip_erase_delay = 28000;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 0;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 30;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 2;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 2;
+
+   memory "eeprom"
+        size            = 512;
+        min_write_delay = 3400;
+        max_write_delay = 3400;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 5;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 14000;
+        max_write_delay = 14000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  x   x   x a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 16;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "fuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   x x x x  x x x x",
+                          "x x x x  x x x x   x o x o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 x  x x x x",
+                          "x x x x  x x x x   1 i 1 i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega8
+#------------------------------------------------------------
+
+part
+    id               = "m8";
+    desc             = "ATMEGA8";
+    stk500_devcode   = 0x70;
+    avr910_devcode   = 0x76;
+    signature        = 0x1e 0x93 0x07;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 10000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        page_size       = 4;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 20;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0  0  1  1   1  0  0  0   0  0  x  x   x  x  x  x",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+#------------------------------------------------------------
+# ATmega8515
+#------------------------------------------------------------
+
+part
+    id               = "m8515";
+    desc             = "ATMEGA8515";
+    stk500_devcode   = 0x63;
+    avr910_devcode   = 0x3A;
+    signature        = 0x1e 0x93 0x06;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+ read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+ write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0     0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0   o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+
+
+#------------------------------------------------------------
+# ATmega8535
+#------------------------------------------------------------
+
+part
+    id               = "m8535";
+    desc             = "ATMEGA8535";
+    stk500_devcode   = 0x64;
+    avr910_devcode   = 0x69;
+    signature        = 0x1e 0x93 0x08;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 6;
+    togglevtg           = 0;
+    poweroffdelay       = 0;
+    resetdelayms        = 0;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 512;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   x   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 2000;
+        max_write_delay = 2000;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0 0 1 1  1 0 0 0   0 0 x x  x x x x",
+                          "0 0 0 0  0 0 a1 a0 o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATtiny26
+#------------------------------------------------------------
+
+part
+    id                  = "t26";
+    desc                = "ATTINY26";
+    stk500_devcode      = 0x21;
+    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x91 0x09;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 9000;
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        size            = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	mode		= 0x04;
+	delay		= 10;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 2048;
+        page_size       = 32;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x21;
+	delay		= 6;
+	blocksize	= 16;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  x x x i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  x x x o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 4;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny261
+#------------------------------------------------------------
+# Close to ATtiny26
+
+part
+    id                  = "t261";
+    desc                = "ATTINY261";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x91 0x0c;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 128;
+        page_size       = 4;
+        num_pages       = 32;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = "1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = "1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "x a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 2048;
+        page_size       = 32;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        read_hi         = "  0  0  1  0   1  0  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4  a3 a2 a1 a0",
+                          "  o  o  o  o   o  o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x  x  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1  1  0  0",
+                          "  x  x  x  x   x  x a9 a8",
+                          " a7 a6 a5 a4   x  x  x  x",
+                          "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny461
+#------------------------------------------------------------
+# Close to ATtiny261
+
+part
+    id                  = "t461";
+    desc                = "ATTINY461";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x92 0x08;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 256;
+        page_size       = 4;
+        num_pages       = 64;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = " 1  0  1  0   0  0  0  0    x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o o";
+
+        write           = " 1  1  0  0   0  0  0  0    x x x x  x x x x",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 4096;
+        page_size       = 64;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0   0  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        read_hi         = "  0  0  1  0   1   0  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1   1  0  0",
+                          "  x  x  x  x   x a10 a9 a8",
+                          " a7 a6 a5  x   x   x  x  x",
+                          "  x  x  x  x   x   x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATtiny861
+#------------------------------------------------------------
+# Close to ATtiny461
+
+part
+    id                  = "t861";
+    desc                = "ATTINY861";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x00, 0x10;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x00, 0xB4, 0x00, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+#    stk500_devcode      = 0x21;
+#    avr910_devcode      = 0x5e;
+    signature           = 0x1e 0x93 0x0d;
+    pagel               = 0xb3;
+    bs2                 = 0xb2;
+    chip_erase_delay    = 4000;
+
+    pgm_enable          = "1 0 1 0  1 1 0 0   0 1 0 1  0 0 1 1",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    chip_erase          = "1 0 1 0  1 1 0 0   1 0 0 x  x x x x",
+                          "x x x x  x x x x   x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 0;
+
+    pp_controlstack     =
+        0xC4, 0xE4, 0xC4, 0xE4, 0xCC, 0xEC, 0xCC, 0xEC,
+        0xD4, 0xF4, 0xD4, 0xF4, 0xDC, 0xFC, 0xDC, 0xFC,
+        0xC8, 0xE8, 0xD8, 0xF8, 0x4C, 0x6C, 0x5C, 0x7C,
+        0xEC, 0xBC, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 2;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        size            = 512;
+        num_pages       = 128;
+        page_size       = 4;
+        min_write_delay = 4000;
+        max_write_delay = 4000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read            = " 1  0  1  0   0  0  0  0    x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    o o o o  o o o  o";
+
+        write           = " 1  1  0  0   0  0  0  0    x x x x  x x x a8",
+                          "a7 a6 a5 a4  a3 a2 a1 a0    i i i i  i i i  i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+
+        read_lo         = "  0  0  1  0   0   0  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        read_hi         = "  0  0  1  0   1   0  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5 a4  a3  a2 a1 a0",
+                          "  o  o  o  o   o   o  o  o";
+
+        loadpage_lo     = "  0  1  0  0   0  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        loadpage_hi     = "  0  1  0  0   1  0  0  0",
+                          "  x  x  x  x   x  x  x  x",
+                          "  x  x  x a4  a3 a2 a1 a0",
+                          "  i  i  i  i   i  i  i  i";
+
+        writepage       = "  0  1  0  0   1   1  0  0",
+                          "  x  x  x  x a11 a10 a9 a8",
+                          " a7 a6 a5  x   x   x  x  x",
+                          "  x  x  x  x   x   x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+    ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0 a1 a0    o o o o  o o o o";
+    ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0  1  0  1   1  0  0  0    x x x x  x x x x",
+                          "x  x  x  x   x  x  x  x    x x x x  x x o o";
+
+        write           = "1  0  1  0   1  1  0  0    1 1 1 1  1 1 i i",
+                          "x  x  x  x   x  x  x  x    x x x x  x x x x";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+    ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0    x x x x  x x x x",
+                          "0  0  0  0   0  0  0  0    o o o o  o o o o";
+    ;
+
+;
+
+
+#------------------------------------------------------------
+# ATmega48
+#------------------------------------------------------------
+
+part
+    id               = "m48";
+    desc             = "ATMEGA48";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x59;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x92 0x05;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 45000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 256;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 4096;
+        page_size       = 64;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0    0 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0    0 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x x x o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# ATmega88
+#------------------------------------------------------------
+
+part
+    id               = "m88";
+    desc             = "ATMEGA88";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x73;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x93 0x0a;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 512;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x i i i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega168
+#------------------------------------------------------------
+
+part
+    id              = "m168";
+    desc            = "ATMEGA168";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode  = 0x86;
+    # avr910_devcode = 0x;
+    signature       = 0x1e 0x94 0x06;
+    pagel           = 0xd7;
+    bs2             = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+                       "x x x x x x x x x x x x x x x x";
+
+    chip_erase       = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
+                       "x x x x x x x x x x x x x x x x";
+
+    timeout         = 200;
+    stabdelay       = 100;
+    cmdexedelay     = 25;
+    synchloops      = 32;
+    bytedelay       = 0;
+    pollindex       = 3;
+    pollvalue       = 0x53;
+    predelay        = 1;
+    postdelay       = 1;
+    pollmethod      = 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 512;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = " 1 0 1 0 0 0 0 0",
+                          " 0 0 0 x x x x a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " o o o o o o o o";
+
+        write           = " 1 1 0 0 0 0 0 0",
+                          " 0 0 0 x x x x a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+        ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = " 0 0 1 0 0 0 0 0",
+                          " 0 0 0 a12 a11 a10 a9 a8",
+                          " a7 a6 a5 a4 a3 a2 a1 a0",
+                          " o o o o o o o o";
+
+        read_hi          = " 0 0 1 0 1 0 0 0",
+                           " 0 0 0 a12 a11 a10 a9 a8",
+                           " a7 a6 a5 a4 a3 a2 a1 a0",
+                           " o o o o o o o o";
+
+        loadpage_lo     = " 0 1 0 0 0 0 0 0",
+                          " 0 0 0 x x x x x",
+                          " x x a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+        loadpage_hi     = " 0 1 0 0 1 0 0 0",
+                          " 0 0 0 x x x x x",
+                          " x x a5 a4 a3 a2 a1 a0",
+                          " i i i i i i i i";
+
+        writepage       = " 0 1 0 0 1 1 0 0",
+                          " 0 0 0 a12 a11 a10 a9 a8",
+                          " a7 a6 x x x x x x",
+                          " x x x x x x x x";
+
+        mode        = 0x41;
+        delay       = 6;
+        blocksize   = 128;
+        readsize    = 256;
+
+        ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
+                          "x x x x x x x x o o o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
+                          "x x x x x x x x i i i i i i i i";
+        ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
+                          "x x x x x x x x o o o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
+                          "x x x x x x x x i i i i i i i i";
+        ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
+                          "x x x x x x x x x x x x x o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
+                          "x x x x x x x x x x x x x i i i";
+        ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
+                          "x x x x x x x x x x o o o o o o";
+
+        write           = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
+                          "x x x x x x x x 1 1 i i i i i i";
+        ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
+                          "0 0 0 0 0 0 0 0 o o o o o o o o";
+        ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
+                          "x x x x x x a1 a0 o o o o o o o o";
+        ;
+;
+
+#------------------------------------------------------------
+# ATtiny88
+#------------------------------------------------------------
+
+part
+    id               = "t88";
+    desc             = "attiny88";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode   = 0x73;
+#    avr910_devcode   = 0x;
+    signature        = 0x1e 0x93 0x11;
+    pagel            = 0xd7;
+    bs2              = 0xc2;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    resetdelay          = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no;
+        page_size       = 4;
+        size            = 64;
+        min_write_delay = 3600;
+        max_write_delay = 3600;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+	read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+	write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 64;
+      ;
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 64;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0    0   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        read_hi         = "  0   0   1   0    1   0   0   0",
+                          "  0   0   0   0  a11 a10  a9  a8",
+                          " a7  a6  a5  a4   a3  a2  a1  a0",
+                          "  o   o   o   o    o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   x      x   x   x   x",
+                          "  x   x   x  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x   i i i i  i i i i";
+      ;
+
+    memory "efuse"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x   x x x x  x o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x   x x x x  x x x i";
+      ;
+
+    memory "lock"
+        size            = 1;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0  0  1  1   1  0  0  0   0  0  0  x   x  x  x  x",
+                          "0  0  0  0   0  0  0  0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega328P
+#------------------------------------------------------------
+
+part
+    id			= "m328p";
+    desc		= "ATMEGA328P";
+    has_debugwire	= yes;
+    flash_instr		= 0xB6, 0x01, 0x11;
+    eeprom_instr	= 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+			  0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+			  0x99, 0xF9, 0xBB, 0xAF;
+    stk500_devcode	= 0x86;
+    # avr910_devcode	= 0x;
+    signature		= 0x1e 0x95 0x0F;
+    pagel		= 0xd7;
+    bs2			= 0xc2;
+    chip_erase_delay	= 9000;
+    pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1",
+		 "x x x x x x x x x x x x x x x x";
+
+    chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x",
+		 "x x x x x x x x x x x x x x x x";
+
+    timeout	= 200;
+    stabdelay	= 100;
+    cmdexedelay	= 25;
+    synchloops	= 32;
+    bytedelay	= 0;
+    pollindex	= 3;
+    pollvalue	= 0x53;
+    predelay	= 1;
+    postdelay	= 1;
+    pollmethod	= 1;
+
+    pp_controlstack =
+	0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+	0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+	0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+	0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay	= 100;
+    progmodedelay	= 0;
+    latchcycles		= 5;
+    togglevtg		= 1;
+    poweroffdelay	= 15;
+    resetdelayms	= 1;
+    resetdelayus	= 0;
+    hvleavestabdelay	= 15;
+    resetdelay		= 15;
+    chiperasepulsewidth	= 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+	paged		= no;
+	page_size	= 4;
+	size		= 1024;
+	min_write_delay = 3600;
+	max_write_delay = 3600;
+	readback_p1	= 0xff;
+	readback_p2	= 0xff;
+	read = " 1 0 1 0 0 0 0 0",
+	       " 0 0 0 x x x a9 a8",
+	       " a7 a6 a5 a4 a3 a2 a1 a0",
+	       " o o o o o o o o";
+
+	write = " 1 1 0 0 0 0 0 0",
+	      	" 0 0 0 x x x a9 a8",
+		" a7 a6 a5 a4 a3 a2 a1 a0",
+		" i i i i i i i i";
+
+	loadpage_lo = " 1 1 0 0 0 0 0 1",
+		      " 0 0 0 0 0 0 0 0",
+		      " 0 0 0 0 0 0 a1 a0",
+		      " i i i i i i i i";
+
+	writepage = " 1 1 0 0 0 0 1 0",
+		    " 0 0 x x x x a9 a8",
+		    " a7 a6 a5 a4 a3 a2 0 0",
+		    " x x x x x x x x";
+
+	mode		= 0x41;
+	delay		= 5;
+	blocksize	= 4;
+	readsize	= 256;
+    ;
+
+    memory "flash"
+	paged		= yes;
+	size		= 32768;
+	page_size	= 128;
+	num_pages	= 256;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	readback_p1	= 0xff;
+	readback_p2	= 0xff;
+	read_lo = " 0 0 1 0 0 0 0 0",
+		  " 0 0 a13 a12 a11 a10 a9 a8",
+		  " a7 a6 a5 a4 a3 a2 a1 a0",
+		  " o o o o o o o o";
+
+	read_hi = " 0 0 1 0 1 0 0 0",
+		  " 0 0 a13 a12 a11 a10 a9 a8",
+		  " a7 a6 a5 a4 a3 a2 a1 a0",
+		  " o o o o o o o o";
+
+	loadpage_lo = " 0 1 0 0 0 0 0 0",
+		      " 0 0 0 x x x x x",
+		      " x x a5 a4 a3 a2 a1 a0",
+		      " i i i i i i i i";
+
+	loadpage_hi = " 0 1 0 0 1 0 0 0",
+		      " 0 0 0 x x x x x",
+		      " x x a5 a4 a3 a2 a1 a0",
+		      " i i i i i i i i";
+
+	writepage = " 0 1 0 0 1 1 0 0",
+		    " 0 0 a13 a12 a11 a10 a9 a8",
+		    " a7 a6 x x x x x x",
+		    " x x x x x x x x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+
+    ;
+
+    memory "lfuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0",
+	       "x x x x x x x x o o o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0",
+	      	"x x x x x x x x i i i i i i i i";
+    ;
+
+    memory "hfuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0",
+	       "x x x x x x x x o o o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0",
+	      	"x x x x x x x x i i i i i i i i";
+    ;
+
+    memory "efuse"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
+	       "x x x x x x x x x x x x x o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
+	      	"x x x x x x x x x x x x x i i i";
+    ;
+
+    memory "lock"
+	size = 1;
+	min_write_delay = 4500;
+	max_write_delay = 4500;
+	read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0",
+	       "x x x x x x x x x x o o o o o o";
+
+	write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x",
+	      	"x x x x x x x x 1 1 i i i i i i";
+    ;
+
+    memory "calibration"
+	size = 1;
+	read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x",
+	       "0 0 0 0 0 0 0 0 o o o o o o o o";
+    ;
+
+    memory "signature"
+	size = 3;
+	read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x",
+	       "x x x x x x a1 a0 o o o o o o o o";
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny2313
+#------------------------------------------------------------
+
+part
+     id            = "t2313";
+     desc          = "ATtiny2313";
+     has_debugwire = yes;
+     flash_instr   = 0xB2, 0x0F, 0x1F;
+     eeprom_instr  = 0xBB, 0xFE, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBA, 0x0F, 0xB2, 0x0F, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+     stk500_devcode   = 0x23;
+##   Use the ATtiny26 devcode:
+     avr910_devcode   = 0x5e;
+     signature        = 0x1e 0x91 0x0a;
+     pagel            = 0xD4;
+     bs2              = 0xD6;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0E, 0x1E, 0x2E, 0x3E, 0x2E, 0x3E,
+        0x4E, 0x5E, 0x4E, 0x5E, 0x6E, 0x7E, 0x6E, 0x7E,
+        0x26, 0x36, 0x66, 0x76, 0x2A, 0x3A, 0x6A, 0x7A,
+        0x2E, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+# The information in the data sheet of April/2004 is wrong, this works:
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny2313 has Signature Bytes: 0x1E 0x91 0x0A.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+         read           = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+# The Tiny2313 has calibration data for both 4 MHz and 8 MHz.
+# The information in the data sheet of April/2004 is wrong, this works:
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM2
+#------------------------------------------------------------
+
+part
+     id            = "pwm2";
+     desc          = "AT90PWM2";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x81;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+#   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM3
+#------------------------------------------------------------
+
+# Completely identical to AT90PWM2 (including the signature!)
+
+part
+     id            = "pwm3";
+     desc          = "AT90PWM3";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x81;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+#   AT90PWM2 has Signature Bytes: 0x1E 0x93 0x81.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM2B
+#------------------------------------------------------------
+# Same as AT90PWM2 but different signature.
+
+part
+     id            = "pwm2b";
+     desc          = "AT90PWM2B";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x83;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# AT90PWM3B
+#------------------------------------------------------------
+
+# Completely identical to AT90PWM2B (including the signature!)
+
+part
+     id            = "pwm3b";
+     desc          = "AT90PWM3B";
+     has_debugwire = yes;
+     flash_instr   = 0xB6, 0x01, 0x11;
+     eeprom_instr  = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00,
+	             0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF,
+	             0x99, 0xF9, 0xBB, 0xAF;
+     stk500_devcode   = 0x65;
+##  avr910_devcode   = ?;
+     signature        = 0x1e 0x93 0x83;
+     pagel            = 0xD8;
+     bs2              = 0xE2;
+     reset            = io;
+     chip_erase_delay = 9000;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0  i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0   a11 a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0   0",
+                           "  0  0  0  0   a11 a10 a9  a8",
+                           " a7 a6 a5  x   x   x   x   x",
+                           "  x  x  x  x   x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 64;
+	readsize	= 256;
+       ;
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  x  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  x x o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  0    o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny25
+#------------------------------------------------------------
+
+part
+     id            = "t25";
+     desc          = "ATtiny25";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x91 0x08;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny25 has Signature Bytes: 0x1E 0x91 0x08.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny45
+#------------------------------------------------------------
+
+part
+     id            = "t45";
+     desc          = "ATtiny45";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x92 0x06;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack     =
+	0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 256;
+         page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 4096;
+         page_size       = 64;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny45 has Signature Bytes: 0x1E 0x92 0x08. (Data sheet 2586C-AVR-06/05 (doc2586.pdf) indicates otherwise!)
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny85
+#------------------------------------------------------------
+
+part
+     id            = "t85";
+     desc          = "ATtiny85";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x02, 0x12;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x02, 0xB4, 0x02, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x93 0x0b;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x00;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a8 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x  a8",
+			  " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0  0",
+                           "  0  0  0  0  a11 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny85 has Signature Bytes: 0x1E 0x93 0x08.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 2;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATmega640
+#------------------------------------------------------------
+# Almost same as ATmega1280, except for different memory sizes
+
+part
+    id               = "m640";
+    desc             = "ATMEGA640";
+    signature        = 0x1e 0x96 0x08;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega1280
+#------------------------------------------------------------
+
+part
+    id               = "m1280";
+    desc             = "ATMEGA1280";
+    signature        = 0x1e 0x97 0x03;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega1281
+#------------------------------------------------------------
+# Identical to ATmega1280
+
+part
+    id               = "m1281";
+    desc             = "ATMEGA1281";
+    signature        = 0x1e 0x97 0x04;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega2560
+#------------------------------------------------------------
+
+part
+    id               = "m2560";
+    desc             = "ATMEGA2560";
+    signature        = 0x1e 0x98 0x01;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 262144;
+        page_size       = 256;
+        num_pages       = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega2561
+#------------------------------------------------------------
+
+part
+    id               = "m2561";
+    desc             = "ATMEGA2561";
+    signature        = 0x1e 0x98 0x02;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 262144;
+        page_size       = 256;
+        num_pages       = 1024;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+        load_ext_addr   = "  0   1   0   0      1   1   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0 a16",
+                          "  0   0   0   0      0   0   0   0";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega128RFA1
+#------------------------------------------------------------
+# Identical to ATmega2561 but half the ROM
+
+part
+    id               = "m128rfa1";
+    desc             = "ATMEGA128RFA1";
+    signature        = 0x1e 0xa7 0x01;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xE2;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x    a11 a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  x i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny24
+#------------------------------------------------------------
+
+part
+     id            = "t24";
+     desc          = "ATtiny24";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x91 0x0b;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 128;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0   0 0 0 x  x x x x",
+                           "x a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 2048;
+         page_size       = 32;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0   0  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x   x   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0  0 a9 a8",
+                           " a7 a6 a5 a4   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny24 has Signature Bytes: 0x1E 0x91 0x0B.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny44
+#------------------------------------------------------------
+
+part
+     id            = "t44";
+     desc          = "ATtiny44";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+                     0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+                     0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x92 0x07;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 256;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x x",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 4096;
+         page_size       = 64;
+         num_pages       = 64;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0    0  a10 a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1  1  0  0",
+                           "  0  0  0  0   0 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny44 has Signature Bytes: 0x1E 0x92 0x07.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATtiny84
+#------------------------------------------------------------
+
+part
+     id            = "t84";
+     desc          = "ATtiny84";
+     has_debugwire = yes;
+     flash_instr   = 0xB4, 0x07, 0x17;
+     eeprom_instr  = 0xBB, 0xFF, 0xBB, 0xEE, 0xBB, 0xCC, 0xB2, 0x0D,
+	             0xBC, 0x07, 0xB4, 0x07, 0xBA, 0x0D, 0xBB, 0xBC,
+	             0x99, 0xE1, 0xBB, 0xAC;
+## no STK500 devcode in XML file, use the ATtiny45 one
+     stk500_devcode   = 0x14;
+##  avr910_devcode   = ?;
+##  Try the AT90S2313 devcode:
+     avr910_devcode   = 0x20;
+     signature        = 0x1e 0x93 0x0c;
+     reset            = io;
+     chip_erase_delay = 4500;
+
+     pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+     chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                        "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    hvsp_controlstack   =
+        0x4C, 0x0C, 0x1C, 0x2C, 0x3C, 0x64, 0x74, 0x66,
+        0x68, 0x78, 0x68, 0x68, 0x7A, 0x6A, 0x68, 0x78,
+        0x78, 0x7D, 0x6D, 0x0C, 0x80, 0x40, 0x20, 0x10,
+        0x11, 0x08, 0x04, 0x02, 0x03, 0x08, 0x04, 0x0F;
+    hventerstabdelay    = 100;
+    hvspcmdexedelay     = 0;
+    synchcycles         = 6;
+    latchcycles         = 1;
+    togglevtg           = 1;
+    poweroffdelay       = 25;
+    resetdelayms        = 0;
+    resetdelayus        = 70;
+    hvleavestabdelay    = 100;
+    resetdelay          = 25;
+    chiperasepolltimeout = 40;
+    chiperasetime       = 0;
+    programfusepolltimeout = 25;
+    programlockpolltimeout = 25;
+
+     memory "eeprom"
+         size            = 512;
+        paged           = no;
+        page_size       = 4;
+         min_write_delay = 4000;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read            = "1  0  1  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a7 a6 a5 a4  a3 a2 a1 a0   o o o o  o o o o";
+
+         write           = "1  1  0  0   0  0  0  0    0 0 0 x  x x x a8",
+                           "a8 a6 a5 a4  a3 a2 a1 a0   i i i i  i i i i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x   x   x   x",
+			  "  x  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 4;
+	readsize	= 256;
+       ;
+     memory "flash"
+         paged           = yes;
+         size            = 8192;
+         page_size       = 64;
+         num_pages       = 128;
+         min_write_delay = 4500;
+         max_write_delay = 4500;
+         readback_p1     = 0xff;
+         readback_p2     = 0xff;
+         read_lo         = "  0   0   1   0    0   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         read_hi         = "  0   0   1   0    1   0   0   0",
+                           "  0   0   0   0  a11 a10  a9  a8",
+                           " a7  a6  a5  a4   a3  a2  a1  a0",
+                           "  o   o   o   o    o   o   o   o";
+
+         loadpage_lo     = "  0   1   0   0    0   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         loadpage_hi     = "  0   1   0   0    1   0   0   0",
+                           "  0   0   0   x    x   x   x   x",
+                           "  x   x   x  a4   a3  a2  a1  a0",
+                           "  i   i   i   i    i   i   i   i";
+
+         writepage       = "  0  1  0  0   1   1   0  0",
+                           "  0  0  0  0  a11 a10 a9 a8",
+                           " a7 a6 a5  x   x  x  x  x",
+                           "  x  x  x  x   x  x  x  x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 32;
+	readsize	= 256;
+       ;
+#   ATtiny84 has Signature Bytes: 0x1E 0x93 0x0C.
+     memory "signature"
+         size            = 3;
+         read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                           "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+       ;
+
+     memory "lock"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 1 1 x  x x x x",
+                           "x x x x  x x x x  x x x x  x x i i";
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  0 0 0 0",
+                           "0 0 0 0  0 0 0 0  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "lfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "hfuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                           "x x x x  x x x x  i i i i  i i i i";
+
+         read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+       ;
+
+     memory "efuse"
+         size            = 1;
+         write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                           "x x x x  x x x x  x x x x  x x x i";
+
+         read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                           "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+     ;
+
+     memory "calibration"
+         size            = 1;
+         read            = "0  0  1  1   1  0  0  0    0 0 0 x  x x x x",
+                           "0  0  0  0   0  0  0  a0   o o o o  o o o o";
+     ;
+  ;
+
+#------------------------------------------------------------
+# ATmega32u4
+#------------------------------------------------------------
+
+part
+    id               = "m32u4";
+    desc             = "ATmega32U4";
+    signature        = 0x1e 0x95 0x87;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB646
+#------------------------------------------------------------
+
+part
+    id               = "usb646";
+    desc             = "AT90USB646";
+    signature        = 0x1e 0x96 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB647
+#------------------------------------------------------------
+# identical to AT90USB646
+
+part
+    id               = "usb647";
+    desc             = "AT90USB647";
+    signature        = 0x1e 0x96 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB1286
+#------------------------------------------------------------
+
+part
+    id               = "usb1286";
+    desc             = "AT90USB1286";
+    signature        = 0x1e 0x97 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB1287
+#------------------------------------------------------------
+# identical to AT90USB1286
+
+part
+    id               = "usb1287";
+    desc             = "AT90USB1287";
+    signature        = 0x1e 0x97 0x82;
+    has_jtag         = yes;
+#    stk500_devcode   = 0xB2;
+#    avr910_devcode   = 0x43;
+    chip_erase_delay = 9000;
+    pagel            = 0xD7;
+    bs2              = 0xA0;
+    reset            = dedicated;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "x x x x  x x x x    x x x x  x x x x";
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    rampz               = 0x3b;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 4096;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  x   x   x   x    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0  a2  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+			  "  0   0   x   x      x a10  a9  a8",
+			  " a7  a6  a5  a4     a3   0   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 10;
+	blocksize	= 8;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 131072;
+        page_size       = 256;
+        num_pages       = 512;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7   x   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 256;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  x x x x  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    x x x x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   x  x  x  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+
+#------------------------------------------------------------
+# AT90USB162
+#------------------------------------------------------------
+
+part
+    id               = "usb162";
+    desc             = "AT90USB162";
+    has_jtag         = no;
+    has_debugwire    = yes;
+    signature        = 0x1e 0x94 0x82;
+    chip_erase_delay = 9000;
+    reset            = io;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+    pagel            = 0xD7;
+    bs2              = 0xC6;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        num_pages       = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 16384;
+        page_size       = 128;
+        num_pages       = 128;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# AT90USB82
+#------------------------------------------------------------
+# Changes against AT90USB162 (beside IDs)
+#    memory "flash"
+#        size            = 8192;
+#        num_pages       = 64;
+
+part
+    id               = "usb82";
+    desc             = "AT90USB82";
+    has_jtag         = no;
+    has_debugwire    = yes;
+    signature        = 0x1e 0x93 0x82;
+    chip_erase_delay = 9000;
+    reset            = io;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "x x x x  x x x x    x x x x  x x x x";
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 x  x x x x",
+                       "x x x x  x x x x    x x x x  x x x x";
+    pagel            = 0xD7;
+    bs2              = 0xC6;
+
+    timeout		= 200;
+    stabdelay		= 100;
+    cmdexedelay		= 25;
+    synchloops		= 32;
+    bytedelay		= 0;
+    pollindex		= 3;
+    pollvalue		= 0x53;
+    predelay		= 1;
+    postdelay		= 1;
+    pollmethod		= 1;
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 512;
+        num_pages       = 128;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+	loadpage_lo	= "  1   1   0   0      0   0   0   1",
+			  "  0   0   0   0      0   0   0   0",
+			  "  0   0   0   0      0   0  a1  a0",
+			  "  i   i   i   i      i   i   i   i";
+
+	writepage	= "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+			  "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 20;
+	blocksize	= 4;
+	readsize	= 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 8192;
+        page_size       = 128;
+        num_pages       = 64;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0x00;
+        readback_p2     = 0x00;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  x   x   x   x      x   x   x   x",
+                          "  x   x  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "a15 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6   x   x      x   x   x   x",
+                          "  x   x   x   x      x   x   x   x";
+
+	mode		= 0x41;
+	delay		= 6;
+	blocksize	= 128;
+	readsize	= 256;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  1 0 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  1 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "x x x x  x x x x  i i i i  i i i i";
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "x x x x  x x x x  o o o o  o o o o";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 x  x x x x",
+                          "x x x x  x x x x   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "calibration"
+        size            = 1;
+        read            = "0 0 1 1  1 0 0 0    0 0 0 x  x x x x",
+                          "0 0 0 0  0 0 0 0    o o o o  o o o o";
+      ;
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  x   x  x  x  x",
+                          "x  x  x  x   x  x a1 a0   o  o  o  o   o  o  o  o";
+      ;
+  ;
+
+#------------------------------------------------------------
+# ATmega325
+#------------------------------------------------------------
+
+part
+    id               = "m325";
+    desc             = "ATMEGA325";
+    signature        = 0x1e 0x95 0x05;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega645
+#------------------------------------------------------------
+
+part
+    id               = "m645";
+    desc             = "ATMEGA645";
+    signature        = 0x1E 0x96 0x05;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3   0   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 8;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "   0   0   1   0      0   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        read_hi         = "   0   0   1   0      1   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "   0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   0   0   0   0      0   0   0   0";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega3250
+#------------------------------------------------------------
+
+part
+    id               = "m3250";
+    desc             = "ATMEGA3250";
+    signature        = 0x1E 0x95 0x06;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 4;  /* for parallel programming */
+        size            = 1024;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0   0  a9  a8",
+                          " a7  a6  a5  a4     a3  a2   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 32768;
+        page_size       = 128;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "  0   0   1   0      0   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        read_hi         = "  0   0   1   0      1   0   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  0   1   0   0      1   1   0   0",
+                          "  0 a14 a13 a12    a11 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATmega6450
+#------------------------------------------------------------
+
+part
+    id               = "m6450";
+    desc             = "ATMEGA6450";
+    signature        = 0x1E 0x96 0x06;
+    has_jtag         = yes;
+#   stk500_devcode   = 0x??; # No STK500v1 support?
+#   avr910_devcode   = 0x??; # Try the ATmega16 one
+    avr910_devcode   = 0x74;
+    pagel            = 0xd7;
+    bs2              = 0xa0;
+    chip_erase_delay = 9000;
+    pgm_enable       = "1 0 1 0  1 1 0 0    0 1 0 1  0 0 1 1",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    chip_erase       = "1 0 1 0  1 1 0 0    1 0 0 0  0 0 0 0",
+                       "0 0 0 0  0 0 0 0    0 0 0 0  0 0 0 0";
+
+    timeout             = 200;
+    stabdelay           = 100;
+    cmdexedelay         = 25;
+    synchloops          = 32;
+    bytedelay           = 0;
+    pollindex           = 3;
+    pollvalue           = 0x53;
+    predelay            = 1;
+    postdelay           = 1;
+    pollmethod          = 1;
+
+    pp_controlstack     =
+        0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F,
+        0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F,
+        0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B,
+        0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00;
+    hventerstabdelay    = 100;
+    progmodedelay       = 0;
+    latchcycles         = 5;
+    togglevtg           = 1;
+    poweroffdelay       = 15;
+    resetdelayms        = 1;
+    resetdelayus        = 0;
+    hvleavestabdelay    = 15;
+    chiperasepulsewidth = 0;
+    chiperasepolltimeout = 10;
+    programfusepulsewidth = 0;
+    programfusepolltimeout = 5;
+    programlockpulsewidth = 0;
+    programlockpolltimeout = 5;
+
+    idr                 = 0x31;
+    spmcr               = 0x57;
+    allowfullpagebitstream = no;
+
+    memory "eeprom"
+        paged           = no; /* leave this "no" */
+        page_size       = 8;  /* for parallel programming */
+        size            = 2048;
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read            = "  1   0   1   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  o   o   o   o      o   o   o   o";
+
+        write           = "  1   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_lo     = "  1   1   0   0      0   0   0   1",
+                          "  0   0   0   0      0   0   0   0",
+                          "  0   0   0   0      0  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "  1   1   0   0      0   0   1   0",
+                          "  0   0   0   0      0 a10  a9  a8",
+                          " a7  a6  a5  a4     a3   0   0   0",
+                          "  x   x   x   x      x   x   x   x";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 4;
+        readsize        = 256;
+      ;
+
+    memory "flash"
+        paged           = yes;
+        size            = 65536;
+        page_size       = 256;
+        num_pages       = 256;
+        min_write_delay = 4500;
+        max_write_delay = 4500;
+        readback_p1     = 0xff;
+        readback_p2     = 0xff;
+        read_lo         = "   0   0   1   0      0   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        read_hi         = "   0   0   1   0      1   0   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   o   o   o   o      o   o   o   o";
+
+        loadpage_lo     = "  0   1   0   0      0   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        loadpage_hi     = "  0   1   0   0      1   0   0   0",
+                          "  0   0   0   0      0   0   0   0",
+                          "  a7 a6  a5  a4     a3  a2  a1  a0",
+                          "  i   i   i   i      i   i   i   i";
+
+        writepage       = "   0   1   0   0      1   1   0   0",
+                          " a15 a14 a13 a12    a11 a10  a9  a8",
+                          "  a7  a6  a5  a4     a3  a2  a1  a0",
+                          "   0   0   0   0      0   0   0   0";
+
+        mode            = 0x41;
+        delay           = 10;
+        blocksize       = 128;
+        readsize        = 256;
+      ;
+
+    memory "lock"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "x x x x  x x x x   x x o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 1 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   1 1 i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "lfuse"
+        size            = 1;
+        read            = "0 1 0 1  0 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "hfuse"
+        size            = 1;
+        read            = "0 1 0 1  1 0 0 0   0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0   1 0 1 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0   i i i i  i i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "efuse"
+        size            = 1;
+
+        read            = "0 1 0 1  0 0 0 0  0 0 0 0  1 0 0 0",
+                          "0 0 0 0  0 0 0 0  o o o o  o o o o";
+
+        write           = "1 0 1 0  1 1 0 0  1 0 1 0  0 1 0 0",
+                          "0 0 0 0  0 0 0 0  1 1 1 1  1 i i i";
+        min_write_delay = 9000;
+        max_write_delay = 9000;
+      ;
+
+    memory "signature"
+        size            = 3;
+        read            = "0  0  1  1   0  0  0  0   0  0  0  0   0  0  0  0",
+                          "0  0  0  0   0  0 a1 a0   o  o  o  o   o  o  o  o";
+      ;
+
+    memory "calibration"
+        size            = 1;
+
+        read            = "0 0 1 1  1 0 0 0   0 0 0 0  0 0 0 0",
+                          "0 0 0 0  0 0 0 0   o o o o  o o o o";
+        ;
+  ;
+
+#------------------------------------------------------------
+# ATXMEGA64A1
+#------------------------------------------------------------
+
+part
+    id		= "x64a1";
+    desc	= "ATXMEGA64A1";
+    signature	= 0x1e 0x96 0x4e;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A1
+#------------------------------------------------------------
+
+part
+    id		= "x128a1";
+    desc	= "ATXMEGA128A1";
+    signature	= 0x1e 0x97 0x4c;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A1REVD
+#------------------------------------------------------------
+
+part
+    id		= "x128a1d";
+    desc	= "ATXMEGA128A1REVD";
+    signature	= 0x1e 0x97 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA192A1
+#------------------------------------------------------------
+
+part
+    id		= "x192a1";
+    desc	= "ATXMEGA192A1";
+    signature	= 0x1e 0x97 0x4e;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00030000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0082e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00830000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00032000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A1
+#------------------------------------------------------------
+
+part
+    id		= "x256a1";
+    desc	= "ATXMEGA256A1";
+    signature	= 0x1e 0x98 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA64A3
+#------------------------------------------------------------
+
+part
+    id		= "x64a3";
+    desc	= "ATXMEGA64A3";
+    signature	= 0x1e 0x96 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A3
+#------------------------------------------------------------
+
+part
+    id		= "x128a3";
+    desc	= "ATXMEGA128A3";
+    signature	= 0x1e 0x97 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA192A3
+#------------------------------------------------------------
+
+part
+    id		= "x192a3";
+    desc	= "ATXMEGA192A3";
+    signature	= 0x1e 0x97 0x44;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00030000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0082e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00830000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00032000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A3
+#------------------------------------------------------------
+
+part
+    id		= "x256a3";
+    desc	= "ATXMEGA256A3";
+    signature	= 0x1e 0x98 0x42;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA256A3B
+#------------------------------------------------------------
+
+part
+    id		= "x256a3b";
+    desc	= "ATXMEGA256A3B";
+    signature	= 0x1e 0x98 0x43;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x1000;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00040000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0083e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00840000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00042000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA16A4
+#------------------------------------------------------------
+
+part
+    id		= "x16a4";
+    desc	= "ATXMEGA16A4";
+    signature	= 0x1e 0x94 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0400;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00004000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x00803000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00804000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00005000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA32A4
+#------------------------------------------------------------
+
+part
+    id		= "x32a4";
+    desc	= "ATXMEGA32A4";
+    signature	= 0x1e 0x95 0x41;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0400;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00008000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x00807000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00808000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00009000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA64A4
+#------------------------------------------------------------
+
+part
+    id		= "x64a4";
+    desc	= "ATXMEGA64A4";
+    signature	= 0x1e 0x96 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00010000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00001000;
+        offset		= 0x0080f000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00001000;
+        offset		= 0x00810000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00011000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+#------------------------------------------------------------
+# ATXMEGA128A4
+#------------------------------------------------------------
+
+part
+    id		= "x128a4";
+    desc	= "ATXMEGA128A4";
+    signature	= 0x1e 0x97 0x46;
+    has_jtag	= yes;
+    has_pdi	= yes;
+    nvm_base	= 0x01c0;
+
+    memory "eeprom"
+        size		= 0x0800;
+        offset		= 0x08c0000;
+        page_size	= 0x20;
+        readsize	= 0x100;
+    ;
+
+    memory "application"
+        size		= 0x00020000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "apptable"
+        size		= 0x00002000;
+        offset		= 0x0081e000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "boot"
+        size		= 0x00002000;
+        offset		= 0x00820000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "flash"
+        size		= 0x00022000;
+        offset		= 0x0800000;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "prodsig"
+        size		= 0x200;
+        offset		= 0x8e0200;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "usersig"
+        size		= 0x200;
+        offset		= 0x8e0400;
+        page_size	= 0x100;
+        readsize	= 0x100;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x1000090;
+    ;
+
+    memory "fuse0"
+        size		= 1;
+        offset		= 0x8f0020;
+    ;
+
+    memory "fuse1"
+        size		= 1;
+        offset		= 0x8f0021;
+    ;
+
+    memory "fuse2"
+        size		= 1;
+        offset		= 0x8f0022;
+    ;
+
+    memory "fuse4"
+        size		= 1;
+        offset		= 0x8f0024;
+    ;
+
+    memory "fuse5"
+        size		= 1;
+        offset		= 0x8f0025;
+    ;
+
+    memory "lock"
+        size		= 1;
+        offset		= 0x8f0027;
+    ;
+;
+
+
+#------------------------------------------------------------
+# AVR32UC3A0512
+#------------------------------------------------------------
+
+part
+    id		= "ucr2";
+    desc	= "32UC3A0512";
+    signature	= 0xED 0xC0 0x3F;
+    has_jtag	= yes;
+    is_avr32    = yes;
+
+    memory "flash"
+        paged           = yes;
+        page_size		= 512;               # bytes
+        readsize		= 512;				 # bytes
+        num_pages       = 1024;              # could be set dynamicly
+        size			= 0x00080000;		 # could be set dynamicly
+        offset			= 0x80000000;
+    ;
+;
+
+#------------------------------------------------------------
+# ATtiny4
+#------------------------------------------------------------
+
+part
+    id		= "t4";
+    desc	= "ATtiny4";
+    signature	= 0x1e 0x8f 0x0a;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 512;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny5
+#------------------------------------------------------------
+
+part
+    id		= "t5";
+    desc	= "ATtiny5";
+    signature	= 0x1e 0x8f 0x09;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 512;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny9
+#------------------------------------------------------------
+
+part
+    id		= "t8";
+    desc	= "ATtiny9";
+    signature	= 0x1e 0x90 0x08;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 1024;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
+#------------------------------------------------------------
+# ATtiny10
+#------------------------------------------------------------
+
+part
+    id		= "t10";
+    desc	= "ATtiny10";
+    signature	= 0x1e 0x90 0x03;
+    has_tpi	= yes;
+
+    memory "flash"
+        size		= 1024;
+        offset		= 0x4000;
+        page_size	= 16;
+        blocksize	= 128;
+    ;
+
+    memory "signature"
+        size		= 3;
+        offset		= 0x3fc0;
+    ;
+
+    memory "fuse"
+        size		= 1;
+        offset		= 0x3f40;
+	blocksize	= 4;
+    ;
+
+    memory "calibration"
+        size		= 1;
+        offset		= 0x3f80;
+    ;
+
+    memory "lockbits"
+        size		= 1;
+        offset		= 0x3f00;
+    ;
+;
+
+
diff --git a/buildroot/share/atom/create_custom_upload_command_CDC.py b/buildroot/share/atom/create_custom_upload_command_CDC.py
index 7c32b24b48c..2fea2d5b536 100644
--- a/buildroot/share/atom/create_custom_upload_command_CDC.py
+++ b/buildroot/share/atom/create_custom_upload_command_CDC.py
@@ -9,107 +9,133 @@
 #  Will continue on if a COM port isn't found so that the compilation can be done.
 #
 
-import sys
-
 import subprocess
-
-
+import os
+import sys
+from SCons.Script import DefaultEnvironment
 import platform
 current_OS = platform.system()
 
-from SCons.Script import DefaultEnvironment
-
 env = DefaultEnvironment()
 
-com_first = ''
-com_last = ''
-com_CDC = ''
-description_first = ''
-description_last = ''
-description_CDC = ''
-
-#
-# grab the first com port that pops up unless we find one we know for sure
-# is a CDC device
-#
-def get_com_port(com_search_text, descr_search_text, start):
-
-    global com_first
-    global com_last
-    global com_CDC
-    global description_first
-    global description_last
-    global description_CDC
+build_type = os.environ.get("BUILD_TYPE", 'Not Set')
 
 
-    print '\nLooking for Serial Port\n'
+if not(build_type == 'upload' or build_type == 'traceback' or build_type == 'Not Set') :
+  env.Replace(UPLOAD_PROTOCOL = 'teensy-gui')  # run normal Teensy2 scripts
+else:
+  com_first = ''
+  com_last = ''
+  com_CDC = ''
+  description_first = ''
+  description_last = ''
+  description_CDC = ''
 
-  # stream output from subprocess and split it into lines
-    pio_subprocess = subprocess.Popen(['platformio', 'device', 'list'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+  #
+  # grab the first com port that pops up unless we find one we know for sure
+  # is a CDC device
+  #
+  def get_com_port(com_search_text, descr_search_text, start):
 
-    looking_for_description = False
-    for line in iter(pio_subprocess.stdout.readline, ''):
-        if 0 <= line.find(com_search_text):
-          looking_for_description = True
-          com_last = line.replace('\n', '')
-          if com_first == '':
-            com_first = com_last
-        if 0 <= line.find(descr_search_text) and looking_for_description:
-          looking_for_description = False
-          description_last = line[ start : ]
-          if description_first == '':
-            description_first = description_last
-          if 0 <= description_last.find('CDC'):
-            com_CDC = com_last
-            description_CDC = description_last
-
-    if  com_CDC == '' and not(com_first == ''):
-        com_CDC = com_first
-        description_CDC = description_first
-    elif com_CDC == '':
-          com_CDC = 'COM_PORT_NOT_FOUND'
-
-    if com_CDC == 'COM_PORT_NOT_FOUND':
-        print com_CDC, '\n'
-    else:
-        print 'FOUND: ' ,com_CDC
-        print 'DESCRIPTION: ',  description_CDC , '\n'
-
-if current_OS == 'Windows':
-
-    get_com_port('COM', 'Hardware ID:', 13)
-
-    avrdude_conf_path =  env.get("PIOHOME_DIR") + '\\packages\\toolchain-atmelavr\\etc\\avrdude.conf'
-
-    source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
-
-    upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -C ' + avrdude_conf_path + ' -U flash:w:' + source_path + ':i'
+      global com_first
+      global com_last
+      global com_CDC
+      global description_first
+      global description_last
+      global description_CDC
 
 
-if current_OS == 'Darwin':  # MAC
+      print '\nLooking for Serial Port\n'
 
-    get_com_port('usbmodem', 'Description:', 13)
+    # stream output from subprocess and split it into lines
+      pio_subprocess = subprocess.Popen(['platformio', 'device', 'list'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
 
-    avrdude_conf_path =  env.get("PIOHOME_DIR") + '/packages/toolchain-atmelavr/etc/avrdude.conf'
+      looking_for_description = False
+      for line in iter(pio_subprocess.stdout.readline, ''):
+          if 0 <= line.find(com_search_text):
+            looking_for_description = True
+            com_last = line.replace('\n', '')
+            if com_first == '':
+              com_first = com_last
+          if 0 <= line.find(descr_search_text) and looking_for_description:
+            looking_for_description = False
+            description_last = line[ start : ]
+            if description_first == '':
+              description_first = description_last
+            if 0 <= description_last.find('CDC'):
+              com_CDC = com_last
+              description_CDC = description_last
 
-    source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
+      if  com_CDC == '' and not(com_first == ''):
+          com_CDC = com_first
+          description_CDC = description_first
+      elif com_CDC == '':
+            com_CDC = 'COM_PORT_NOT_FOUND'
 
-    upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
+      while 0 <= com_CDC.find('\n'):
+        com_CDC = com_CDC.replace('\n', '')
+      while 0 <= com_CDC.find('\r'):
+        com_CDC = com_CDC.replace('\r', '')
+
+      if com_CDC == 'COM_PORT_NOT_FOUND':
+          print com_CDC, '\n'
+      else:
+          print 'FOUND: ' ,com_CDC
+          print 'DESCRIPTION: ',  description_CDC , '\n'
+
+  if current_OS == 'Windows':
+
+      get_com_port('COM', 'Hardware ID:', 13)
+
+  #    avrdude_conf_path =  env.get("PIOHOME_DIR") + '\\packages\\toolchain-atmelavr\\etc\\avrdude.conf'
+      avrdude_conf_path =  'buildroot\\share\\atom\\avrdude.conf'
+
+      avrdude_exe_path =  'buildroot\\share\\atom\\avrdude_5.10.exe'
+
+  #    source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
+      source_path =  '.pioenvs\\' + env.get("PIOENV") + '\\firmware.hex'
+
+      upload_string = avrdude_exe_path + ' -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
 
 
-if current_OS == 'Linux':
+  if current_OS == 'Darwin':  # MAC
 
-    get_com_port('/dev/tty', 'Description:', 13)
+      get_com_port('usbmodem', 'Description:', 13)
 
-    avrdude_conf_path =  env.get("PIOHOME_DIR") + '/packages/toolchain-atmelavr/etc/avrdude.conf'
-
-    source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
-
-    upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
+#      avrdude_conf_path =  env.get("PIOHOME_DIR") + '/packages/toolchain-atmelavr/etc/avrdude.conf'
+      avrdude_conf_path =  'buildroot/share/atom/avrdude_macOS.conf'
 
 
-env.Replace(
-     UPLOADCMD = upload_string,
-     MAXIMUM_RAM_SIZE = 8192,
-     MAXIMUM_SIZE = 130048
-)
+      avrdude_exe_path =  'buildroot/share/atom/avrdude_5.10_macOS'
+
+#      source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
+      source_path = '.pioenvs/' + env.get("PIOENV") + '/firmware.hex'
+
+
+#      upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
+      upload_string = avrdude_exe_path + ' -p usb1286 -c avr109 -P ' + com_CDC + ' -C ' + avrdude_conf_path  + ' -U flash:w:' + source_path + ':i'
+      print 'upload_string: ', upload_string
+
+
+
+  if current_OS == 'Linux':
+
+      get_com_port('/dev/tty', 'Description:', 13)
+
+#      avrdude_conf_path =  env.get("PIOHOME_DIR") + '/packages/toolchain-atmelavr/etc/avrdude.conf'
+      avrdude_conf_path =  'buildroot/share/atom/avrdude_linux.conf'
+
+
+      avrdude_exe_path =  'buildroot/share/atom/avrdude_5.10_linux'
+#      source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
+      source_path = '.pioenvs/' + env.get("PIOENV") + '/firmware.hex'
+
+#      upload_string = 'avrdude -p usb1286 -c avr109 -P ' + com_CDC + ' -U flash:w:' + source_path + ':i'
+      upload_string = avrdude_exe_path + ' -p usb1286 -c avr109 -P ' + com_CDC + ' -C ' + avrdude_conf_path  + ' -U flash:w:' + source_path + ':i'
+
+
+  env.Replace(
+       UPLOADCMD = upload_string,
+       MAXIMUM_RAM_SIZE = 8192,
+       MAXIMUM_SIZE = 130048
+  )
diff --git a/buildroot/share/atom/create_custom_upload_command_DFU.py b/buildroot/share/atom/create_custom_upload_command_DFU.py
index 208ab2c4cc4..9082699bf45 100644
--- a/buildroot/share/atom/create_custom_upload_command_DFU.py
+++ b/buildroot/share/atom/create_custom_upload_command_DFU.py
@@ -9,29 +9,34 @@
 #  Will continue on if a COM port isn't found so that the compilation can be done.
 #
 
+import os
 import sys
 from SCons.Script import DefaultEnvironment
-
 import platform
 current_OS = platform.system()
 
 env = DefaultEnvironment()
 
-if current_OS == 'Windows':
-    avrdude_conf_path =  env.get("PIOHOME_DIR") + '\\packages\\toolchain-atmelavr\\etc\\avrdude.conf'
-
-    source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
-
-    upload_string = 'avrdude -p usb1286 -c flip1 -C ' + avrdude_conf_path + ' -U flash:w:' + source_path + ':i'
-
+build_type = os.environ.get("BUILD_TYPE", 'Not Set')
+if not(build_type == 'upload' or build_type == 'traceback' or build_type == 'Not Set') :
+  env.Replace(UPLOAD_PROTOCOL = 'teensy-gui')  # run normal Teensy2 scripts
 else:
-    source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
 
-    upload_string = 'avrdude -p usb1286 -c flip1 -U flash:w:' + source_path + ':i'
+  if current_OS == 'Windows':
+      avrdude_conf_path =  env.get("PIOHOME_DIR") + '\\packages\\toolchain-atmelavr\\etc\\avrdude.conf'
+
+      source_path = env.get("PROJECTBUILD_DIR") + '\\' + env.get("PIOENV") + '\\firmware.hex'
+
+      upload_string = 'avrdude -p usb1286 -c flip1 -C ' + avrdude_conf_path + ' -U flash:w:' + source_path + ':i'
+
+  else:
+      source_path = env.get("PROJECTBUILD_DIR") + '/' + env.get("PIOENV") + '/firmware.hex'
+
+      upload_string = 'avrdude -p usb1286 -c flip1 -U flash:w:' + source_path + ':i'
 
 
-env.Replace(
-     UPLOADCMD = upload_string,
-     MAXIMUM_RAM_SIZE = 8192,
-     MAXIMUM_SIZE = 130048
-)
+  env.Replace(
+       UPLOADCMD = upload_string,
+       MAXIMUM_RAM_SIZE = 8192,
+       MAXIMUM_SIZE = 130048
+  )