u-boot: fix fw_env logic, update beagle and touchbook
authorKoen Kooi <koen@openembedded.org>
Tue, 20 Oct 2009 18:15:40 +0000 (20:15 +0200)
committerKoen Kooi <koen@openembedded.org>
Wed, 21 Oct 2009 13:27:27 +0000 (15:27 +0200)
14 files changed:
recipes/u-boot/files/beagleboard/fw_env.config [new file with mode: 0644]
recipes/u-boot/files/fw_env.config [new file with mode: 0644]
recipes/u-boot/files/omap3-touchbook/fw_env.config [new file with mode: 0644]
recipes/u-boot/files/rootfs.patch [new file with mode: 0644]
recipes/u-boot/u-boot-git/600mhz.patch [new file with mode: 0644]
recipes/u-boot/u-boot-git/ai-logo.patch [new file with mode: 0644]
recipes/u-boot/u-boot-git/mmcinit.patch [new file with mode: 0644]
recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch [new file with mode: 0644]
recipes/u-boot/u-boot-git/power.patch [new file with mode: 0644]
recipes/u-boot/u-boot-git/spi3.patch
recipes/u-boot/u-boot-git/spi4.patch
recipes/u-boot/u-boot-git/touchbook-config.patch [new file with mode: 0644]
recipes/u-boot/u-boot.inc
recipes/u-boot/u-boot_git.bb

diff --git a/recipes/u-boot/files/beagleboard/fw_env.config b/recipes/u-boot/files/beagleboard/fw_env.config
new file mode 100644 (file)
index 0000000..8fc96f7
--- /dev/null
@@ -0,0 +1,8 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+# Notice, that the "Number of sectors" is ignored on NOR.
+
+# MTD device name      Device offset   Env. size       Flash sector size       Number of sectors
+/dev/mtd2              0x0000          0x20000         0x40000
+
diff --git a/recipes/u-boot/files/fw_env.config b/recipes/u-boot/files/fw_env.config
new file mode 100644 (file)
index 0000000..940308f
--- /dev/null
@@ -0,0 +1,7 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name      Device offset   Env. size       Flash sector size
+#/dev/mtd1             0x0000          0x4000          0x4000
+#/dev/mtd2             0x0000          0x4000          0x4000
diff --git a/recipes/u-boot/files/omap3-touchbook/fw_env.config b/recipes/u-boot/files/omap3-touchbook/fw_env.config
new file mode 100644 (file)
index 0000000..a7bfec1
--- /dev/null
@@ -0,0 +1,6 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name      Device offset   Env. size       Flash sector size
+/dev/mtd2              0x0000          0x20000         0x20000
diff --git a/recipes/u-boot/files/rootfs.patch b/recipes/u-boot/files/rootfs.patch
new file mode 100644 (file)
index 0000000..655c040
--- /dev/null
@@ -0,0 +1,62 @@
+--- git/include/configs/omap3_overo.h-orig     2009-09-17 13:06:08.000000000 -0700
++++ git/include/configs/omap3_overo.h  2009-09-17 13:06:49.000000000 -0700
+@@ -158,20 +158,24 @@
+       "vram=12M\0" \
+       "dvimode=1024x768MR-16@60\0" \
+       "defaultdisplay=dvi\0" \
++      "mmcroot=/dev/mmcblk0p2 rw\0" \
++      "mmcrootfstype=ext3 rootwait\0" \
++      "nandroot=/dev/mtdblock4 rw\0" \
++      "nandrootfstype=jffs2\0" \
+       "mmcargs=setenv bootargs console=${console} " \
+               "vram=${vram} " \
+               "omapfb.mode=dvi:${dvimode} " \
+               "omapfb.debug=y " \
+               "omapdss.def_disp=${defaultdisplay} " \
+-              "root=/dev/mmcblk0p2 rw " \
+-              "rootfstype=ext3 rootwait\0" \
++              "root=${mmcroot} " \
++              "rootfstype=${mmcrootfstype}\0" \
+       "nandargs=setenv bootargs console=${console} " \
+               "vram=${vram} " \
+               "omapfb.mode=dvi:${dvimode} " \
+               "omapfb.debug=y " \
+               "omapdss.def_disp=${defaultdisplay} " \
+-              "root=/dev/mtdblock4 rw " \
+-              "rootfstype=jffs2\0" \
++              "root=${nandroot} " \
++              "rootfstype=${nandrootfstype}\0" \
+       "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source ${loadaddr}\0" \
+--- git/include/configs/omap3_beagle.h-orig    2009-09-17 14:48:55.000000000 -0700
++++ git/include/configs/omap3_beagle.h 2009-09-19 22:15:01.000000000 -0700
+@@ -167,20 +167,24 @@
+       "vram=12M\0" \
+       "dvimode=1024x768MR-16@60\0" \
+       "defaultdisplay=dvi\0" \
++      "mmcroot=/dev/mmcblk0p2 rw\0" \
++      "mmcrootfstype=ext3 rootwait\0" \
++      "nandroot=/dev/mtdblock4 rw\0" \
++      "nandrootfstype=jffs2\0" \
+       "mmcargs=setenv bootargs console=${console} " \
+               "vram=${vram} " \
+               "omapfb.mode=dvi:${dvimode} " \
+               "omapfb.debug=y " \
+               "omapdss.def_disp=${defaultdisplay} " \
+-              "root=/dev/mmcblk0p2 rw " \
+-              "rootfstype=ext3 rootwait\0" \
++              "root=${mmcroot} " \
++              "rootfstype=${mmcrootfstype}\0" \
+       "nandargs=setenv bootargs console=${console} " \
+               "vram=${vram} " \
+               "omapfb.mode=dvi:${dvimode} " \
+               "omapfb.debug=y " \
+               "omapdss.def_disp=${defaultdisplay} " \
+-              "root=/dev/mtdblock4 rw " \
+-              "rootfstype=jffs2\0" \
++              "root=${nandroot} " \
++              "rootfstype=${nandrootfstype}\0" \
+       "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source ${loadaddr}\0" \
diff --git a/recipes/u-boot/u-boot-git/600mhz.patch b/recipes/u-boot/u-boot-git/600mhz.patch
new file mode 100644 (file)
index 0000000..65b1a43
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/include/asm-arm/arch-omap3/clocks_omap3.h
++++ b/include/asm-arm/arch-omap3/clocks_omap3.h
+@@ -71,7 +71,7 @@
+ #define MPU_FSEL_13_ES1               0x03
+ #define MPU_M2_13_ES1         0x01
+-#define MPU_M_13_ES2          0x1F4
++#define MPU_M_13_ES2          0x258
+ #define MPU_N_13_ES2          0x0C
+ #define MPU_FSEL_13_ES2               0x03
+ #define MPU_M2_13_ES2         0x01
diff --git a/recipes/u-boot/u-boot-git/ai-logo.patch b/recipes/u-boot/u-boot-git/ai-logo.patch
new file mode 100644 (file)
index 0000000..0a8087f
--- /dev/null
@@ -0,0 +1,1336 @@
+diff -Nur a/board/omap3/beagle/beagle.c b/board/omap3/beagle/beagle.c
+--- a/board/omap3/beagle/beagle.c      2009-04-09 02:05:04.000000000 -0700
++++ b/board/omap3/beagle/beagle.c      2009-04-14 14:40:45.000000000 -0700
+@@ -35,9 +35,147 @@
+ #include <asm/arch/sys_proto.h>
+ #include <asm/mach-types.h>
+ #include "beagle.h"
++#include "logo.h"
++
++#define LOGO_SCREEN_WIDTH  1024
++#define LOGO_SCREEN_HEIGHT 600
++#define LOGO_FILL_COLOUR   0x0
+ static int beagle_revision_c;
++void dss_init(void)
++{
++      unsigned int i, k=0;
++      unsigned char pixel[3];
++      int offset = 0;
++
++      /* Fill up to the logo */
++      for (i = 0; i < 2 * (LOGO_SCREEN_WIDTH * ((LOGO_SCREEN_HEIGHT/2) - (height/2))); i += 2) {
++              *((unsigned short *)(0x80500000 + i)) = LOGO_FILL_COLOUR;
++      }
++      offset += i;
++
++      /* Paint the image data */
++      for (i = 0; i < height; i++) {
++              for (k = 0; k < LOGO_SCREEN_WIDTH; k++) {
++                      if(k < (LOGO_SCREEN_WIDTH / 2 - width / 2) || k >= (LOGO_SCREEN_WIDTH / 2 + width / 2))
++                              *((unsigned short *)(0x80500000 + offset + 2*k)) = LOGO_FILL_COLOUR;
++                      else {
++                              HEADER_PIXEL(header_data, pixel);
++                              *((unsigned short *)(0x80500000 + offset + 2*k)) =
++                                      ((((pixel[0])&0xf8) << 8) |
++                                       (((pixel[1])&0xfc) << 3) |
++                                       (((pixel[2])&0xf8) >> 3));
++                      }
++              }
++
++              offset += 2 * LOGO_SCREEN_WIDTH;
++      }
++
++      /* Fill the rest */
++      for (i = 0; i < 2 * (LOGO_SCREEN_WIDTH * ((LOGO_SCREEN_HEIGHT/2) - (height/2))); i += 2) {
++              *((unsigned short *)(0x80500000 + offset + i)) = LOGO_FILL_COLOUR;
++      }       
++
++      *((uint *) 0x48310034) = 0xfefffedf;
++      *((uint *) 0x48310094) = 0x01000120;
++      *((uint *) 0x48004D44) = 0x0001b00c;
++      *((uint *) 0x48004E40) = 0x00001002;
++      *((uint *) 0x48004D00) = 0x00370037;
++
++      *((uint *) 0x48050C00) = 0x00000002;
++      *((uint *) 0x48050C04) = 0x0000001B;
++      *((uint *) 0x48050C08) = 0x00000040;
++      *((uint *) 0x48050C0C) = 0x00000000;
++      *((uint *) 0x48050C10) = 0x00000000;
++      *((uint *) 0x48050C14) = 0x00008000;
++      *((uint *) 0x48050C18) = 0x00000000;
++      *((uint *) 0x48050C1C) = 0x00008359;
++      *((uint *) 0x48050C20) = 0x0000020C;
++      *((uint *) 0x48050C24) = 0x00000000;
++      *((uint *) 0x48050C28) = 0x043F2631;
++      *((uint *) 0x48050C2C) = 0x00000024;
++      *((uint *) 0x48050C30) = 0x00000130;
++      *((uint *) 0x48050C34) = 0x00000198;
++      *((uint *) 0x48050C38) = 0x000001C0;
++      *((uint *) 0x48050C3C) = 0x0000006A;
++      *((uint *) 0x48050C40) = 0x0000005C;
++      *((uint *) 0x48050C44) = 0x00000000;
++      *((uint *) 0x48050C48) = 0x00000001;
++      *((uint *) 0x48050C4C) = 0x0000003F;
++      *((uint *) 0x48050C50) = 0x21F07C1F;
++      *((uint *) 0x48050C54) = 0x00000000;
++      *((uint *) 0x48050C58) = 0x00000015;
++      *((uint *) 0x48050C5C) = 0x00001400;
++      *((uint *) 0x48050C60) = 0x00000000;
++      *((uint *) 0x48050C64) = 0x069300F4;
++      *((uint *) 0x48050C68) = 0x0016020C;
++      *((uint *) 0x48050C6C) = 0x00060107;
++      *((uint *) 0x48050C70) = 0x008D034E;
++      *((uint *) 0x48050C74) = 0x000F0359;
++      *((uint *) 0x48050C78) = 0x01A00000;
++      *((uint *) 0x48050C7C) = 0x020501A0;
++      *((uint *) 0x48050C80) = 0x01AC0024;
++      *((uint *) 0x48050C84) = 0x020D01AC;
++      *((uint *) 0x48050C88) = 0x00000006;
++      *((uint *) 0x48050C8C) = 0x00000000;
++      *((uint *) 0x48050C90) = 0x03480079;
++      *((uint *) 0x48050C94) = 0x02040024;
++      *((uint *) 0x48050C98) = 0x00000000;
++      *((uint *) 0x48050C9C) = 0x00000000;
++      *((uint *) 0x48050CA0) = 0x0001008A;
++      *((uint *) 0x48050CA4) = 0x01AC0106;
++      *((uint *) 0x48050CA8) = 0x01060006;
++      *((uint *) 0x48050CAC) = 0x00000000;
++      *((uint *) 0x48050CB0) = 0x00140001;
++      *((uint *) 0x48050CB4) = 0x00010001;
++      *((uint *) 0x48050CB8) = 0x00FF0000;
++      *((uint *) 0x48050CBC) = 0x00000000;
++      *((uint *) 0x48050CC0) = 0x00000000;
++      *((uint *) 0x48050CC4) = 0x0000000D;
++      *((uint *) 0x48050CC8) = 0x00000000;
++      *((uint *) 0x48050010) = 0x00000001;
++      *((uint *) 0x48050040) = 0x00000078;
++      *((uint *) 0x48050044) = 0x00000000;
++      *((uint *) 0x48050048) = 0x00000000;
++      *((uint *) 0x48050050) = 0x00000000;
++      *((uint *) 0x48050058) = 0x00000000;
++      *((uint *) 0x48050410) = 0x00002015;
++      *((uint *) 0x48050414) = 0x00000001;
++      *((uint *) 0x48050444) = 0x00000004;
++      *((uint *) 0x4805044c) = 0xFFFFFFFF;
++      *((uint *) 0x48050450) = 0x00000000;
++      *((uint *) 0x48050454) = 0x00000000;
++      *((uint *) 0x48050458) = 0x00000000;
++      *((uint *) 0x48050464) = 0x02600202;
++      *((uint *) 0x48050468) = 0x00700200;
++      *((uint *) 0x4805046c) = 0x00000000;
++      *((uint *) 0x48050470) = 0x00010007;
++      *((uint *) 0x48050478) = 0x00ef027f;
++      *((uint *) 0x4805047c) = 0x02ff03ff;
++      *((uint *) 0x48050480) = 0x80500000;
++      *((uint *) 0x48050484) = 0x80500000;
++      *((uint *) 0x48050488) = 0x00000000;
++      *((uint *) 0x4805048c) = 0x02ff03ff;
++      *((uint *) 0x480504a0) = 0x0000008d;
++      *((uint *) 0x480504a4) = 0x03fc03bc;
++      *((uint *) 0x480504a8) = 0x00000400;
++      *((uint *) 0x480504ac) = 0x00000001;
++      *((uint *) 0x480504b0) = 0x00000001;
++      *((uint *) 0x480504b4) = 0x00000000;
++      *((uint *) 0x480504b8) = 0x807ff000;
++      udelay(1000);
++      *((uint *) 0x48050440) = 0x0001836b;
++      udelay(1000);
++      *((uint *) 0x48050440) = 0x0001836b;
++      udelay(1000);
++      *((uint *) 0x48050440) = 0x0001836b;
++      udelay(1000);
++      
++      /* Turn on GPT9 PWM */
++      *((uint *) 0x49040024) = 0x80;
++}
++
+ /*
+  * Routine: board_init
+  * Description: Early hardware init.
+@@ -118,6 +252,9 @@
+       dieid_num_r();
++      /* Touch Book logo */
++      dss_init();
++
+       return 0;
+ }
+diff -Nur a/board/omap3/beagle/logo.h b/board/omap3/beagle/logo.h
+--- a/board/omap3/beagle/logo.h        1969-12-31 16:00:00.000000000 -0800
++++ b/board/omap3/beagle/logo.h        2009-04-14 14:10:52.000000000 -0700
+@@ -0,0 +1,1171 @@
++/*  GIMP header image file format (RGB): /Documents/Desktop/u-boot-black.h  */
++
++static unsigned int width = 136;
++static unsigned int height = 136;
++
++/*  Call this macro repeatedly.  After each use, the pixel data can be extracted  */
++
++#define HEADER_PIXEL(data,pixel) {\
++  pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
++  pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
++  pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
++  data += 4; \
++}
++static char *header_data =
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?7VB9F:+3YO$A````````````"
++      "````````O,;WB)'#1E\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?"
++      "B)'\"````````````````````````````````````````````````Y?$@:W2E%2%2"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!%2%2>H.S````````````````````````````````````"
++      "````````````````````````````YO(A1E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIKO,;W````````"
++      "````````````````````````````````````````````````````````````````"
++      "````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!+SEJY?$@````````````````````````````````````````````"
++      "````````````````````````````````````````JK3D%B)3!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?YO$@````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````B9+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!O<;W````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````;'6E!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "(RY?YO$A````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````JK3E!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "YO$@````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````B9+#!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!1E!`````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````YO$A!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````+SIK"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````:W2E"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````:W2E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````:W2E"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D1U.T5U.T5V.T5U"
++      ".T5V.T5V.T5U.T5U%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````7F>8"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.T5U:W6E"
++      "F:+3JK3D````````````````````````````````````````````````T-L+JK/D"
++      ":W2E1E!`(R]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!(R]?7FB8JK3E````````````````````````````````````````````"
++      "````````````````````````````````````````````O<;W>H*S+SIK!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1D]`"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)24ER,O<;W````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````T-L,>H*S)\"]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)2````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````F:+3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@B)'\"YO(A"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````J[3E.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "B)'\"````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````1E\"!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!)\"]@B)'\"````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````J[3E.T5V!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJ````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````T-H+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2EYO$A````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````FJ/3(RY?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!B)'\"````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````1D]`!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      ".T5VT-L+````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````YO$A7VB9"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2YO$A````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````F:+3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````J[3E(RY?!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!+SIJ````````````````````````````````````````````````````"
++      "````````````````````````````````````````````O<;W%2%2!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2O<;W````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````YO$A.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````O<;W%B%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!+SEJYO$A````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````4ER,!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!1E!`YO$A````````````````````````````````````````"
++      "````````````````````````````````````O<;W%B)2!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJYO$A````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJO<;W````"
++      "````````````````````````````````````````````````````````````````"
++      ">H*S%B)3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!1D]`YO$A````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````B)'\"!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4UR,T=L,````````````````````````````"
++      "````````````````````````JK/D.T5V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIKYO$@````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!1D]`B)'\"YO$@````````````````````````````T-L,>8*S+SIK!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      ",#IKYO$A````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````4UR,"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@.T5V.D5U.T5V"
++      ".T5U.T5U%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2T-L+````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````1D]`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "Y?$@)\"]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!7F>8````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?YO$A````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````7F>8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````YO$A(R]?!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1D]`````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!T-L+````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````+SEJ!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!O<;W````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````(R]?!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!(R]@7F>8F:+3T=L,````````````O<;WB9+#4ER,%B)3!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````YO$AJ[3E:W2E:W2E"
++      ";'6F:W2EFJ+3T-L+````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````>8*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?B9+#````````````````````````"
++      "````````````````YO$@;'6E%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!B)'\"````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````F:+31E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,#IK>H*SYO$@````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````Y?$@!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E"
++      "````````````````````````````````````````````````````````YO$A.T5V"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO(A````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````O<;W.T5V!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!%2%2>8*S````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````1E\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````````````````````````````````"
++      "````````````````````````````````4ER,!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!.T5U````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````B)'\""
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "1E!`Y?$@````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````>8*S!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````"
++      "````````````````````````````````````````````````````````````````"
++      "````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````4ER,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJYO$A````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!:W2E````````````````````````````````````````````"
++      "````````````````````````````````````````+SIK!!!!!!!!!!!!!!!!!!!!"
++      "!!!!JK3D````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````B9+#!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!.T5V````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````%2%2"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````T-H+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!B)'\"````````````````````````````````````````````````"
++      "````````````````````````````````````````````4EN,!!!!!!!!!!!!!!!!"
++      "+SIK````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````.D1U!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!%2%2YO(A````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````:W2E"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````T=L,!!!!!!!!!!!!!!!!.T5U````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````T=L,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!7F>8````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````+SIK!!!!!!!!!!!!"
++      "7F>8````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````;'6F!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!+SIJ````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````J[3E"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````7F>8!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````.T5V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO$A````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!O<;W````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````>8*S!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````+SIJ!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````O<;W"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK3E!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3E!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````J[3E!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK3D!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````J[3E!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3E!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````JK3D!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````JK3E!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````:W2E!!!!!!!!!!!!;'6E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````1E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!7F>8````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````;'6F!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;X````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````7FB8!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1E!`````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````(RY?!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      ".T5U````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````.D1U!!!!!!!!!!!!"
++      ";'6F````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!+SIK````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````%2%2!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO$A````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````7F>8!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````T=L,!!!!!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````B)'\"!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!7F>8````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````;'6F!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````1E\"!!!!!!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!(RY?````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````JK3E.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!.T5UO<;W````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````%2%2!!!!!!!!!!!!!!!!;'6F````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````JK3E"
++      "1E!`%2%2!!!!!!!!!!!!!!!!!!!!!!!!%2%24UR,JK3D````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````F:+3!!!!!!!!!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4ER,````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````O<?XF:+3;'6E:W2EJ[3EO<;W"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````1D]`!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)2"
++      "YO$A````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!"
++      ";'6E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````4UR,!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "%B%2YO(A````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````T=L,!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!T-H+````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      ":W2E````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.T5V````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````+SIJ"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D5U````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!>8*S````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "%B)2````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````>8*S!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)3O,;W````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````JK3E!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+2````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!(RY?YO$@````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````T-L+%B)3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!.D1U````````````````````````````````````````````````````````"
++      "````````````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````YO$A+SIK!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!%2%2YO$@````````````````````````````````````````````````"
++      "````````````````````````````````>8*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````4EN,!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````"
++      "````````````````````````````````````````````````````````````JK3E"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4UR,````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "YO$@+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!.T5UYO$A````````````````````````````````````````"
++      "````````````````````````F:+2%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!+SIKYO(A````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````YO$@+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJO<;W````"
++      "````````````````````````````````````````````````````;'6E!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@O<;W````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````JK/D%B)3"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4ER,T=L,````````````````````````````"
++      "````````````B9+#(R]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!%2%2>8*S````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!1E!`>H*SJK/DT-L+````````JK3EF:+37F>8(R]?!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D1UT-L+````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````O<;W+SIJ!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!%B)2:W2EYO$A````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````Y?$@:W2E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "(R]?B)'\"````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````YO$@:W2E%B)2!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?>8*SYO$@````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````````````````````````````````````````````YO$@;'6E%2%2"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!%2%24UR,JK/D````````````````````````````````````"
++      "````````````````````````````````````````````````````````````````"
++      "````````````F:+34EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?"
++      "4EN,F:+3YO(A````````````````````````````````````````````````````"
++      "````````````````````````````YO(AF:+34ER,%B)2!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJ4ER,>8*SJK/DT=L,"
++      "````````````````````````````````````````T-L+JK/D>8*S4ER,+SEJ!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK.T5U.D1U.T5V.T5U(R]?"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++      "";
diff --git a/recipes/u-boot/u-boot-git/mmcinit.patch b/recipes/u-boot/u-boot-git/mmcinit.patch
new file mode 100644 (file)
index 0000000..8aee768
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/common/cmd_mmc.c 2009-09-02 23:02:48.000000000 -0700
++++ b/common/cmd_mmc.c 2009-09-02 23:01:09.000000000 -0700
+@@ -92,6 +92,17 @@
+       "init [dev] - init MMC sub system\n"
+       "mmc device [dev] - show or set current device\n"
+ );
++int do_mmcinit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
++{
++      char *argv2[] = {"mmc", "init"};
++      return do_mmc (cmdtp, flag, 2, argv2);
++}
++
++U_BOOT_CMD(
++      mmcinit,        1,      0,      do_mmcinit,
++      "mmcinit - init mmc card\n",
++      NULL
++);
+ #else /* !CONFIG_GENERIC_MMC */
+ static void print_mmcinfo(struct mmc *mmc)
diff --git a/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch b/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch
new file mode 100644 (file)
index 0000000..4e2be64
--- /dev/null
@@ -0,0 +1,73 @@
+--- git/board/ti/beagle/beagle.h-orig  2009-09-29 16:39:34.000000000 -0700
++++ git/board/ti/beagle/beagle.h       2009-09-29 16:40:03.000000000 -0700
+@@ -201,16 +201,16 @@ const omap3_sysinfo sysinfo = {
+       MUX_VAL(CP(MMC1_DAT6),          (IEN  | PTU | EN  | M0)) /*MMC1_DAT6*/\
+       MUX_VAL(CP(MMC1_DAT7),          (IEN  | PTU | EN  | M0)) /*MMC1_DAT7*/\
+  /*Wireless LAN */\
+-      MUX_VAL(CP(MMC2_CLK),           (IEN  | PTU | EN  | M4)) /*GPIO_130*/\
+-      MUX_VAL(CP(MMC2_CMD),           (IEN  | PTU | EN  | M4)) /*GPIO_131*/\
+-      MUX_VAL(CP(MMC2_DAT0),          (IEN  | PTU | EN  | M4)) /*GPIO_132*/\
+-      MUX_VAL(CP(MMC2_DAT1),          (IEN  | PTU | EN  | M4)) /*GPIO_133*/\
+-      MUX_VAL(CP(MMC2_DAT2),          (IEN  | PTU | EN  | M4)) /*GPIO_134*/\
+-      MUX_VAL(CP(MMC2_DAT3),          (IEN  | PTU | EN  | M4)) /*GPIO_135*/\
+-      MUX_VAL(CP(MMC2_DAT4),          (IEN  | PTU | EN  | M4)) /*GPIO_136*/\
+-      MUX_VAL(CP(MMC2_DAT5),          (IEN  | PTU | EN  | M4)) /*GPIO_137*/\
+-      MUX_VAL(CP(MMC2_DAT6),          (IEN  | PTU | EN  | M4)) /*GPIO_138*/\
+-      MUX_VAL(CP(MMC2_DAT7),          (IEN  | PTU | EN  | M4)) /*GPIO_139*/\
++      MUX_VAL(CP(MMC2_CLK),           (IEN  | PTU | EN  | M0)) /*MMC2_CLK*/\
++      MUX_VAL(CP(MMC2_CMD),           (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\
++      MUX_VAL(CP(MMC2_DAT0),          (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\
++      MUX_VAL(CP(MMC2_DAT1),          (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\
++      MUX_VAL(CP(MMC2_DAT2),          (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\
++      MUX_VAL(CP(MMC2_DAT3),          (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\
++      MUX_VAL(CP(MMC2_DAT4),          (IEN  | PTU | EN  | M1)) /*MMC2_DIR_DAT0*/\
++      MUX_VAL(CP(MMC2_DAT5),          (IEN  | PTU | EN  | M1)) /*MMC2_DIR_DAT1*/\
++      MUX_VAL(CP(MMC2_DAT6),          (IEN  | PTU | EN  | M1)) /*MMC2_DIR_CMD*/\
++      MUX_VAL(CP(MMC2_DAT7),          (IEN  | PTU | EN  | M1)) /*MMC2_CLKIN*/\
+  /*Bluetooth*/\
+       MUX_VAL(CP(MCBSP3_DX),          (IEN  | PTD | DIS | M1)) /*UART2_CTS*/\
+       MUX_VAL(CP(MCBSP3_DR),          (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
+@@ -229,13 +229,13 @@ const omap3_sysinfo sysinfo = {
+       MUX_VAL(CP(MCBSP4_DR),          (IEN  | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
+       MUX_VAL(CP(MCBSP4_DX),          (IEN  | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
+       MUX_VAL(CP(MCBSP4_FSX),         (IEN  | PTD | DIS | M1)) /*SSI1_WAKE*/\
+-      MUX_VAL(CP(MCBSP1_CLKR),        (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
+-      MUX_VAL(CP(MCBSP1_FSR),         (IDIS | PTU | EN  | M4)) /*GPIO_157*/\
+-      MUX_VAL(CP(MCBSP1_DX),          (IDIS | PTD | DIS | M4)) /*GPIO_158*/\
+-      MUX_VAL(CP(MCBSP1_DR),          (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
++      MUX_VAL(CP(MCBSP1_CLKR),        (IEN  | PTU | EN  | M1)) /*MCSPI4_CLK*/\
++      MUX_VAL(CP(MCBSP1_FSR),         (IEN  | PTU | EN  | M4)) /*GPIO_157*/\
++      MUX_VAL(CP(MCBSP1_DX),          (IEN  | PTD | EN  | M1)) /*MCSPI4_SIMO*/\
++      MUX_VAL(CP(MCBSP1_DR),          (IEN  | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
+       MUX_VAL(CP(MCBSP_CLKS),         (IEN  | PTU | DIS | M0)) /*McBSP_CLKS*/\
+-      MUX_VAL(CP(MCBSP1_FSX),         (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
+-      MUX_VAL(CP(MCBSP1_CLKX),        (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
++      MUX_VAL(CP(MCBSP1_FSX),         (IEN  | PTD | EN  | M1)) /*MCSPI4_CS0*/\
++      MUX_VAL(CP(MCBSP1_CLKX),        (IEN  | PTD | DIS | M4)) /*GPIO_162*/\
+  /*Serial Interface*/\
+       MUX_VAL(CP(UART3_CTS_RCTX),     (IEN  | PTD | EN  | M0)) /*UART3_CTS_RCTX*/\
+       MUX_VAL(CP(UART3_RTS_SD),       (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\
+@@ -255,8 +255,8 @@ const omap3_sysinfo sysinfo = {
+       MUX_VAL(CP(HSUSB0_DATA7),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
+       MUX_VAL(CP(I2C1_SCL),           (IEN  | PTU | EN  | M0)) /*I2C1_SCL*/\
+       MUX_VAL(CP(I2C1_SDA),           (IEN  | PTU | EN  | M0)) /*I2C1_SDA*/\
+-      MUX_VAL(CP(I2C2_SCL),           (IEN  | PTU | EN  | M4)) /*GPIO_168*/\
+-      MUX_VAL(CP(I2C2_SDA),           (IEN  | PTU | EN  | M4)) /*GPIO_183*/\
++      MUX_VAL(CP(I2C2_SCL),           (IEN  | PTU | EN  | M0)) /*I2C2_SCL*/\
++      MUX_VAL(CP(I2C2_SDA),           (IEN  | PTU | EN  | M0)) /*I2C2_SDA*/\
+       MUX_VAL(CP(I2C3_SCL),           (IEN  | PTU | EN  | M0)) /*I2C3_SCL*/\
+       MUX_VAL(CP(I2C3_SDA),           (IEN  | PTU | EN  | M0)) /*I2C3_SDA*/\
+       MUX_VAL(CP(I2C4_SCL),           (IEN  | PTU | EN  | M0)) /*I2C4_SCL*/\
+@@ -374,9 +374,9 @@ const omap3_sysinfo sysinfo = {
+       MUX_VAL(CP(SDRC_CKE1),          (IDIS | PTU | EN  | M0)) /*sdrc_cke1*/
+ #define MUX_BEAGLE_C() \
+-      MUX_VAL(CP(MCBSP3_DX),          (IEN | PTD | DIS | M4)) /*GPIO_140*/\
+-      MUX_VAL(CP(MCBSP3_DR),          (IEN | PTD | DIS | M4)) /*GPIO_142*/\
+-      MUX_VAL(CP(MCBSP3_CLKX),        (IEN | PTD | DIS | M4)) /*GPIO_141*/\
++      MUX_VAL(CP(MCBSP3_DX),          (IEN  | PTD | DIS | M4)) /*GPIO_140*/\
++      MUX_VAL(CP(MCBSP3_DR),          (IEN  | PTD | DIS | M4)) /*GPIO_142*/\
++      MUX_VAL(CP(MCBSP3_CLKX),        (IEN  | PTD | DIS | M4)) /*GPIO_141*/\
+       MUX_VAL(CP(UART2_CTS),          (IEN  | PTU | EN  | M0)) /*UART2_CTS*/\
+       MUX_VAL(CP(UART2_RTS),          (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\
+       MUX_VAL(CP(UART2_TX),           (IDIS | PTD | DIS | M0)) /*UART2_TX*/
diff --git a/recipes/u-boot/u-boot-git/power.patch b/recipes/u-boot/u-boot-git/power.patch
new file mode 100644 (file)
index 0000000..f73d74e
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/board/omap3/beagle/beagle.h      2009-09-06 10:28:33.000000000 -0700
++++ b/board/omap3/beagle/beagle.h      2009-09-06 10:29:16.000000000 -0700
+@@ -255,8 +255,8 @@
+  MUX_VAL(CP(HSUSB0_DATA7),    (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
+  MUX_VAL(CP(I2C1_SCL),                (IEN  | PTU | EN  | M0)) /*I2C1_SCL*/\
+  MUX_VAL(CP(I2C1_SDA),                (IEN  | PTU | EN  | M0)) /*I2C1_SDA*/\
+- MUX_VAL(CP(I2C2_SCL),                (IEN  | PTU | EN  | M0)) /*I2C2_SCL*/\
+- MUX_VAL(CP(I2C2_SDA),                (IEN  | PTU | EN  | M0)) /*I2C2_SDA*/\
++ MUX_VAL(CP(I2C2_SCL),                (IEN  | PTU | EN  | M4)) /*GPIO_168*/\
++ MUX_VAL(CP(I2C2_SDA),                (IEN  | PTU | EN  | M4)) /*GPIO_183*/\
+  MUX_VAL(CP(I2C3_SCL),                (IEN  | PTU | EN  | M0)) /*I2C3_SCL*/\
+  MUX_VAL(CP(I2C3_SDA),                (IEN  | PTU | EN  | M0)) /*I2C3_SDA*/\
+  MUX_VAL(CP(I2C4_SCL),                (IEN  | PTU | EN  | M0)) /*I2C4_SCL*/\
index 57f60b5..0b8bae9 100644 (file)
@@ -1,20 +1,29 @@
 --- a/board/omap3/beagle/beagle.h      2009-02-19 13:30:50.000000000 -0800
 +++ b/board/omap3/beagle/beagle.h      2009-02-19 13:12:16.000000000 -0800
-@@ -205,12 +205,12 @@
+@@ -201,16 +201,16 @@
   MUX_VAL(CP(MMC1_DAT6),               (IEN  | PTU | EN  | M0)) /*MMC1_DAT6*/\
   MUX_VAL(CP(MMC1_DAT7),               (IEN  | PTU | EN  | M0)) /*MMC1_DAT7*/\
   /*Wireless LAN */\
-- MUX_VAL(CP(MMC2_CLK),                (IEN  | PTU | EN  | M4)) /*GPIO_130*/\
-- MUX_VAL(CP(MMC2_CMD),                (IEN  | PTU | EN  | M4)) /*GPIO_131*/\
-- MUX_VAL(CP(MMC2_DAT0),               (IEN  | PTU | EN  | M4)) /*GPIO_132*/\
+- MUX_VAL(CP(MMC2_CLK),                (IEN  | PTU | EN  | M0)) /*MMC2_CLK*/\
+- MUX_VAL(CP(MMC2_CMD),                (IEN  | PTU | EN  | M0)) /*MMC2_CMD*/\
+- MUX_VAL(CP(MMC2_DAT0),               (IEN  | PTU | EN  | M0)) /*MMC2_DAT0*/\
+- MUX_VAL(CP(MMC2_DAT1),               (IEN  | PTU | EN  | M0)) /*MMC2_DAT1*/\
+- MUX_VAL(CP(MMC2_DAT2),               (IEN  | PTU | EN  | M0)) /*MMC2_DAT2*/\
+- MUX_VAL(CP(MMC2_DAT3),               (IEN  | PTU | EN  | M0)) /*MMC2_DAT3*/\
+- MUX_VAL(CP(MMC2_DAT4),               (IEN  | PTU | EN  | M1)) /*MMC2_DIR_DAT0*/\
+- MUX_VAL(CP(MMC2_DAT5),               (IEN  | PTU | EN  | M1)) /*MMC2_DIR_DAT1*/\
+- MUX_VAL(CP(MMC2_DAT6),               (IEN  | PTU | EN  | M1)) /*MMC2_DIR_CMD*/\
+- MUX_VAL(CP(MMC2_DAT7),               (IEN  | PTU | EN  | M1)) /*MMC2_CLKIN*/\
 + MUX_VAL(CP(MMC2_CLK),                (IEN  | PTU | DIS  | M1)) /*MCSPI3_CLK*/\
 + MUX_VAL(CP(MMC2_CMD),                (IEN  | PTU | DIS  | M1)) /*MCSPI3_SIMO*/\
 + MUX_VAL(CP(MMC2_DAT0),               (IEN  | PTU | EN  | M1)) /*MCSPI3_SOMI*/\
-  MUX_VAL(CP(MMC2_DAT1),               (IEN  | PTU | EN  | M4)) /*GPIO_133*/\
-- MUX_VAL(CP(MMC2_DAT2),               (IEN  | PTU | EN  | M4)) /*GPIO_134*/\
-- MUX_VAL(CP(MMC2_DAT3),               (IEN  | PTU | EN  | M4)) /*GPIO_135*/\
++ MUX_VAL(CP(MMC2_DAT1),               (IEN  | PTU | EN  | M4)) /*GPIO_133*/\
 + MUX_VAL(CP(MMC2_DAT2),               (IEN  | PTU | EN  | M1)) /*MCSPI3_CS1*/\
 + MUX_VAL(CP(MMC2_DAT3),               (IEN  | PTU | EN  | M1)) /*MCSPI3_CS0*/\
-  MUX_VAL(CP(MMC2_DAT4),               (IEN  | PTU | EN  | M4)) /*GPIO_136*/\
-  MUX_VAL(CP(MMC2_DAT5),               (IEN  | PTU | EN  | M4)) /*GPIO_137*/\
-  MUX_VAL(CP(MMC2_DAT6),               (IEN  | PTU | EN  | M4)) /*GPIO_138*/\
++ MUX_VAL(CP(MMC2_DAT4),               (IEN  | PTU | EN  | M4)) /*GPIO_136*/\
++ MUX_VAL(CP(MMC2_DAT5),               (IEN  | PTU | EN  | M4)) /*GPIO_137*/\
++ MUX_VAL(CP(MMC2_DAT6),               (IEN  | PTU | EN  | M4)) /*GPIO_138*/\
++ MUX_VAL(CP(MMC2_DAT7),               (IEN  | PTU | EN  | M4)) /*GPIO_139*/\
+  /*Bluetooth*/\
+  MUX_VAL(CP(MCBSP3_DX),               (IEN  | PTD | DIS | M1)) /*UART2_CTS*/\
+  MUX_VAL(CP(MCBSP3_DR),               (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
index 3b0781f..bf35964 100644 (file)
@@ -1,20 +1,20 @@
 --- a/board/omap3/beagle/beagle.h      2009-02-19 13:30:50.000000000 -0800
 +++ b/board/omap3/beagle/beagle.h      2009-02-19 13:12:16.000000000 -0800
-@@ -233,13 +233,13 @@
+@@ -229,13 +229,13 @@
   MUX_VAL(CP(MCBSP4_DR),               (IEN  | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
   MUX_VAL(CP(MCBSP4_DX),               (IEN  | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
   MUX_VAL(CP(MCBSP4_FSX),      (IEN  | PTD | DIS | M1)) /*SSI1_WAKE*/\
-- MUX_VAL(CP(MCBSP1_CLKR),     (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
-- MUX_VAL(CP(MCBSP1_FSR),      (IDIS | PTU | EN  | M4)) /*GPIO_157*/\
+- MUX_VAL(CP(MCBSP1_CLKR),     (IEN  | PTU | EN  | M1)) /*MCSPI4_CLK*/\
+- MUX_VAL(CP(MCBSP1_FSR),      (IEN  | PTU | EN  | M4)) /*GPIO_157*/\
+- MUX_VAL(CP(MCBSP1_DX),               (IEN  | PTD | EN  | M1)) /*MCSPI4_SIMO*/\
+- MUX_VAL(CP(MCBSP1_DR),               (IEN  | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
 + MUX_VAL(CP(MCBSP1_CLKR),     (IEN | PTU | DIS | M1)) /*MCSPI4_CLK*/\
 + MUX_VAL(CP(MCBSP1_FSR),      (IEN | PTU | EN  | M4)) /*GPIO_157*/\
-- MUX_VAL(CP(MCBSP1_DX),               (IDIS | PTD | DIS | M4)) /*GPIO_158*/\
-- MUX_VAL(CP(MCBSP1_DR),               (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
 + MUX_VAL(CP(MCBSP1_DX),               (IEN | PTU | DIS | M1)) /*MCSPI4_SIMO*/\
 + MUX_VAL(CP(MCBSP1_DR),               (IEN | PTU | EN | M1)) /*MCSPI4_SOMI*/\
   MUX_VAL(CP(MCBSP_CLKS),      (IEN  | PTU | DIS | M0)) /*McBSP_CLKS*/\
-- MUX_VAL(CP(MCBSP1_FSX),      (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
-- MUX_VAL(CP(MCBSP1_CLKX),     (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
+- MUX_VAL(CP(MCBSP1_FSX),      (IEN  | PTD | EN  | M1)) /*MCSPI4_CS0*/\
+- MUX_VAL(CP(MCBSP1_CLKX),     (IEN  | PTD | DIS | M4)) /*GPIO_162*/\
 + MUX_VAL(CP(MCBSP1_FSX),      (IEN | PTU | EN | M1)) /*MCSPI4_CS0*/\
 + MUX_VAL(CP(MCBSP1_CLKX),     (IEN | PTU | EN | M4)) /*GPIO_162*/\
   /*Serial Interface*/\
diff --git a/recipes/u-boot/u-boot-git/touchbook-config.patch b/recipes/u-boot/u-boot-git/touchbook-config.patch
new file mode 100644 (file)
index 0000000..712a313
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/board/omap3/beagle/beagle.c      2009-10-18 05:31:23.000000000 +0800
++++ b/board/omap3/beagle/beagle.c      2009-10-18 05:31:34.000000000 +0800
+@@ -186,7 +186,7 @@
+       gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
+       /* board id for Linux */
+-      gd->bd->bi_arch_number = MACH_TYPE_OMAP3_BEAGLE;
++      gd->bd->bi_arch_number = 2393;
+       /* boot param addr */
+       gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
index 6c8566f..8ab0282 100644 (file)
@@ -5,6 +5,8 @@ PRIORITY = "optional"
 LICENSE = "GPL"
 PROVIDES = "virtual/bootloader"
 
+DEPENDS = "mtd-utils"
+
 PACKAGE_ARCH = "${MACHINE_ARCH}"
 PARALLEL_MAKE=""
 
@@ -14,18 +16,20 @@ UBOOT_MACHINE ?= "${MACHINE}_config"
 UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.bin"
 UBOOT_SYMLINK ?= "u-boot-${MACHINE}.bin"
 
+INSANE_SKIP_${PN} = True
+
 do_compile () {
        unset LDFLAGS
        unset CFLAGS
        unset CPPFLAGS
        oe_runmake ${UBOOT_MACHINE}
        oe_runmake all
-       oe_runmake tools
+       oe_runmake tools env
 }
 
 do_install () {
        if [ -e ${WORKDIR}/fw_env.config ] ; then
-           install -d ${D}$base_sbindir}
+           install -d ${D}${base_sbindir}
                install -d ${D}${sysconfdir}
                install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
                install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
index 1a5a4e2..9958475 100644 (file)
@@ -1,5 +1,5 @@
 require u-boot.inc
-PR ="r30"
+PR ="r32"
 
 FILESPATHPKG =. "u-boot-git:"
 
@@ -14,20 +14,24 @@ SRCREV_palmpre = "6b8edfde22acc574b5532e9f086e6a7287a9bc78"
 SRC_URI_append_afeb9260 = " file://AFEB9260-network-fix.patch;patch=1"
 SRC_URI_append_afeb9260-180 = " file://AFEB9260-network-fix.patch;patch=1"
 
-SRC_URI_beagleboard = "git://gitorious.org/u-boot-omap3/mainline.git;branch=omap3-dev;protocol=git \
-                 file://fw-env.patch;patch=1 \
-                 file://dss2.patch;patch=1 \
+SRC_URI_beagleboard = "git://git.denx.de/u-boot-ti.git;protocol=git \
+                 file://fw_env.config \
                  file://new-pinmux.patch;patch=1 \
 "
-SRCREV_beagleboard = "d363f9cb0918a1b6b92e2e20d01543d0c4f53274"
-PV_beagleboard = "2009.05+${PR}+gitr${SRCREV}"
+SRCREV_beagleboard = "1590f84007e2b50ad346a482fff89195cb04ff4e"
+PV_beagleboard = "2009.08+${PR}+gitr${SRCREV}"
 
 SRC_URI_omap3-touchbook = "git://gitorious.org/u-boot-omap3/mainline.git;branch=omap3-dev;protocol=git \
-                 file://fw-env.patch;patch=1 \
+                 file://fw_env.config \
                  file://dss2.patch;patch=1 \
+                 file://600mhz.patch;patch=1 \
                  file://spi3.patch;patch=1 \
                  file://spi4.patch;patch=1 \
                  file://headphone.patch;patch=1 \
+                 file://power.patch;patch=1 \
+                 file://ai-logo.patch;patch=1 \
+                 file://mmcinit.patch;patch=1 \
+                 file://touchbook-config.patch;patch=1 \
 "
 SRCREV_omap3-touchbook = "d363f9cb0918a1b6b92e2e20d01543d0c4f53274"
 PV_omap3-touchbook = "2009.05+${PR}+gitr${SRCREV}"