RE: Request to mailing list freebsd-arch rejected-gui for unix

From: DANIEL hoggan (danny280279_at_hotmail.com)
Date: 06/19/05

  • Next message: Steve Kargl: "Re: Request to mailing list freebsd-arch rejected-gui for unix"
    To: freebsd-arch@freebsd.org
    Date: Sun, 19 Jun 2005 12:42:10 +0000
    
    

    >From: owner-freebsd-arch@freebsd.org
    >To: danny280279@hotmail.com
    >Subject: Request to mailing list freebsd-arch rejected
    >Date: Sun, 19 Jun 2005 11:40:38 +0000
    >
    >Your request to the freebsd-arch mailing list
    >
    > Posting of your message titled "Hot plugging systems"
    >
    >has been rejected by the list moderator. The moderator gave the
    >following reason for rejecting your request:
    >
    >"Quite aside for the tone of your post, which comes across in a way
    >that is very unlikely to encourage the volunteers who write the code
    >to have any desire to cooperate with you, your message came out to
    >about 3.3 MB; the upper limit on messages for nearly all FreeBSD.org
    >mailing lists is 200 KB. There is no need to "attach" additional
    >material to your message -- merely provide a URL, and allow those who
    >are sufficiently interested in what you have to say to go look.
    >
    >But in order for that strategy to be effective, you will need to craft
    >your message appropriately; it would be ideal if you were to be able
    >to show a body of code that you had either created or sponsored: it
    >need nbe complete, but ot generally, there is a very strong perception
    >that code speak a lot louder than words.
    >
    > -- postmaster@freebsd.org"

    Here is my code:

    /****************************************************************************
    This file is brought to you by the gpl and is available as part of the gge2d
    graphics engine, This code is unfinished and is only partly complete, this
    file is to be the complete header file for the graphical component for the
    gge
    if you have the time maby you coluld puruse this file and tell me of any
    problems, bugs or comments you may have.
    ###END###

    *****************************************************************************/

    #define LOCAL_PICTURES
    #include "system.h"
    #include <graphics/libggi/ggi.h>
    #include <hw/ggi/xggi.h>
    #include <GL/> /*I can't decide whether to put Glitz or
    Mesa here*/
    #include <system/mach.h>
    #include <drivers/kgi.h> /*I don't actually want the server to
    connect to the hardware, so I need to use an abstraction layer, between the
    hardware and the server, There's only a couple of changes to the kgi code 1
    to add the IO graphics interface, and another to add the mach.h file, so
    it's connected to the os.*/

    /*
       gge - A 2d graphics engine based upon cairo

       Copyright (C) 2005 danny

       This program is free software; you can redistribute it and/or modify
       it under the terms of the GNU General Public License as published by
       the Free Software Foundation; either version 2, or (at your option)
       any later version.

       This program is distributed in the hope that it will be useful,
       but WITHOUT ANY WARRANTY; without even the implied warranty of
       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
       GNU General Public License for more details.

       You should have received a copy of the GNU General Public License
       along with this program; if not, write to the Free Software Foundation,
       Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

    #include <termios.h>
    #include <grp.h>
    #include <pwd.h>
    */

    #include <stdio.h>
    #include <sys/types.h>
    #include "system.h"
    #include "gge-opt.h"

    char *xmalloc ();
    char *xrealloc ();
    char *xstrdup ();

    int
    main (int argc, char **argv)
    {

      {
        int arg_ct = optionProcess( &ggeOptions, argc, argv );
        argc -= arg_ct;
        /*
        if ((argc < ARGC_MIN) || (argc > ARGC_MAX))
          {
            fprintf( stderr, "%s ERROR: remaining args (%d) "
                     "out of range\n", ggeOptions.pzProgName,
                     argc );

            USAGE( EXIT_FAILURE );
          }
        */
        argv += arg_ct;
      }

      /*
      if (HAVE_OPT(OPT_NAME))
        respond_to_opt_name();
      */

      /* do the work */

      return EXIT_SUCCESS;
    }

    /*****************************************************************************

    This source code is made available to you under the terms of the GPL. This
    Package should be accompanied by a file that contains the associated
    licensing terms. If you are unable to find this file, please refer to its
    location on the Internet at www.gnu.org/licenses.html.
    It was developed from the Rocklyte Systems Pandora engine.

    ******************************************************************************
    ###DESCRIPTION### (from the rocklyte page)
    <p>The Action class allows you to execute actions and methods on other
    objects in the system. It is specifically designed for use in scripts, such
    as
    the Dynamic Markup Language. The Action class
    is especially useful for executing generic actions such as Free,
    Show, MoveToFront and Resize during the execution of a script. You may
    also create static Action objects, which are useful for reacting to the
    user's activity and other events in the system. Another useful feature
    is action monitoring, which allows you to react to action calls made on
    any object.</p>
    *******************************************************************************/

    #include <gge/system/all.h>
    #include <gge/modules/strings.h>

    static ERROR CMDInit(OBJECTPTR, struct KernelBase *);
    static ERROR CMDExpunge(void);

    #define VER_ACTION 1.1

    EXPORT struct ModHeader ModHeader = {
       MODULE_HEADER_V1, CMDInit, NULL, NULL, CMDExpunge,
       JMP_DEFAULT, 0, CPU_PC, VER_ACTION, VER_KERNEL,

    };

    static struct KernelBase *KernelBase = 0;
    static struct StringsBase *StringsBase = 0;
    static struct ActionTable *ActionTable = 0;
    static OBJECTPTR modStrings = 0;
    static OBJECTPTR ActionClass = 0;
    static OBJECTID glBroadcastID = 0;

    /*****************************************************************************
    ** Class definition.
    */

    #define LEN_CALL 40
    #define LEN_OBJECTREFERENCE 100
    #define SIZE_ARGS 100
    #define MAX_FIELDS 16

    enum {
       TYPE_ACTION=1,
       TYPE_METHOD
    };

    struct Action {
       OBJECT_HEADER /* Class header */
       LONG Static; /* Set to TRUE if the action object should remain in
    memory */
       ERROR Error; /* Reflects the error condition of the last executed
    action */
       LONG Flags; /* Optional flags */

       PRIVATE_FIELDS
       OBJECTID ObjectID;
       OBJECTID ClassID; /* The class of the object in the ObjectID
    field */
       ACTIONID ActionID; /* The related action or method ID */
       BYTE ObjectReference[LEN_OBJECTREFERENCE];
       BYTE Call[LEN_CALL]; /* The action or method to call */
       BYTE Arguments[SIZE_ARGS];
       WORD Type; /* Either TYPE_METHOD or TYPE_ACTION */
       WORD ArgsSize;
       WORD Monitor;
       STRING Fields[MAX_FIELDS+1];
       UBYTE ArgsSet; /* Count of arguments that have been set */
    };

    static ERROR GET_Call(struct Action *, STRING *);
    static ERROR GET_Custom(struct Action *, STRING *);
    static ERROR GET_Monitor(struct Action *, OBJECTID *);
    static ERROR GET_Object(struct Action *, struct Variable *);

    static ERROR SET_Call(struct Action *, STRING);
    static ERROR SET_Custom(struct Action *, STRING);
    static ERROR SET_Method(struct Action *, STRING);
    static ERROR SET_Monitor(struct Action *, OBJECTID *);
    static ERROR SET_Object(struct Action *, struct Variable *);

    #define AF_TRANSLATE 0x00000001
    #define AF_LOCAL 0x00000002
    #define AF_MESSAGE 0x00000004
    #define AF_ACCEPTERRORS 0x00000008
    #define AF_NOMSG AF_LOCAL

    struct FieldDef ActionFlags[] = {
       { "TRANSLATE", AF_TRANSLATE },
       { "LOCAL", AF_LOCAL },
       { "MESSAGE", AF_MESSAGE },
       { "ACCEPTERRORS", AF_ACCEPTERRORS},
       /*** Synonyms ***/
       { "NOMSG", AF_NOMSG },
       { NULL, NULL }
    };

    static struct FieldArray ActionFields[] = {
       { "Static", 0, FDF_LONG|FDF_RW, 0, NULL, NULL },
       { "Error", 0, FDF_LONG|FDF_R, 0, NULL, NULL },
       { "Flags", 0, FDF_LONGFLAGS|FDF_RI, (LONG)&ActionFlags, NULL, NULL },
       /*** Virtual fields ***/
       { "Monitor", 0, FDF_OBJECTID|FDF_RW, 0, GET_Monitor, SET_Monitor },
       { "Call", 0, FDF_STRING|FDF_RW, 0, GET_Call, SET_Call },
       { "Custom", 0, FDF_STRING|FDF_RW, 0, GET_Custom, SET_Custom },
       { "Method", 0, FDF_STRING|FDF_RW, 0, GET_Call, SET_Method },
       { "Object", 0, FDF_VARIABLE|FDF_STRING|FDF_RW, 0, GET_Object, SET_Object
    },
       END_FIELD
    };

    static ERROR ACTION_ActionNotify(struct Action *, struct acActionNotify *);
    static ERROR ACTION_Activate(struct Action *, APTR);
    static ERROR ACTION_ClosingTag(struct Action *, APTR);
    static ERROR ACTION_EventMessage(struct Action *, struct acEventMessage *);
    static ERROR ACTION_Free(struct Action *, APTR);
    static ERROR ACTION_GetUnlistedField(struct Action *, struct
    acGetUnlistedField *);
    static ERROR ACTION_Init(struct Action *, APTR);
    static ERROR ACTION_NewObject(struct Action *, APTR);
    static ERROR ACTION_SetUnlistedField(struct Action *, struct
    acSetUnlistedField *);

    static struct ActionArray ActionActions[] = {
       { AC_ActionNotify, ACTION_ActionNotify },
       { AC_Activate, ACTION_Activate },
       { AC_ClosingTag, ACTION_ClosingTag },
       { AC_EventMessage, ACTION_EventMessage },
       { AC_Free, ACTION_Free },
       { AC_GetUnlistedField, ACTION_GetUnlistedField },
       { AC_Init, ACTION_Init },
       { AC_NewObject, ACTION_NewObject },
       { AC_SetUnlistedField, ACTION_SetUnlistedField },
       { NULL, NULL }
    };

    static ERROR SetArgument(struct Action *Self, STRING Field, STRING Value);

    /*****************************************************************************
    ** User Instructions.
    */

    static BYTE ActionUsage[] = {
    "USAGE: action object=name|id [call|method]=action [args...]\n\
    \n\
    You can call any action or method on an object by using this\n\
    command. This command is considered to be very powerful, so we\n\
    recommend that you read the Action List manual in the Documents\n\
    Folder before you use it.\n\
    \n\
    Examples\n\
    --------\n\
    If you wanted to destroy an object that you knew the ID of,\n\
    you could use this command:\n\
    \n\
      action object=-5329 call=free\n\
    \n\
    If you wanted to move a particular window to the front of the\n\
    display:\n\
    \n\
      action object=mywindow call=movetofront\n"
    };

    /*****************************************************************************
    ** Command: Init()
    */

    static ERROR CMDInit(OBJECTPTR argModule, struct KernelBase *argKernelBase)
    {
       KernelBase = argKernelBase;

       if (CreateObject(ID_MODULE, NULL, &modStrings, NULL,
          FID_Name|TSTRING, "strings",
          FID_Version|TFLOAT, MODVERSION_STRINGS,
          TAGEND) IS ERR_Okay) {
          if (GetField(modStrings, FID_ModBase, FT_POINTER, &StringsBase) !=
    ERR_Okay) {
             return(ObjectError(argModule, ERH_InitModule, ERR_GetField));
          }
       }
       else return(ObjectError(argModule, ERH_InitModule, ERR_CreateObject));

       /*** Get the global action table from the kernel ***/

       if (!(ActionTable = ActionList())) {
          return(ObjectError(argModule, ERH_InitModule, ERR_Failed));
       }

       /*** Find the SystemBroadcaster ***/

       FastFindObject("SystemBroadcaster", ID_BROADCAST, &glBroadcastID, 1,
    NULL);

       return(CreateObject(ID_CLASS, NULL, (OBJECTPTR *)&ActionClass, NULL,
          FID_BaseClassID|TLONG, ID_ACTION,
          FID_Version|TFLOAT, VER_ACTION,
          FID_Name|TSTRING, "Action",
          FID_Category|TLONG, CCF_COMMAND,
          FID_Usage|TPTR, ActionUsage,
          FID_Actions|TPTR, ActionActions,
          FID_Fields|TPTR, ActionFields,
          FID_Size|TLONG, sizeof(struct Action),
          TAGEND));
    }

    /*****************************************************************************
    ** Command: Expunge()
    */

    static ERROR CMDExpunge(void)
    {
       if (modStrings) { acFree(modStrings); modStrings = NULL; }
       if (ActionClass) { acFree(ActionClass); ActionClass = NULL; }
       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Internal: ActivateObject()
    **
    ** We use Action() only if we are operating on a private object or if
    AF_LOCAL
    ** is specified. Note that ActionMsg() returns ERR_Okay even if the action
    ** itself fails, so the use of AF_LOCAL is useful when you need the error
    code.
    */

    static ERROR ActivateObject(struct Action *Self, ACTIONID ActionID, OBJECTID
    ObjectID)
    {
       OBJECTPTR object;
       ERROR error;

       if ((ObjectID > 0) OR (Self->Flags & AF_LOCAL)) {
          if ((error = AccessObject(ObjectID, 5000, &object)) IS ERR_Okay) {
             if (Self->ArgsSize) error = Action(ActionID, object,
    Self->Arguments);
             else error = Action(ActionID, object, NULL);
             ReleaseObject(object);
          }
          else {
             DPrintF("@Action:","AccessObject(%d) returned error %d.", ObjectID,
    error);
             error = ERR_AccessObject;
          }
       }
       else {
          if (Self->Flags & AF_MESSAGE) {
             if ((Self->ArgsSize) AND (Self->ArgsSet)) error =
    DelayMsg(ActionID, ObjectID, Self->Arguments);
             else error = DelayMsg(ActionID, Self->ObjectID, NULL);
          }
          else {
             if ((Self->ArgsSize) AND (Self->ArgsSet)) error =
    ActionMsg(ActionID, ObjectID, Self->Arguments);
             else error = ActionMsg(ActionID, ObjectID, NULL);
          }
       }

       return(error);
    }

    /*****************************************************************************
    ** Action: ActionNotify
    */

    static ERROR ACTION_ActionNotify(struct Action *Self, struct acActionNotify
    *Args)
    {
       LONG i, count;

       if (Self->ActionID IS Args->ActionID) {
          /* Action Monitoring
          ** -----------------
          ** If we are waiting on a custom call, make sure that the custom
    string
          ** matches what we are expecting. NB: This only works when monitoring
          ** custom actions reported from the same task space, because pointers
          ** reported via ActionNotify are always invalid when sent between
    tasks.
          */

          Self->Error = Args->Error;

          if (Args->Error != ERR_Okay) {
             if (!(Self->Flags & AF_ACCEPTERRORS)) return(ERR_Okay);
          }

          if (Self->ActionID IS AC_Custom) {
             struct acCustom *custom;
             custom = (struct acCustom *)Args->Args;
             if (!custom) return(ObjectError(Self, ERH_ActionNotify, ERR_Args));

             if (StrCompare(custom->String, ((struct acCustom
    *)Self->Arguments)->String, 0, STR_MATCHLENGTH) != ERR_Okay) {
                //DPrintF("Action:","Received custom call, but string '%s' !=
    '%s'", custom->String, ((struct acCustom *)Self->Arguments)->String);
                return(ERR_Okay);
             }
          }

          /*** Activate the children ***/

          if ((count = TotalChildren(Self->Head.UniqueID)) > 0) {
             struct ChildEntry list[count];
             if (ListChildren(GetUniqueID(Self), list, &count) IS ERR_Okay) {
                for (i=0; i < count; i++) {
                   ActivateObject(Self, AC_Activate, list[i].ObjectID);
                   //ActionMsg(AC_Activate, list[i].ObjectID, NULL);
                }
             }
          }
          else DPrintF("ActionNotify:","[Action:%d] I have no child objects that
    need to be activated.", Self->Head.UniqueID);
       }

       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Action: Activate
    */

    static ERROR ACTION_Activate(struct Action *Self, APTR Void)
    {
       STRING fieldvalue;
       WORD i;
       BYTE str[1024], tmp[1024];

       if (Self->ActionID IS AC_Custom) {
          DPrintF("~Activate()","[Action:%d] Custom: %s, Object: %d",
    Self->Head.UniqueID, ((struct acCustom *)Self->Arguments)->String,
    Self->ObjectID);
       }
       else DPrintF("~Activate()","[Action:%d] Call: %s, Object: %d",
    Self->Head.UniqueID, Self->Call, Self->ObjectID);

       if (Self->ObjectReference[0]) {
          if (StrCopy(Self->ObjectReference, str, sizeof(str)) < sizeof(str)) {
             if (StrTranslate(str, sizeof(str), NULL) IS ERR_Okay)
    Self->ObjectID = (OBJECTID)StrToInt(str);
             else Self->ObjectID = (OBJECTID)StrToInt(Self->ObjectReference);
          }
          else return((Self->Error = StepObjectError(Self, ERH_Activate,
    ERR_BufferOverflow)));
       }

       if (!Self->ActionID) {
          DPrintF("@Activate:","[Action] Action field not set.");
          StepBack();
          return(Self->Error = ERR_FieldNotSet);
       }

       if (!Self->ObjectID) {
          DPrintF("@Activate:","[Action] Object field not set.");
          StepBack();
          return(Self->Error = ERR_FieldNotSet);
       }

       if (Self->Flags & AF_TRANSLATE) {
          for (i=0; Self->Fields[i]; i++) {
             for (fieldvalue=Self->Fields[i]; *fieldvalue; fieldvalue++);
             fieldvalue++;

             StrCopy(fieldvalue, str, sizeof(str));
             StrTranslate(str, sizeof(str), NULL);

             if ((*str IS '=') AND (StrCalculate(str+1, NULL, tmp, sizeof(tmp))
    IS ERR_Okay)) {
                SetArgument(Self, Self->Fields[i], tmp);
             }
             else SetArgument(Self, Self->Fields[i], str);
          }
       }

       /*** Activate the target object here ***/

       Self->Error = ActivateObject(Self, Self->ActionID, Self->ObjectID);

       if (Self->Error) ObjectError(Self, ERH_Activate, Self->Error);

       StepBack();
       return(Self->Error);
    }

    /*****************************************************************************
    ** Action: ClosingTag
    */

    static ERROR ACTION_ClosingTag(struct Action *Self, APTR Void)
    {
       if (Self->Monitor) return(ERR_Okay);

       if (Self->Static IS FALSE) {
          /*** Unless we are static, Activate and then Free ourselves ***/
          acActivate(Self);
          acFree(Self);
       }
       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Action: EventMessage
    */

    static ERROR ACTION_EventMessage(struct Action *Self, struct acEventMessage
    *Args)
    {
       LONG count;
       WORD i;

       if ((Args->EventID IS EVT_TaskCrashed) AND (Self->ActionID IS AC_Free)) {
          DPrintF("EventMessage()","[Action:%d] Task crash detected.",
    Self->Head.UniqueID);

          if (CheckObjectExists(Self->ObjectID, NULL) != ERR_Okay) {
             if ((count = TotalChildren(Self->Head.UniqueID)) > 0) {
                struct ChildEntry list[count];
                if (ListChildren(GetUniqueID(Self), list, &count) IS ERR_Okay) {
                   for (i=0; i < count; i++) {
                      ActionMsg(AC_Activate, list[i].ObjectID, NULL);
                   }
                }
             }
             else DPrintF("ActionNotify:","[Action:%d] I have no child objects
    that need to be activated.", Self->Head.UniqueID);
          }
       }

       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Action: Free
    */

    static ERROR ACTION_Free(struct Action *Self, APTR Void)
    {
       struct MemInfo info;
       struct FunctionField *function;
       struct MethodArray *methods;
       OBJECTPTR class, broadcast;
       LONG offset;
       APTR memory;
       WORD i;

       if ((Self->Monitor) AND (Self->ActionID IS AC_Free)) {
          if (AccessObject(glBroadcastID, 5000, &broadcast) IS ERR_Okay) {
             ActionTags(MT_UnsubscribeEvent, broadcast, Self->Head.UniqueID,
    EVT_TaskCrashed);
             ReleaseObject(broadcast);
          }
       }

       for (i=0; Self->Fields[i]; i++) {
          FreeMemory(Self->Fields[i]);
          Self->Fields[i] = NULL;
       }

       if (Self->ArgsSize) {
          /*** If any strings were allocated in the argument structure, we must
    free them ***/

          if (Self->ActionID) {
             function = NULL;
             if (Self->ActionID < 0) {
                if (Self->ClassID) {
                   if ((class = FindClass(Self->ClassID, NULL))) {
                      if ((GetField(class, FID_Methods, FT_POINTER, &methods) IS
    ERR_Okay) AND (methods)) {
                         function = methods[-Self->ActionID].Args;
                      }
                   }
                }
             }
             else function = ActionTable[Self->ActionID].Args;

             if (function) {
                offset = 0;
                while (function->Name) {
                   if (function->Type & ARG_STRING) {
                      if ((memory = ((STRING *)(Self->Arguments+offset))[0])) {
                         if (MemoryPtrInfo(memory, VER_MemoryInfo, &info) IS
    ERR_Okay) {
                            ReleaseMemory(memory);
                            FreeMemoryID(info.MemoryID);
                         }
                      }
                   }

                   if (function->Type & ARG_LONG) offset += sizeof(LONG);
                   else if (function->Type & ARG_LARGE) offset += sizeof(LARGE);
                   else if (function->Type & (ARG_PTR|ARG_STRING)) offset +=
    sizeof(APTR);
                   else if (function->Type & ARG_DOUBLE) offset +=
    sizeof(DOUBLE);
                   function++;
                }
             }
          }
       }

       return(ERR_Okay);
    }

    /*****************************************************************************

    ###ACTION###
    Name: GetUnlistedField
    Short: This action is supported for retrieving unlisted field values.
    ###END###

    *****************************************************************************/

    static ERROR ACTION_GetUnlistedField(struct Action *Self, struct
    acGetUnlistedField *Args)
    {
       STRING fieldvalue;
       LONG i, j;

       for (i=0; Self->Fields[i]; i++) {
          if (StrCompare(Args->Field, Self->Fields[i], NULL, STR_MATCHLENGTH) IS
    ERR_Okay) {
             for (fieldvalue=Self->Fields[i]; *fieldvalue; fieldvalue++);
             fieldvalue++;

             for (j=0; (fieldvalue[j]) AND (j < Args->Size-1); j++)
    Args->Buffer[j] = fieldvalue[j];
             Args->Buffer[j++] = 0;

             if (j >= Args->Size) return(ERR_BufferOverflow);
             else return(ERR_Okay);
          }
       }

       DPrintF("@GetVariable:","[Set] The variable \"%s\" does not exist.",
    Args->Field);

       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Action: Init
    */

    static ERROR ACTION_Init(struct Action *Self, APTR Void)
    {
       OBJECTPTR monitor, broadcast;

       if (!Self->ObjectID) Self->ObjectID = Self->Head.OwnerID;

       if (!Self->ActionID) {
          if ((Self->Type IS TYPE_METHOD) AND (Self->ObjectID)) {
             SetField(Self, FID_Method, FT_STRING, Self->Call);

             if (!Self->ActionID) {
                DPrintF("@Init:","[Action] Unable to resolve method \"%s\" for
    object %d", Self->Call, Self->ObjectID);
                return(ERR_FieldNotSet);
             }

          }
          else {
             if ((!Self->ActionID) AND (!Self->ObjectID))
    DPrintF("@Init:","[Action:%d] Missing both the action and object fields.",
    Self->Head.UniqueID);
             else if (Self->ActionID) DPrintF("@Init:","[Action:%d] Missing the
    object field (call %s).", Self->Head.UniqueID, Self->Call);
             else DPrintF("@Init:","[Action:%d] Missing the action field (object
    #%d).", Self->Head.UniqueID, Self->ObjectID);
             return(ERR_FieldNotSet);
          }
       }

       /* If action monitoring is to be used, subscribe
       ** to the action here.
       */

       if (Self->Monitor) {
          if (AccessObject(Self->ObjectID, 5000, &monitor) IS ERR_Okay) {
             SubscribeAction(monitor, Self->ActionID, Self);
             ReleaseObject(monitor);
          }

          /* When the Free action is being monitored, subscribed to the
    TaskCrashed
          ** event so that we know if the monitored object is ever destroyed by
    a
          ** crash.
          */

          if (Self->ActionID IS AC_Free) {
             if (AccessObject(glBroadcastID, 5000, &broadcast) IS ERR_Okay) {
                ActionTags(MT_SubscribeEvent, broadcast, Self->Head.UniqueID,
    EVT_TaskCrashed);
                ReleaseObject(broadcast);
             }
          }
       }

       Self->Error = ERR_Failed;

       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Action: SetUnlistedField
    */

    static ERROR ACTION_SetUnlistedField(struct Action *Self, struct
    acSetUnlistedField *Args)
    {
       STRING fieldname;
       LONG len;
       WORD i;

       if ((!Args) OR (!Args->Field) OR (!Args->Value)) {
          return(ObjectError(Self, ERH_SetUnlistedField, ERR_Args));
       }

       if (Self->Flags & AF_TRANSLATE) {
          /* If translation mode is enabled, store the argument name and value
    for
          ** future translation.
          */

          for (i=0; Self->Fields[i]; i++) {
             if (StrCompare(Args->Field, Self->Fields[i], NULL, STR_MATCHLENGTH)
    IS ERR_Okay) {
                FreeMemory(Self->Fields[i]);
                Self->Fields[i] = NULL;
                break;
             }
          }

          if (i < MAX_FIELDS) {
             if (AllocMemory(StrLength(Args->Field) + StrLength(Args->Value) +
    2,
                   MEM_STRING|MEM_NOCLEAR, (void **)&fieldname, NULL) IS
    ERR_Okay) {

                Self->Fields[i] = fieldname;

                if (Args->Field[0] IS '?') i = StrCopy(Args->Field+1, fieldname,
    COPY_ALL) + 1;
                else i = StrCopy(Args->Field, fieldname, COPY_ALL) + 1;

                StrCopy(Args->Value, fieldname + i, COPY_ALL);

                if (fieldname[i] IS '<') {
                   len = StrLength(fieldname+i);
                   if (fieldname[i+len-1] IS '>') {
                      fieldname[i] = '[';
                      fieldname[i+len-1] = ']';
                   }
                }
             }
          }
          else return(ERR_Failed);

          return(ERR_Okay);
       }

       if (!Self->ActionID) {
          /*** Resolve the action/method ID if we have not been able to do so
    already ***/

          if (!Self->ObjectID) {
             Self->ObjectID = Self->Head.OwnerID;
             Self->ClassID = GetClassID(Self->ObjectID);
             Self->ObjectReference[0] = 0;
          }

          if (Self->Type IS TYPE_METHOD) {
             if (Self->ObjectID) {
                SetField(Self, FID_Method, FT_POINTER, Self->Call);
             }
             else {
                DPrintF("@SetField()","[Action] You need to set an object before
    setting field \"%s\".", Args->Field);
                return(ERR_FieldNotSet);
             }
          }

          if (!Self->ActionID) {
             DPrintF("@SetUnlistedField()","[Action] You need to give me an
    action or method before setting field \"%s\".", Args->Field);
             return(ERR_FieldNotSet);
          }
       }
       else if (!Self->ArgsSize) {
          DPrintF("@SetUnlistedField()","[Action] The %s action does not support
    arguments (%s).", Self->Call, Args->Field);
          return(ERR_FieldNotSet);
       }

       SetArgument(Self, Args->Field, Args->Value);

       return(ERR_Okay);
    }

    static ERROR SetArgument(struct Action *Self, STRING Field, STRING Value)
    {
       struct FunctionField *field;
       struct MethodArray *methods;
       OBJECTPTR class;
       OBJECTID ObjectID;
       STRING string;
       LONG offset, size, len;

       field = NULL;
       size = NULL;

       if (Self->ActionID < 0) {
          /*** Method argument handling (requires that we lookup the class) ***/

          if ((!Self->ObjectID) OR (!Self->ClassID)) {
             DPrintF("!SetUnlistedField()","[Action:%d] You need to set the
    Object field before defining arguments.", Self->Head.UniqueID);
             return(ERR_FieldNotSet);
          }

          if ((class = FindClass(Self->ClassID, NULL))) {
             if ((GetField(class, FID_Methods, FT_POINTER, &methods) IS
    ERR_Okay) AND (methods)) {
                field = methods[-Self->ActionID].Args;
                size = methods[-Self->ActionID].StructureSize;
             }
             else return(ObjectError(Self, ERH_SetUnlistedField,
    ERR_NoMethods));
          }
          else return(ObjectError(Self, ERH_SetUnlistedField,
    ERR_MissingClass));
       }
       else {
          /*** Action argument handling ***/
          field = ActionTable[Self->ActionID].Args;
          size = ActionTable[Self->ActionID].Size;
       }

       /*** Find the argument and set it ***/

       offset = 0;
       while (field->Name) {
          if (StrCompare(field->Name, Field, NULL, STR_MATCHLENGTH) IS ERR_Okay)
    {
             if (field->Type & ARG_LONG) {
                if (field->Type & ARG_OBJECT) {
                   if (FastFindObject(Value, NULL, &ObjectID, 1, NULL) IS
    ERR_Okay) {
                      ((LONG *)(Self->Arguments+offset))[0] = ObjectID;
                   }
                }
                else ((LONG *)(Self->Arguments+offset))[0] =
    (LONG)StrToInt(Value);
             }
             else if (field->Type & ARG_LARGE) ((LARGE
    *)(Self->Arguments+offset))[0] = StrToInt(Value);
             else if (field->Type & ARG_STRING) {
                /*** Free any existing string setting first ***/

                if ((string = ((STRING *)(Self->Arguments+offset))[0])) {
                   FreeMemory(string);
                   ((STRING *)(Self->Arguments+offset))[0] = NULL;
                }

                for (len=0; Value[len]; len++);
                if (AllocMemory(len+1, MEM_STRING, (void **)&string, NULL) IS
    ERR_Okay) {
                   for (len=0; Value[len]; len++) string[len] = Value[len];
                   string[len] = 0;
                   ((STRING *)(Self->Arguments+offset))[0] = string;
                }
             }
             else if (field->Type & ARG_PTR) ((APTR
    *)(Self->Arguments+offset))[0] = (APTR)(LONG)StrToInt(Value);
             else if (field->Type & ARG_DOUBLE) ((DOUBLE
    *)(Self->Arguments+offset))[0] = StrToFloat(Value);
             else DPrintF("@SetUnlistedField:","[Action] Unknown argument
    definition %s / %d.", Self->Call, field->Type);
             break;
          }

          if (field->Type & ARG_LONG) offset += sizeof(LONG);
          else if (field->Type & ARG_LARGE) offset += sizeof(LARGE);
          else if (field->Type & ARG_PTR) offset += sizeof(APTR);
          else if (field->Type & ARG_STRING) offset += sizeof(STRING);
          else if (field->Type & ARG_DOUBLE) offset += sizeof(DOUBLE);
          else DPrintF("@SetUnlistedField:","[Action] Bad argument definition
    found for action \"%s\", argument \"%s\"", Self->Call, field->Name);

          field++;
          if (offset >= size) break;
       }

       /*** If we got to the end of the list, then the argument does not exist
    ***/

       if (!field->Name) DPrintF("@SetUnlistedField:","[Action] Unknown argument
    \"%s\" for action \"%s\".", Field, Self->Call);
       else Self->ArgsSet = TRUE;

       return(ERR_Okay);
    }

    /*****************************************************************************
    ** Action: NewObject
    */

    static ERROR ACTION_NewObject(struct Action *Self, APTR Void)
    {
       Self->Static = FALSE;
       return(ERR_Okay);
    }

    /*****************************************************************************

    ###FIELD###
    Name: Call
    Short: Set this field to specify the action that you want to call.
    Type: STRING
    Status: Read/Write

    ###DESCRIPTION###
    <p>This field (or the method field) must be set to determine the action that
    will be executed or monitored by an action object. A list of valid action
    names are provided in the manual describing the available system
    actions.</p>

    ###NOTE###
    <p>It is vital that the correct arguments are provided with the action that
    you are going to call - failure to set the arguments can give unpredictable
    results.</p>

    ###SEE ALSO###
    Field: Method

    ###END###

    *****************************************************************************/

    static ERROR GET_Call(struct Action *Self, STRING *Value)
    {
       *Value = Self->Call;
       return(ERR_Okay);
    }

    static ERROR SET_Call(struct Action *Self, STRING Value)
    {
       struct MethodArray *MethodTable;
       OBJECTPTR class;
       LONG totalmethods;
       WORD i;

       Self->ActionID = NULL;

       if ((!Value) OR (!*Value)) {
          Self->Call[0] = 0;
          return(ERR_Okay);
       }

       for (i=0; (Value[i]) AND (i < LEN_CALL-1); i++) Self->Call[i] = Value[i];
       Self->Call[i] = 0;

       for (i=1; ActionTable[i].Name; i++) {
          if (StrCompare(ActionTable[i].Name, Self->Call, NULL, STR_MATCHLENGTH)
    IS ERR_Okay) {
             Self->ArgsSize = ActionTable[i].Size;
             Self->ActionID = i;
             Self->Type = TYPE_ACTION;
             return(ERR_Okay);
          }
       }

       /*** Test if the reference is to a method (only possible if we know the
    target object) ***/

       if ((Self->ObjectID) AND (Self->ClassID)) {
          if ((class = FindClass(Self->ClassID, NULL))) {
             if ((GetFields(class, FID_Methods|TPTR, &MethodTable,
                                   FID_TotalMethods|TLONG, &totalmethods,
                                   TAGEND) IS ERR_Okay) AND (MethodTable)) {
                for (i=1; i < totalmethods+1; i++) {
                   if (StrCompare(Value, MethodTable[i].Name, NULL,
    STR_MATCHLENGTH) IS ERR_Okay) {
                      Self->ArgsSize = MethodTable[i].StructureSize;
                      Self->ActionID = MethodTable[i].MethodID;
                      Self->Type = TYPE_METHOD;
                      return(ERR_Okay);
                   }
                }
             }
          }
       }

       /* Consider the setting to be to a customised action if it is not
       ** a valid action or method.
       */

       DPrintF("Set.Call:","[Action:%d] Action \"%s\" not recognised - assuming
    customised.", Self->Head.UniqueID, Self->Call);

       SET_Custom(Self, Value);

       return(ERR_Search);
    }

    /******************************************************************************

    ###FIELD###
    Name: Custom
    Short: The Custom field provides a customised action service.
    Type: STRING

    ###DESCRIPTION###
    <p>The Custom field is used in circumstances where you want to execute a
    custom
    action on an object, or to create a customised action for an
    existing object. When setting the Custom field, you need to provide a
    unique
    name that does not match any of the existing action names (it is recommended
    that you steer clear of using generic terms such as 'Refresh'). If you set
    the Custom field, you must not set it in conjunction with the Method or Call
    fields, or you will lose your definition. Also, you may not pass your own
    arguments via custom actions, although you may set the 'Number' argument
    that accompanies the customised action standard.</p>

    ###END###

    ******************************************************************************/

    static ERROR GET_Custom(struct Action *Self, STRING *Value)
    {
       *Value = Self->Call;
       return(ERR_Okay);
    }

    static ERROR SET_Custom(struct Action *Self, STRING Value)
    {
       WORD i;

       if ((!Value) OR (!*Value)) return(ERR_NoData);

       for (i=0; "Custom"[i]; i++) Self->Call[i] = "Custom"[i];
       Self->Call[i] = 0;

       ((struct acCustom *)(Self->Arguments))->Number = 0;
       ((struct acCustom *)(Self->Arguments))->String = StrClone(Value);
       Self->ArgsSize = sizeof(struct acCustom);
       Self->ArgsSet = TRUE;
       Self->ActionID = AC_Custom;
       Self->Type = TYPE_ACTION;
       return(ERR_Okay);
    }

    /*****************************************************************************

    ###FIELD###
    Name: Error
    Short: Reflects the error code of the last executed action.
    Type: LONG
    Status: Read
    Version: 1.1

    ###DESCRIPTION###
    <p>When an Action object is activated, the Error field will be updated to
    reflect the error code that was returned from that action or method.
    A string describing the error code can be loaded from the
    'system:config/error_messages.cfg' config file.</p>

    ###END###

    *****************************************************************************/

    /*****************************************************************************

    ###FIELD###
    Name: Method
    Short: Set if you want to execute a method rather than an action.
    Type: STRING
    Status: Write

    ###DESCRIPTION###
    <p>If a method should be executed rather than an action, set this field
    to the name of the method that you want to execute. If the method requires
    that a certain number of arguments need to be set, you <i>must also set
    those
    arguments</i> via the unlisted field mechanism, to ensure that the method
    call
    is legal.</p>

    ###SEE ALSO###
    Field: Call

    ###END###

    *****************************************************************************/

    static ERROR SET_Method(struct Action *Self, STRING Method)
    {
       struct MethodArray *MethodTable;
       OBJECTPTR class;
       LONG i, TotalMethods;

       if (!Method) {
          Self->Call[0] = 0;
          return(ERR_Okay);
       }

       for (i=0; (Method[i]) AND (i < sizeof(Self->Call)); i++) Self->Call[i] =
    Method[i];
       Self->Call[i] = 0;

       if (!Self->ObjectID) {
          Self->Type = TYPE_METHOD;
          return(ERR_Okay);
       }

       if (Self->ClassID) {
          if ((class = FindClass(Self->ClassID, NULL))) {
             if ((GetFields(class, FID_Methods|TPTR, &MethodTable,
                                   FID_TotalMethods|TLONG, &TotalMethods,
                                   TAGEND) IS ERR_Okay) AND (MethodTable)) {
                for (i=1; i < TotalMethods+1; i++) {
                   if (StrCompare(Method, MethodTable[i].Name, NULL,
    STR_MATCHLENGTH) IS ERR_Okay) {
                      Self->ArgsSize = MethodTable[i].StructureSize;
                      Self->ActionID = MethodTable[i].MethodID;
                      Self->Type = TYPE_METHOD;
                      return(ERR_Okay);
                   }
                }
                DPrintF("@Set.Method:","[Action] Could not find method \"%s\"
    from %d methods in class %d.", Method, TotalMethods, Self->ClassID);
                return(ERR_Search);
             }
             else {
                DPrintF("@Set.Method:","[Action] Object #%d does not support any
    methods (class %d).", Self->ObjectID, Self->ClassID);
                return(ERR_NoMethods);
             }
          }
          else return(ObjectError(Self, ERH_SetField, ERR_Search));
       }
       else return(ERR_Okay);
    }

    /*****************************************************************************

    ###FIELD###
    Name: Monitor
    Short: If you want to monitor an object for activity, set this field.
    Type: OBJECTID
    Status: Read/Write

    ###DESCRIPTION###
    <p>By setting the Monitor field to an existing ObjectID, your action object
    will only react when the monitored object completes a specific action.
    Because monitoring requires that the action object is static, setting the
    Monitor field will automatically ensure that the action object is not
    freed during script execution.</p>

    <p>In the following example, action monitoring is used to react to an
    object when it is freed:</p>

    <pre>
       &lt;action monitor="[myobject]" call="free"/&gt;
          &lt;action static call="hide" object="[{name}]"/&gt;
       &lt/action&gt;
    </pre>

    <p>The action is only reported if it succeeds on execution. If you want to
    enable reporting of failed actions, you need to set the ACCEPTERRORS
    flag.</p>

    ###SEE ALSO###
    Field: Call, Object

    ###END###

    *****************************************************************************/

    static ERROR GET_Monitor(struct Action *Self, OBJECTID *ObjectID)
    {
       *ObjectID = Self->ObjectID;
       return(ERR_Okay);
    }

    static ERROR SET_Monitor(struct Action *Self, OBJECTID *ObjectID)
    {
       Self->Monitor = TRUE;
       Self->Static = TRUE;
       Self->ObjectID = *ObjectID;
       Self->ClassID = GetClassID(Self->ObjectID);
       Self->ObjectReference[0] = 0;
       return(ERR_Okay);
    }

    /*****************************************************************************

    ###FIELD###
    Name: Object
    Short: Refers to the object that will receive the action.
    Type: STRING/OBJECTID
    Status: Read/Write

    ###DESCRIPTION###
    <p>The object that is to receive the action call must be specified in this
    field. You are required to set this field unless you intend to use action
    monitoring, in which case you should set the Monitor field.</p>

    <p>If you set this field with a string, the object reference will be
    translated to an ID in run-time.</p>

    ###SEE ALSO###
    Fields: Call, Monitor

    ###END###

    *****************************************************************************/

    static ERROR GET_Object(struct Action *Self, struct Variable *Value)
    {
       BYTE buffer[200];

       if (Value->Type & FD_LARGE) {
          if (Self->ObjectReference[0]) {
             if (StrCopy(Self->ObjectReference, buffer, sizeof(buffer)) <
    sizeof(buffer)) {
                if (StrTranslate(buffer, sizeof(buffer), NULL) IS ERR_Okay) {
                   Value->Large = StrToInt(buffer);
                }
                else Value->Large = StrToInt(Self->ObjectReference);
             }
             else return(ObjectError(Self, ERH_SetField, ERR_BufferOverflow));
          }
          else Value->Large = Self->ObjectID;
          return(ERR_Okay);
       }
       else return(ObjectError(Self, ERH_GetField, ERR_FieldTypeMismatch));
    }

    static ERROR SET_Object(struct Action *Self, struct Variable *Value)
    {
       BYTE buffer[200];
       LONG i;

       if (Value->Type & FD_LARGE) {
          Self->ObjectID = (OBJECTID)Value->Large;
          Self->ClassID = GetClassID(Self->ObjectID);
          Self->ObjectReference[0] = 0;
          return(ERR_Okay);
       }
       else if (Value->Type & FD_STRING) {
          if ((!Value->Pointer) OR (!((STRING)Value->Pointer)[0]))
    return(ERR_Okay);

          for (i=0; (((STRING)Value->Pointer)[i]) AND
    (((STRING)Value->Pointer)[i] != '['); i++);

          if (((STRING)Value->Pointer)[i] IS '[') {
             if (StrCopy(Value->Pointer, Self->ObjectReference,
    LEN_OBJECTREFERENCE) < LEN_OBJECTREFERENCE) {
                if (StrCopy(Self->ObjectReference, buffer, sizeof(buffer)) <
    sizeof(buffer)) {
                   if (StrTranslate(buffer, sizeof(buffer), NULL) IS ERR_Okay)
    Self->ObjectID = (OBJECTID)StrToInt(buffer);
                   else Self->ObjectID =
    (OBJECTID)StrToInt(Self->ObjectReference);
                   Self->ClassID = GetClassID(Self->ObjectID);
                   return(ERR_Okay);
                }
                else return(ObjectError(Self, ERH_SetField,
    ERR_BufferOverflow));
             }
             else return(ObjectError(Self, ERH_SetField, ERR_BufferOverflow));
          }
          else {
             FastFindObject(Value->Pointer, NULL, &Self->ObjectID, 1, NULL);
             Self->ClassID = GetClassID(Self->ObjectID);
             return(ERR_Okay);
          }
       }
       else return(ObjectError(Self, ERH_SetField, ERR_FieldTypeMismatch));
    }

    /*****************************************************************************

    ###FIELD###
    Name: Static
    Short: Set to TRUE if the Action should be static.
    Type: BOOLEAN
    Status: Read/Write

    ###DESCRIPTION###
    <p>By default, an Action object will execute itself and then self-destruct
    when the closing tag is received. If you would rather that the object stays
    in the system, set this field to TRUE. If you do this, the only way to get
    the Action object to perform is to call the Activate() action.</p>

    ###END###

    *****************************************************************************/

    I am basing my engine on the Pandora engine but into this I'm wanting to add
    the ggi libs, add the x network transparency, and a hotplugging module
    system that would allow the user to add plugins just by using the
    installation package. I never began that part but the code would look
    something like this from edesktop enviroment:

    // generated by Fast Light User Interface Designer (fluid) version 2,0003

    #include "einstaller.h"
    // Installer for EDE is (C) Copyright 2001-2002 by Martin Pekar, this
    program is provided under the terms of GNU GPL v.2, see file COPYING for
    more information.
    #include <efltk/Fl_File_Dialog.h>
    #include "einstall.h"
    #include <edeconf.h>

    static Fl_Text_Buffer *out_buffer;

    static Fl_Window* install_window;

    #include <efltk/Fl_Image.h>

    #include <efltk/Fl_Images.h>
    static const char *datas_install[] = {
      /* columns rows colors chars-per-pixel */
      "120 260 224 2",
      " c Gray0",
      ". c #0f0f3f3f0f0f",
      "X c #0f0f37372f2f",
      "o c #202018180f0f",
      "O c #20201f1f1f1f",
      "+ c #2f2f28281010",
      "@ c #2f2f28281f1f",
      "# c #3f3f37371f1f",
      "$ c #2f2f27272020",
      "% c #2f2f2f2f2f2f",
      "& c #202037372f2f",
      "* c #202038383030",
      "= c #20203f3f3f3f",
      "- c #30302f2f2f2f",
      "; c #303037372f2f",
      ": c #3f3f37372f2f",
      "> c #3f3f37373030",
      ", c #000017174040",
      "< c #00001f1f4040",
      "1 c #00001f1f4f4f",
      "2 c #00001f1f5050",
      "3 c #00001f1f5f5f",
      "4 c #000000007f7f",
      "5 c #00001f1f6060",
      "6 c #00001f1f6f6f",
      "7 c #00001f1f7f7f",
      "8 c #000028285f5f",
      "9 c #0f0f37374040",
      "0 c #000027276f6f",
      "q c #000028286060",
      "w c #000028286f6f",
      "e c #000027277070",
      "r c #000028287070",
      "t c #00002f2f7070",
      "y c #00003f3f7f7f",
      "u c #20203f3f5050",
      "i c #0f0f67670000",
      "p c #0f0f68681f1f",
      "a c #2f2f4f4f1010",
      "s c #3f3f40403030",
      "d c #2f2f68680000",
      "f c #2f2f6f6f1010",
      "g c #0f0f58584f4f",
      "h c #000050505f5f",
      "j c #101048484040",
      "k c #0f0f60605f5f",
      "l c #000068686060",
      "z c #0f0f68686060",
      "x c #000067677070",
      "c c #000070706060",
      "v c #000070706f6f",
      "b c #000070707070",
      "n c #000078787070",
      "m c #00007f7f7f7f",
      "M c #2f2f48484040",
      "N c #2f2f50504f4f",
      "B c #2f2f57575f5f",
      "V c #202060604040",
      "C c #2f2f68686060",
      "Z c #303070707070",
      "A c #4f4f38382020",
      "S c #404048481010",
      "D c #4f4f48482020",
      "F c #4f4f40403030",
      "G c #4f4f47473f3f",
      "H c #5f5f47472f2f",
      "J c #4f4f60601f1f",
      "K c #707048481f1f",
      "L c #6f6f68681f1f",
      "P c #4f4f48484040",
      "I c #4f4f50504040",
      "U c #4f4f50504f4f",
      "Y c #4f4f58584f4f",
      "T c #5f5f57574f4f",
      "R c #50505f5f5f5f",
      "E c #4f4f70707070",
      "W c #6f6f67674f4f",
      "Q c #6f6f67675f5f",
      "! c #6f6f6f6f6f6f",
      "~ c #707070706060",
      "^ c #707070706f6f",
      "/ c #707078786f6f",
      "( c #707078787070",
      ") c Gray50",
      "_ c #00001f1f8f8f",
      "` c #00000f0fa0a0",
      "' c #00001717a0a0",
      "] c #00001717afaf",
      "[ c #00001f1fafaf",
      "{ c #000027278080",
      "} c #000027278f8f",
      "| c #00002f2f8080",
      " . c #00002f2f8f8f",
      ".. c #000027279090",
      "X. c #00002f2f9090",
      "o. c #00002f2f9f9f",
      "O. c #0f0f37379090",
      "+. c #00002727afaf",
      "@. c #00002f2fa0a0",
      "#. c #00002f2fafaf",
      "$. c #00002f2fb0b0",
      "%. c #00003737a0a0",
      "&. c #00003737b0b0",
      "*. c #00003737bfbf",
      "=. c #00002f2fd0d0",
      "-. c #00004f4f9f9f",
      ";. c #1f1f58589f9f",
      ":. c #00004040a0a0",
      ">. c #00004040bfbf",
      ",. c #00004848bfbf",
      "<. c #00005858afaf",
      "1. c #000078788080",
      "2. c #00004747c0c0",
      "3. c #00004040cfcf",
      "4. c #00005050c0c0",
      "5. c #00005858c0c0",
      "6. c #00005858cfcf",
      "7. c #00004848e0e0",
      "8. c #00005050e0e0",
      "9. c #00005757ffff",
      "0. c #00006060cfcf",
      "q. c #10106060cfcf",
      "w. c #00006060ffff",
      "e. c #00006f6ff0f0",
      "r. c #0f0f6868f0f0",
      "t. c #1f1f6f6fffff",
      "y. c #3f3f7070cfcf",
      "u. c #4f4f68689090",
      "i. c #0000bfbf0000",
      "p. c #202088881010",
      "a. c #1f1f90906060",
      "s. c #0000a0a04040",
      "d. c #2f2fc7c72020",
      "f. c #1f1fd0d04f4f",
      "g. c #5f5f88881f1f",
      "h. c #6060a0a01010",
      "j. c #505090906f6f",
      "k. c #6060cfcf2020",
      "l. c #4040dfdf6f6f",
      "z. c #000080808080",
      "x. c #0000bfbfbfbf",
      "c. c #3f3f90909090",
      "v. c #20208f8fdfdf",
      "b. c #707090909090",
      "n. c #70709090afaf",
      "m. c #50509797c0c0",
      "M. c #6f6f9f9fcfcf",
      "N. c #6060f0f0a0a0",
      "B. c #bfbf00000000",
      "V. c #a0a038381010",
      "C. c #90906f6f1f1f",
      "Z. c #9f9f70704f4f",
      "A. c #808078786f6f",
      "S. c #8f8f78786060",
      "D. c #909088883f3f",
      "F. c #8f8fb8b81010",
      "G. c #9090b8b83f3f",
      "H. c #bfbfbfbf0000",
      "J. c #8f8f80806f6f",
      "K. c #808080807070",
      "L. c #8f8f87877070",
      "P. c #bfbf98984040",
      "I. c #afaf88886060",
      "U. c #afaf98986f6f",
      "Y. c #c0c0a7a77070",
      "T. c #c0c0d8d82f2f",
      "R. c Yellow",
      "E. c #dfdfdfdf4f4f",
      "W. c #808087878080",
      "Q. c #8f8f88888f8f",
      "!. c #8f8f90908f8f",
      "~. c #909088888080",
      "^. c #909090908080",
      "/. c #9f9f90908f8f",
      "(. c #9f9f98988f8f",
      "). c #9f9f98989090",
      "_. c #9f9f98989f9f",
      "`. c #80809f9fa0a0",
      "'. c #8f8fa0a0b0b0",
      "]. c #a0a098989090",
      "[. c #a0a0a7a79f9f",
      "{. c #afafa8a89f9f",
      "}. c #bfbfafaf9090",
      "|. c #a0a0a8a8afaf",
      " X c #afafa8a8a0a0",
      ".X c #a0a0b7b7afaf",
      "XX c #b0b0afafa0a0",
      "oX c #b0b0b0b0afaf",
      "OX c #bfbfb7b7afaf",
      "+X c #b0b0b8b8bfbf",
      "@X c #bfbfb8b8b0b0",
      "#X c Gray75",
      "$X c #80809797f0f0",
      "%X c #8080a7a7cfcf",
      "&X c #9f9fb7b7c0c0",
      "*X c #b0b0b8b8cfcf",
      "=X c #a0a0afaff0f0",
      "-X c #9090cfcfcfcf",
      ";X c #9090f0f0efef",
      ":X c #afafc8c8d0d0",
      ">X c #b0b0c7c7c0c0",
      ",X c #a0a0c8c8efef",
      "<X c #b0b0cfcff0f0",
      "1X c #b0b0f0f0ffff",
      "2X c #c0c0b8b8b0b0",
      "3X c #e0e0b0b0efef",
      "4X c #c0c0c7c7bfbf",
      "5X c #cfcfc7c7b0b0",
      "6X c #dfdfdfdfd0d0",
      "7X c #c0c0dfdfefef",
      "8X c #d0d0d0d0e0e0",
      "9X c #cfcfe8e8efef",
      "0X c #dfdfe7e7efef",
      "qX c #d0d0e8e8ffff",
      "wX c #d0d0f8f8ffff",
      "eX c #dfdff8f8ffff",
      "rX c #e0e0dfdfcfcf",
      "tX c #ffffd8d8ffff",
      "yX c #e0e0e0e0dfdf",
      "uX c #efefe8e8e0e0",
      "iX c #efeff0f0ffff",
      "pX c #f0f0efefefef",
      "aX c #f0f0f7f7efef",
      "sX c Gray100",
      /* pixels */
      ") ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
    ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
    ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
    ) ) ) ) ) ) ) ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m V M k z z z z z z z k k z z z z v v c z
    k k c v z v v v v n n n m n n m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    L.oX2X2X2X2X2X2X4X#X|.)././././././.).).)./././.!.!.!.!.K.) ) ) ) E E E E C
    C N z z z z z k k k z z z z z z z z z z k k k z z k k z g k z j j k v v l m
    m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    #X4XsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX;
    O * G s s s > j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX;
    ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    aX5X6X6X5X5X5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX;
    ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    pX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX;
    ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    pX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX;
    ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    pX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX;
    ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z
    pX5X6X6X6X6X|.`.`.`.`.'.+X+X+X+X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX-
    ; s s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z pX6X6X6X6X4 , , 4 4 4 , , 4 4 4 5 5 4
    2 5 5 5 5 5 5 y ;.B B B
    ;.;.u.u.n.n.n.n.|.+X+X+X+X+X+X+X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XuX% ; s
    s s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z aX6X6X6X6X4 , 5 4 4 4 4 4 4 4 4 4 4 4
    4 4 4 , , , , , , , , , , , , , , , , , , 2 2 2 , , , 2 3 2 2 2 3 q q w
    u.6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m
    m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 6 ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 , , , , q
    6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 7 ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` q
    6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , _ ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q
    6X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 4 ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q
    6X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 4 ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q
    6X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , 4 ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 q
    6X6X6X6X6X6X6X6X6XuX% ; s s s s s s = m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 4 0
    5X6X6X6X6X6X6X6X6XuX% ; s s s s s s = m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6
    5X6X6X6X6X6X6X6X6XuX% ; s s s s s s = m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6
    5X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX4X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6
    5X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m Z sX5X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 6
    5X6X6X6X6X6X6X6X6XuX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0
    5X6X6X6X6X6X6X6X6XuX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0
    5X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0
    5X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ` ` ` ` ` ` ` ` ` ` ` `
    ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` 0
    5X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ' ' ' ' ' ' ' ' ' ' ' '
    ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 0
    4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 , ' ' ' ' ] ' ] ' ' ' ' ]
    ' ' ' ' ' ] ' ' ] ] ' ' ] ' ] ' ' ' ] ' ] ' ' ' ] ' ] ' ' ] ' ' ' ] ' ] 0
    4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C aX6X6X6X6X4 , [ [ [ [ [ [ [ [ [ [ [ [
    [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ 0
    4X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C aX5X6X6X6X4 , [ [ [ [ [ [ [ [ [ [ [
    +.o.X.#.#.#.#.#.#.#.+.+.[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ t
    4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C aX4X6X6X6X4 ,
    +.+.+.+.+.+.+.+.+.+.+.X.y
    .X.X.X.#.#.$.#.#.#.+.+.+.+.+.+.+.+.+.+.+.+.+.+.t 4X6X6X6X6X6X6X6X6XpX% ; s s
    s s s s j m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C pX5X6X6X6X4 ,
    +.+.$.$.$.$.$.+.+.+.$.;. m.M.M.M.m.m.m.u.;.;.y
    &.$.+.$.$.+.$.+.+.+.+.+.+.+.t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C uX5X6X6X6X4 ,
    $.$.$.$.$.$.$.$.$.$.&.q. &X&X&X&X&X&X&X&X%X%XM.M.M.M.M.M.M.M.M.m.
    ;.&.$.$.$.$.$.$.$.$.$.$.$.$.t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C uX6X4X6X6X4 ,
    $.$.$.$.$.$.$.$.$.$.>.q. +X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X+X&X
    ;.>.$.$.$.$.$.$.$.$.$.$.$.$.t 4X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C yX6X4X6X6X4 ,
    &.&.&.&.&.&.&.&.&.&.>.q. +X+X&X&X&X>X>X>X>X>X+X+X+X+X+X+X+X+X+X&X
    ;.>.&.&.&.&.&.&.&.&.&.&.&.&.t >X6X6X6X6X6X6X6X6XpX% ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 ,
    *.&.*.*.&.*.&.&.*.&.,.q. +X+X-Xu.;.;.u.m.m.n.%X:X9X9X7X:X-X>X+X&X
    ;.,.&.*.&.*.&.&.*.&.&.*.&.*.t >X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X5X6X6X4 2
    >.>.>.>.>.>.>.>.>.>.,.q. +X>X-X%Xn.m.m.u.;.;.u.sXsXsXsXsXsX>X+X&X
    ;.,.>.>.>.>.>.>.>.>.>.>.>.>.t >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X5X6X6X4 2
    >.>.>.>.>.>.>.>.>.>.,.q. +X&X-X-X-X-X-X-X-X-X-X:X:X7X9XsXsXsX+X&X
    ;.,.>.>.>.>.>.>.>.>.>.>.>.>.t >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 ,
    ,.,.,.,.,.,.,.,.,.,.,.q. M.M.M.M.%X%X-X-X-X-X-X-X-X-X-X-X-X>X+X-X
    ;.,.,.,.,.,.,.,.,.,.,.,.,.,.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    2.,.2.,.2.2.2.,.2.,.,.6. q.q.y.y.m.M.M.M.M.M.M.M.M.M.M.%X-X-X-X%X
    ;.6.2.,.2.,.2.2.,.2.2.2.2.2.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    4.4.4.4.4.4.4.4.4.4.4.4. y y ;.;.;.q.q.y.y.y.m.M.M.M.M.
    ;.6.4.4.4.4.4.4.4.4.4.4.4.4.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s g m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.4.5.<. y y ;.;.;.
    <.5.4.4.4.4.4.4.4.4.4.4.4.4.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s g m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.5.<.
    5.5.5.5.5.5.5.5.5.5.5.5.5.5.y >X6X6X6X6X6X6X6X6XpX@ ; s s s s s s g m m m m
    m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    6.5.6.6.6.6.6.6.6.6.6.5.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.5.6.6.6.6.6.6.6.6.6.6.6.6.y
    >X6X6X6X6X6X6X6X6XpX@ ; s s s s s : k m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    *X6X6X6X6X6X6X6X6XpX$ ; s s s s s ; k m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 2
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s * m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m B sX6X4X6X6X4 2
    5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s & m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m k sX6X4X6X6X4 2
    5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X4X6X6X4 5
    5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 5
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    *X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 5
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    +X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4
    %.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    +X>X6X6X6X6X6X6X6XpX@ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 4 y
    0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.y
    +X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX6X6X6X6X4 4 4 4 4
    <.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.y
    &X6X6X6X6X6X6X6X6XpX% ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX5X6X6X6X6Xn.'.u.;.4 4 4 4 4 4 4
    <.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.q
    6X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C sX5X6X6X6X6X6X6X6X6X6X+X&X&X&Xu.;.4 4
    4 4 4 4 4 <.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.q
    6X6X6X6X6X6X6X6X6XpX$ ; s s s s s s j m m m m m m m m m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C
    sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X>X+X&X&Xn.;.4 4 4 4 4 4 4
    <.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.q 6X6X6X6X6X6X6X6X6XpX$ ; s
    s s s s s j n z j k m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C
    sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X>X+X&Xn.u.4 4 4 4 4 4 4
    <.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.5.q 6X6X6X6X6X6X6X6X6XpX% ; s s s s > ; * *
    = k * z m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C
    sX4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X>X&X'.u.4
    4 4 4 4 4 4 5.0.0.0.0.0.0.0.0.0.q 6X6X6X6X6X6X6X6X6XpX$ ; > ; ; % ; * W
    U.U.U.z = m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m C
    sX5X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X>X+X'.b.4
    4 4 4 4 4 4 5.0.<.y 6X6X6X6X6X6X6X6X@X).$ % ; * W I.U.U.U.U.U.U.U.= k m m m
    m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m z
    sX#X4X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X>X.X'.4
    4 4 4 6X6X6X6X2X!.R > s s W S.U.U.U.U.U.U.U.U.U.U.U.U.* n m m m m m m m m m
    m m m m m m m n m m m ",
      ") m m m m m m m m m m m m m m m m z
    aX#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X#X).Q
    > > G W S.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.j k m m m m m m m m m m m m m v k
    * * n m m ",
      ") m m m m m m m m m m m m m m m m m n v v z C
    `.#X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X5X[.^
    G > G T S.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.* v m m m m m m m m m n
    k = * M N M m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m n v v z z Z
    |.#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XR
    > I T S.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.k m m m m m m n
    k * * D D D D ; v m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m n v v z z Z
    _.oX#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X|.~
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.v m m m m n k *
    ; D D F D D D M m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n v z z
    I
    [.#X#X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6XS.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Z.W
    I.sXsX5Xn & g G D D D D D D D D * v m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m E
    I > % % - ; L.OX#X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X~
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.I.W I.5XsXaXZ.D # D D D D D D D
    D D D D D = m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m g B
    I U U U I s o o o $ Q #X#X#X#X#X6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X+X~
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.Z.W Y.sXsXsX}.# D D D D D D D D D D D
    D D O j m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z l P I
    I I I I I I G U P > @ O o o o o O #X#X#X#X#X#X6X6X6X6X6X6X6X6X6X6XW.T
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.U.I.Z.U.rXsXsXsXsXsX# D D D D D D D D D D : $ o
          = m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m j C Q R R
    T U I I I I G I I P G G > ; % $ O o o o o O #X#X#X#X#X6X6X6X6X6X6XW D
    U.U.U.U.U.U.U.U.U.U.U.U.Z.D.}.sXsXsXsXsXsXsXI.D D D D D D D D D D o o
        = m m m m m ",
      ") m m m m m m m m z N N j j N N z n n n n m m m m m m m m m z l E ) / ^ !
    Q R R T U I G I I I P G G > ; % % @ O O o o o o o o o #X#X#X#X#X6X6XW H
    U.U.U.U.U.U.U.U.I.Z.Y.yXsXsXsXsXsXsXsXsXsXo D D D D D D D #
      = m m m m m ",
      ") m m m m m m n Y Y Q ~ (.[.[.~.!./.L./ E E C C z m m m m g n ).!.Q.W.)
    K.( ^ ! ! Q R T U U I I I P G s > ; % % @ @ O O O o o o o O O O o o o
    #X#X#XY # U.U.U.U.U.Z.I.OXsXsXsXsXsXsXsXsXsXsXsXW D D D D D D
        & Z c.M m m m m m ",
      ") m m m m m m v oXyXpXaXuXyX6XoX/.~ T T ~ (.].XXZ m m k v `.oX|.
    X[._./.!.Q.W.) ) / ^ ! T R R T U I I P G s > ; ; % % % % @ @ @ @ @ % % % ; ;
    ; ; $ % ; # U.I.I.}.aXsXsXsXsXsXsXsXsXsXsXsXsXyXo D D D #
    A OX+XsXsXR m m m m m ",
      ") m m m m m m v oX~ G I ~ ~.OXuXsXsXpXyXL.XXZ j j z.4X4X4X+X@XoXXX
    X_._.).!.Q.W.) K.^ Q ! ! Q R R T U P P G G s > > ; ; ; ; ; ; ; ; > s s G G P
    I G W # H ^.6XuXsXsXsXsXsXsXsXsXsXsXsXsXD D D
    Z.sXsXsX:XsXsXR m m m m m ",
      ") m m m m m m k @X~ {.~.! o $
    2X6X6X6X6X5X5X#X2X@X@XoX|. X[._./.!.Q.K.! ( / ^ ! Q R R T U I P P G G G G G
    G G G G G G P P I I I s U.S.W D D : # D H W S.OXuXsXsXsX}.o
        A }.sXsXsXsXsX7XsXsXR m m m m m ",
      ") m m m m m m k 5XI OXO o
    !.6X6X6X6X6X6X6X6X6X6X4X4X4X2X@XoXXX X[._.).!.) ) ) K.( ^ ! ! Q R R T U I I
    I I I I I I I I I I I P G : U.U.U.U.U.U.U.S.S.W W D : # D o
        W sXsXsXsXsXsXsXsX7XsXsXR m m m m m ",
      ") m m m m m m k 6XF o s
    2X6X6X6X6X6X6X6X6X6X6X6X6X6X6X5X5X#X2X@X@XoX|. X[./.W.K.W.W.) ) / ^ ! Q R R
    T U I I I I I I I I P G G P F U.U.U.U.U.U.U.U.U.U.U.U.U.U.~
    @ Y.sXsXsXsXsXsXsXsXsXsX9XsXsXR m m m m m ",
      ") m m m m m m z 6XG o ~
    yXsXsXsXsX6X6X6X6X6X6X6X6X6X6X6X6X6X6X6X4X4X4X2X@XoXXX X[./.W.K.) K.K.( ^ !
    ! ! Q R T U I P G G G G P I I F U.U.U.U.U.U.U.U.U.U.U.U.U.U.W H
    aXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXR m m m m m ",
      ") m m m m m m k 6XO O ) ~ W.)
    !.|.sXsXsXsXsXsXsX6X6X6X6X6X6X6X6X6X6X6X5X5X#X2X@X@XoX X X[./.Q.W.) / ^ ! Q
    Q R R R R T U I I I I I F U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    Z.sXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXC m m m m m ",
      ") m m m m m m k yX O / / / / / / )
    W.Q./.W._._.sXsXsXsXsXsXsX6X6X6X6X6X6X6X6X4X4X4X+X@XoXXX X_._.).!.Q.W.) K.(
    ^ ! ! Q R R T U I F U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    rXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ",
      ") m m m m m m k pX O / / / / / / / / / / / / / /
    W.Q.!.!.{.oXsXsXsXsXsXsXsXsX6X6X6X5X5X#X2X@X@XoX X X[._./.!.Q.W.) ) / ^ ! Q
    R R G U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ",
      ") m m m m m m k aX O / / / / / / / / / / / / / / / /
    / ~.L.~.) W.!.!.Q._._.|.sXsXsXsXsX#X#X#X#X4X+X@XoXXX X_._.).!.Q.W.) K.( ^ !
    I U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ",
      ") m m m m m m g aX O / / / / / / / / / / / / / / / /
    / L.^./.K./ / / / / / ^ W.Q.!.!.!._._.sXsX#X#X#X#X#X#X#XoX|. X[._./.!.Q.W.)
    T U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ",
      ") m m m m m m j aX O / / / / / / / / / / / / / / / /
    / K.L.(.L./ / / / / / / / / / / / / ~ W.Q.!.!.W.)
    Q.sXsX#X#X#X#X#X#X_._.).!.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0XsXsXN m m m m m ",
      ") m m m m m m k rX O / / / / / / / / / / / / / / / /
    / ) L.(.~./ / / / / / / / / / / / / / / / / / / / ~ ) Q.!.!.( ( (
    sX#X#X#X#XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXN m m m m m ",
      ") m m m m m m j {. O / / / / / / / / / / / / / / / /
    / / L.^.(.L./ / / / / / / / / / / / / / / / / / / / / / / / / / ~ ) Q.!._.^
    P U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsXN m m m m m ",
      ") m m m m m m j XX O / / / / / / / / / / / / / / / /
    / / ) L.(./.L./ / / / / / / / / / / / / / / / / / ~ ~ ~ / / / / / / / / / ~
    : U.U.U.U.U.U.U.U.U.U.U.U.U.U.W
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ",
      ") m m m m m m j ^. O A./ / / / / / / / / / / / / / /
    / / / K.L.(.(.L.A./ / / / / / / / / / / / / / / |.|.|.|._.!.W./ ~ ~ ~ ~ / /
    ; U.U.U.U.U.U.U.U.U.U.U.U.U.U.D
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ",
      ") m m m m m m N J. O K.K.K.K.K.) A.A.A./ / / / / / /
    / / / / L.^.^.(.^.L.A./ / / / / / / / / / / / ~
    |.|.|.|.|.|.|.|.|.|.|.|._.Q.s U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ",
      ") m m m m m m N 5XuX6XXX~ I % O W.W.W.W.W.L.L.L.K.K.K.K.) ) )
    A./ / / / / K.~.L.^.(.^.L.A./ / / / / / / / / / /
    |.|.|.|.|.|.|.|.|.|.|.|.|.|.P U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ",
      ") m m m m m m N 4X4X4X5X5X6XyXaXsX6X].T O
    !.!.Q.~.~.~.~.W.W.W.W.W.W.L.L.L.K.K.K.K.) ) K.L.~.L.^.(.^.L.) / / / / / / /
    / / K.W.[.|.|.|.|.|.|.|.|.|.|.|.P U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaXsXsX= m m m m m ",
      ") m m m m m m N 5X6X6X5X4X4X5X].~ OX6X_.O
    )./././././.!.!.!.!.Q.~.~.~.~.W.W.W.W.W.W.L.L.L.L.W./.^.(.^.^.~.L.L.L.K.A./
    / / / / / / ~ ~ ~ ~ W.Q._.|.|.|.P U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX= m m m m m ",
      ") m m m m m m B oXoX2XOX4X4X[.O % o OX!.O
    ].].].].].).).).)./././././.!.!.!.!.Q.~.~.~.~.W.W.W.W.~.(.].].^.^.^.^././.^.~.~.L.L.L.K.A./
    / / / / / ~ ~ ~ ; U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX= m m m m m ",
      ") m m m m m m C 2XT ~ 2X4X4X^.@ s @ /.!.$
    [.[.[.[.[.[.[.[.].].].].].).).).)./././././.!.!.!.!.Q.~.Q./.(.].].].(.(.(.(.^.(.(.(.(.(./.^.~.~.W.L.L.K.A./
    % U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXiX= m m m m m ",
      ") m m m m m v C 5X4X4X4X4X4X5X; @ ; 5X!.O (.[.oXXX X X
    X[.[.[.[.[.[.[.[.[.].].].].].).).).)././././././././././.(.(.(.(.(.(.^.(.^.^.^.(.(.].].(.(./.^.;
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m m n z z E `..X4X4X5XyXOXyX6X_.O J.Q T W ~ L.^.].[.XXXX X X X
    X[.[.[.[.[.[.[.[.[.].].].].].).).).)././././././././././.(.(.(.(./.^./.(.^.^.(.:
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m m m m m k v j j j * Y ) !.Q : ; @XOXOXOX[./.~.S.W T W
    S.~.(.].oXXXXXXX X X X
    X[.[.[.[.[.[.[.[.[.].].].].].).).).)./././././././././.(.(.(.(.:
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m m m n C z.4X4XOX).W.R G $ % ; G R ( ). XXXoXoXoXoXOXXX[./.J.~ W
    T Q A./.].[.oXXXXXXXXX X X X
    X[.[.[.[.[.[.[.[.[.].].].].].).).).)./././././.s
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.@
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m m m B C 4X4X4X4X4X4X4X4X4X@X[.) Q G % @ ; I Y ) ).
    XoXoXoXoXoXOX@X[.]./.A.Q T W ~ J./.[. XoXXXXXXXXXXX X X X
    X[.[.[.[.[.[.[.[.[.].].].].].).T U.U.U.U.U.U.U.U.U.U.U.U.U.U.+
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m m v P @X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X XW.! P ; O ; P R ) `.
    XoXoXoXoXoXoXOXOX[.].~.S.W T W S.~./.[.OXoXoXXXXXXXXXXX X X X
    X[.[.[.[.[.[.[.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.+
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m m N ) 4X4X4X4X5X6X6X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X[.Q.! P ; O
    ; G R ( !.[.oXoXoXoXoXoXOXOXXX[./.L.~ W T W A./.].[.OXoXoXXXXXXXXXXXXX X X
    XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.+
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXaX= m m m m m ",
      ") m m m m v R 4X4X4XJ.~ XXW
    6X4X4X4X5X6X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X XQ.Q I ; O ; G R ( !.[.
    XoXoXoXoXoXoXOXOX{.]./.A.Q T W ~ J./.].XXOXoXoXoXXXT
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ @
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m m m m B !.4X4X4X].T @ 2X5XXX/.2XOX
    uX5X6X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X#XoX~.Q P - O @ G R (
    !.[.|.oXoXoXoXoXoXOXOXOX[.].^.A.W T W ~ ~./.T U.U.U.U.U.U.U.U.U.U.U.U.U.U.+
          @ sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m m m z R 4X4X4X4X4X5X6X6X4X4X[.F o Q T J.L.
    6X6X6XL.5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X@X~.Q G % O O ; Y (
    !._.|.@XOXoXoXoXoXoXOXOXXX[./.L.F U.U.U.U.U.U.U.U.U.U.U.U.U.U.+ @
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m m m Y !.4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X~.Q ~ - Q 5XyXuXT
    [.4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X2XQ.Q F @ O O @ G R
    !._..X4X@XOXoXoXoXoXG U.U.U.U.U.U.U.U.U.U.U.U.U.U.+
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m m z R b.4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X[.T ].o o
    5X5X5X6XyX~./.4X4X5X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X6X4X~.Q F $ O O O - Y
    ! '.+X4XI U.U.U.U.U.U.U.U.U.U.U.U.U.U.o
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m m U !.b.4X4X6X6XyX~ 5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X5X6X6X2X{.5X5X
    : L.2XuX~.o 6X4X5X6X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X~.Q T @ O O O
    # U.U.U.U.U.U.U.U.U.U.U.U.U.U.o
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m z R b.#X4XXX - T
    5X4X5X6X6X[.5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X[.~.J. A.J.XX^.
    uX6X6XXX5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X^.F
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.o
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX0X= m m m m m ",
      ") m U _.+X4X4X4X5X[.G {.5X5X P A.
    XXyXuXJ.[.4X4X5X5X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6XuX].Q @ ~ - ~ W
    6X4X5X5X6X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4XT
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.o
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX8X= m m m m m ",
      ") z R .X4X4X4X4X4X4X5X5X4X5XXX~.P ~ O - L.2XuXJ.:
    6X5X5X6X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X5X[.J.o {.5XXX@ J.(.
    6X6X6X/.2X4X4X4X4X4X4X4X4X4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ",
      ") U X4X4X+X4X4X4X5X6X6X[.5X5X6X6X6X6X6X].(.A. A.J.XX~
    6X4X4X4X5X6X5X4X4X4X4X4X4X4X4X4X4X4X5X5X5X4X2X~.Q ~ - Q
    (.yXuXJ./.5X4X5X5X4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ",
      ") R @X4X4X+X4X4XXX T T 6XyXuXT XX4X5X6X6X6X6XyXuX].T @ {.5XXX/.5XOX
    uX5X6X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X6X].Q L.@ o A.[.pX~ o
    4X4X4X4XT U.U.U.U.U.U.U.U.U.U.U.U.U.U.
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ",
      ") oX4X4X4X@X5X6X5XOX~.F {. O ].5XpX- J.6X5X6X6X5X5X6X6X5X4XXX- o Q
    T J.L. 6X6X6X/.5X4X4X5X4X4X4X4X4X4X4X4X4X4X4X5X5X6X6X2X].L.@
    2X4X4X5X6XG U.U.U.U.U.U.U.U.U.U.U.U.U.U.
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX:X= m m m m m ",
      ") .X4X4X4X.XJ.L. 5X6X6X6XyX6X].5XT J.L.XXo
    5X4X5X4X5X6X5X6X6XyX4X~.T ~ - Q XXyXuXQ
    [.4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6X6X6X4X4X4X~ #
    U.U.U.U.U.U.U.U.U.U.U.U.U.U.
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXc.* z m m m m ",
      ") Z .X4X4X.XQ o J.5X4XA.~.2XuXaX~ ~.yXyXuX/.T % 6X5X(./.6XJ.
    yX6X6X5X5X5X6X6X6X6X].T ^.o o
    OX5X5X6XyX/./.4X4X4X5X4X4X4X4X4X4X4X4X4X4X4X4X4X5X6XF
    U.U.U.U.U.U.U.U.U.U.U.U.U.U. o sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsX&XN
    k m m m m m ",
      ") B b.4X4X.X6X6X5X4X4XA.G o o OX4X5X6XyXyXuXyX5X5X].: A.I L.~
    pX6XyX~.6X4X5X6X6X6X6XOX].5X5Xo F A.2XuX(.o
    6X5X5X6X5X4X4X4X4X4X4X4X4X4X4XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. @
    sXsXsXsXsXsXsXsXsXsXsXsXsXsXsXsXC * z m m m m m m ",
      ") U c.'.`.z.6X6X6X4X4X5X6X6X6X2X].5X4X[. @ Q ~.2X6X6X6XyXuXuX4X~.T A.
    ; : 5XyXuX: XX4X4X4X5X5X5X6X6X{.J.L. ~ J.XX^.
    uX6X6XXX5X4X4X4X4X4X4XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. @
    sXsXsXsXsXsXsXsXsXsXsXsXsXsX@X* M n m m m m m m m ",
      ") n U U U B G : T ~.6X6X6X6X6X5X5X4X4X4X6X[.L.G o :
    J.[.6XyXyXuXuXyX5X].T [.o 6X5X6X6XuX~ [.4X5X6X6X6X6XyXuX[.W @ ~ - ~
    Q 6X4X4X4X4X5X6XF U.U.U.U.U.U.U.U.U.U.U.U.U.U. #
    sXsXsXsXsXsXsXsXsXsXsXsXsX! * k m m m m m m m m m ",
      ") m n z C C P * M N N G s s A.[.6X6X6X6X5X5X5X6X6X6X5X/.~ @ @ Q
    ~.2XyXuXuXyXyXpXOX5X5X5X - (.5XpXW T 6X5X6X6X5X5X6XyX6X].J.o {.5X4X4X~
    [.aX I U.U.U.U.U.U.U.U.U.U.U.U.U.U. W sXsXsXsXsXsXsXsXsXsXsXuXk * z
    m m m m m m m m m m ",
      ") m m m m m m m m m n z * = N N T G : T L.6X6X6X6X6X5X5X5X6X6X6X[.L.G o
    o : J.[.pX J.4X4X6X6X^.{.Q J.L.XXQ uX6X6X[.5X4X5X6X4X4X4X2XG @
    !.U.U.U.U.U.U.U.U.U.U.U.U.U.U. W sXsXsXsXsXsXsXsXsXsX5X= = n m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m k & = M M N T F P
    A.XX6X6X6X6X5X5X5X6X6X6X5X/.~ % yX4X4X5X6XyXyXyXyXuXaX].T % ~ F A.%
    6X4X4X4X4X5X6X5X5X6X6X6X) U.U.U.U.U.U.U.U.U.U.U.U.U.U. W
    sXsXsXsXsXsXsXsXsX).* k m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m n z & M N M T P F W
    L.6X6X6X6X6X5X5X5X6X6X6X4X4X4Xo o : J.[.yXJ. yX6X6X5X].J. 6X5X4XOXS.[.yX
      4X4X4X4X4X) U.U.U.U.U.U.U.U.U.U.U.U.U.U. D sXsXsXsXsXsXsXsXk * z m
    m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m n k & * M N F T P P ~
    XX6X6X6X6X5X4X4X4X6X6XOX/.~ @ {.4X4X4X5X6XuXyX6X4X5X5XT @ F
    6X4X4X4X4X) U.U.U.U.U.U.U.U.U.U.U.U.U.U. # sXsXsXsXsXsXyXM = n m m m
    m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z & & M M
    s P T F W L.5X6X6X6X6X5X5X5X6X6X6X5X4X4X4X(. : J.].6XaX
    6X6X6X5X4X4X4X4X4XR U.U.U.U.U.U.U.U.U.U.U.U.U.U.o # sXsXsXsXsX@X* j n
    m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    n z X * M M F T T T ~ XX6X6X6X6X5X4X4X4X4X5X2X/.~ @
    6X4X4X4X4X4X4X4X@X! U.U.U.U.U.U.U.U.U.U.U.U.U.U.o # sXsXsXsXE * z m m
    m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m n z X & * M s P T P W
    L.5X6X6X6X5X5X5X5X6X6X6X6X4X4X4X4X4X4X4X5X^.M U.U.U.U.U.U.U.U.U.U.U.U.U.U.o
          # sXsXaXj * v m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m n z & X * M M F T T I ~
    [.6X6X6X6X5X4X4X4X4X4X4X4X4X].A.= U.U.U.U.U.U.U.U.U.U.U.U.U.U.o #
    sX6X* M n m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m n z X X = M > P T P T L.2X6X6X6X5X4X4X5X(.*
    k U.U.U.U.U.U.U.U.U.U.U.U.U.U. # _.* k m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m n z & X = M > F T T T ~ ].5XL.~ v
    k N z S.I.U.U.U.U.U.U.U.U.U.U. M * v m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m n z & X X = > F P J.v n
    z j = * * M N ~ U.U.U.U.U.U.U. $ = n m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m z z X l v m
    m m m m v k M * * = T ~ U.U.U. o * g m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n m m
    m m m m m m m m v k j * * = T O * k m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m n z j = v m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n v c
    c c v n m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m c g V c
    <.z.r.q.e.e.0.a.p.p p k c m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m n c f
    k.d.z.9.9.8.6.8.6.6.,.6.7.q.W J p.p.a.g v n m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m a.b.b.b.n.n.%X%X=X<X:Xc.c.m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m k
    k.x.9.9.7.9.9.8.7.7.7.7.6.3.3.3.3.3.7.7.q.C.d z p.g n k.n m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m
    a.f.f.f.j.b.b.n.n.n.%X$X=XqXsXsX7X-Xm.m m m m m m m m m m m m m m m m m m m
    m m m m V F.c.0.9.9.9.9.9.8.8.7.7.q.Z C 5.e.7.7.2.2.2.2.3.2.O.:.c g._ E j.m
    m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m
    a.f.f.f.f.f.j.b.`.n.n.%X$X=X<XiXsXsXsXtXtXc.m m m m m m m m m m m m m m m m
    m m m l D.k.z.w.w.w.w.9.w.9.9.9.9.w.G.V.V.V.V.A ;.,.3.3.;.3.,.2.z %.-.g.J C
    m m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m
    N.l.f.f.f.f.f.j.b.`.n.n.%X$X<XqXsXsXsXtXtXtX8Xc.m m m m m m m m m m m m m m
    m m V P.m x.9.r.w.w.9.9.9.9.9.r.C.G T.B.V.B.B.B.B.V.&.3.D.e 2.>.>.;.p p p.J
    j m m m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m
    c.;X;XN.N.f.f.f.f.f.j.b.b.n.n.$X=XqXsXsXsXtXtXtXtXiX:Xm.m m m m m m m m m m
    m m 1.u.T.F.b.9.r.r.r.r.9.9.9.r.e.! j.B u.y ;.Z.V.V.V.B.< 7.3.3.2.2.>.*.-.h
    *.p.L o.b m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m
    c.1X1X;X;XN.l.f.f.f.f.j.b.n.n.%X=X<XsXsXsXtXtXtXtXiXeXwX1Xm m m m m m m m m
    m x r.J C.T.b.r.r.w.9.9.9.r.z.0.0.c.j.B 9.7.7.8.q.Z C.V.o
    8.2.2.>.>.>.>.%.&.:.$.#.J #.l m m m m m m m m m m m m m m m m m m m m m m m
    ",
      ") m m m m m m m m m m m m m m
    ,XwX1X1X1X;XN.N.f.f.f.f.j.`.n.n.$X<XsXsXsXtXtXtXtXeXwXwX1X;Xc.m m m m m m m
    x N.j.T.d.k.9.e.x.9.r.r.r.c.0.q.e.c.c.G.h.D.E 7.7.8.Z C.V.$
    7.2.2.>.>.&.%.#.@.@.@.Y S | k m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m n
    sXeXwXwX1X1X;X;XN.l.f.f.f.j.b.n.%X=XiXsXsXtXtXtXiXeXwX1X;X;XN.N.m m m m m x
    b.q.2.c.q.v.q.R.k.m.9.w.9.j.k.d.0.c.6.n z ;.V g.U 3.7.3.u.P y
    2.2.>.>.&.%.%.@.@.o.o.G S Y k m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m X
    sXiXiXeXwXwX1X1X;X;Xl.f.f.f.b.b.n.$X7XsXsXtXtXtXeXwX1X;X;XN.N.N.l.m m m x
    r.9.9.r.r.r.j.k.D.C.H.l.k.l.v.a.p.n
    a.k.j.g.9.q.d.D.:.2.2.2.3.3.>.>.>.>.&.%.%.@.o.o...' V 8 K l m m m m m m m m
    m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m j
    sXiXiXiXiXeXwXwX1X1X;XN.f.f.f.b.n.%X<XsXsXtXtXiXwX1X1X;XN.N.l.l.l.a.a.n
    9.9.9.w.e.w.d.k.G.G.E.P.k.k.F.T.E.k.k.d.F.g.j.-.<.8.,.2.6.3.2.2.*.>.*.*.&.&.#.%.%.%.o.
    .} } _ D L v m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m v
    sXsXsXsXiXiXiXeXeXwX1X;XN.l.f.a.`.n.=XsXsXtXtXeXwX1X;XN.N.l.l.a.a.a.a.;.9.w.w.r.e.c.T.D.P.P.P.P.Z.k.G.T.E.T.k.d.d.<.r.q.q.F.g.O.G.s
    7.=.2.&.&.&.$.#.#.@.@.O. . .} { { | K J m m m m m m m m m m m m m m m m m m
    m ",
      ") m m m m m m m m m m m m m v
    _.sXsXsXsXsXsXiXiXiXeXwX1X;XN.f.f.b.%XqXsXtXtXwX1X;XN.l.l.a.a.a.a.V V V
    6.r.w.r.e.v.c.y.u.Z.P.P.Z.G.F.k.G.T.G.k.p.9.8.8.7.a.h.h.g.H.g.g.V
    3.>.%.%.@.@.@.@.o.O. .} { { { y J V m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m v
    0XsXsXsXsXsXsXsXsXsXiXiXeXwX1XN.f.a.'.<XsXtXeX1XN.N.l.a.a.a.V V V V V V B
    r.t.t.v.v.t.t.t.B P.P.D.E.T.k.T.E.T.G.p.9.9.8.8.7.j.F.F.C.C.C.a y
    -.*.%.:.@.@.o.o.o. . .{ { e } L d l m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m n o
    sXsXsXsXsXsXsXsXsXsXsXsXiXiXwX1Xl.a.$XsXtX1XN.l.a.a.a.V V V V V N N N N B
    9.9.9.r.t.t.t.t.I.P.P.E.G.F.E.E.T.G.k.d.d.;.z.7.k.h.F.C.C.& o.j.d y
    >.o.o.o.o.o. . .} { 7 7 { h d f m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m g |.eXeXiXiXiXsXsXsXsXsXsXsXsXsXsXsXN.g
    u.qXN.a.V V V N N N N N N N N N N N
    ;.r.r.t.t.t.v.v.U.Z.P.E.E.E.E.E.G.G.k.k.d.d.p.:.c.h.F.C.9 E
    =.:.*.&.:.O.o.o..... . .{ | 7 7 { ..f g.g m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m v = 7X*X:X:X:X:X:X:X:X7X7X7XqXqXeXiXc.z.z.x
    X N = = u u u u u u u B u B B B B r.r.t.t.t.t.v.~
    E.Y.P.P.E.E.E.h.k.k.G.G.h.p.p.k.h.h.h.W g.h V >.o.@.@.@.o..... . .{ { e 6 7
    { h J f m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m . P
    &X'.'.'.'.'.'.'.'.'.'.'.'.'.'.&Xz.z.z.z.* qX'.b.u.E E E B B B B B B B B B
    t.t.t.t.v.v.m.Z.P.Z.C.E.E.E.E.h.k.T.G.h.g.h.h.h.h.a D.i k ..%.@.@.o.......}
    . .{ e 7 7 7 { @.d J g m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m N
    `.'.'.'.'.'.'.'.'.'.'.&X&X:X7XiX7Xz.z.z.z.iXsXsXsXsXiX7X,X&X'.n.b.u.u.u.E
    u.t.t.t.v.v.m.( P.I.Z.E.E.T.E.E.h.G.T.a p.G.g.h.d g.C.7 *.%.o.o.o.o.....} }
    } | { e 6 7 7 { } y d f n m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m l $
    &X'.'.'.'.'.&X&X&X:X:X7XeXiXsXsX9X<X,X9XsX<X=X8XsXsXsXsXsXsXiXqX<X,X&X%Xn.t.t.t.v.v.v.b.P.E.I.C.P.E.P.T.g.E.g.E.f
    h.i G.p G.J q :.o.o.o....... .} { } | e e 7 7 7 { { @.p J c m m m m m m m m
    m m m m m m ",
      ") m m m m m m m m m m m m m m m m m g O
    &X&X&X&X&X:X:X:X7XqXeXsXsXsXsXsXeX9XeXsXsXeX=X=X<XiXsXsXsXsXsXsXsXsXiXqX$Xt.t.v.t.v.G.g.E.Y.Z.C.P.P.P.G.F.h.g.g.h.g.p.T.L
    X *.O.o.o.o.....} } } { { | e 0 e e e e } } .d j m m m m m m m m m m m m m
    m ",
      ") m m m m m m m m m m m m m m m m m m , U
    &X:X:X:X:X7X7XeXiXiXsXsXsXsXiXeXqX9XeXsXsXsXqX=X=X=X7XiXsXsXsXsXsXsXsX<Xt.t.v.t.M.P.Y.I.K
    I.K C.C.P.G.G.h.g.g.h.p.g.D.i h #.o...o.....} } } { { { r r 0 e e { { } |
    o.p J m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m n
    `.:X:X7X7XqXeXiXsXsXsXsXsXsXiXeXqXqXwXiXsXsXsXiX7X=X=X=X<XqXsXsXsXsXsXsXt.t.t.t.m.P.Z.P.P.Y.C.Z.C.C.D.h.h.p.g.g.g.d
    Y.i y o. .......} } } { { { e e r r r e | { } .} @.g.c m m m m m m m m m m
    m m m ",
      ") m m m m m m m m m m m m m m m m m m m l
    7X7XqXeXeXiXsXsXsXsXsXsXsXiXeXeXqX9XeXiXsXsXsXsXqX<X=X=X=X=X7XqXsXsXsXt.t.t.t..XP.C.Z.K
    K Z.W C.C.D.h.g.g.p.p.g.h.H i g o...} ....{ { { { { e e r r r r | | } { } }
    ..O.h m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m l !
    iXeXiXsXsXsXsXsXsXsXsXiXiXeXqXwXwXeXiXsXsXsXsXiXqX<X=X=X=X=X<XqXiXt.t.t.t.u.G.Z.Z.Z.Z.Z.Z.K
    K D.h.g.G.i p.g.D.. i | ..} } } } { { { e e e r w r | | | | | } } } } ..y m
    m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m n o
    sXsXsXsXsXsXsXsXsXsXiXiXeXqXqX9XwXeXiXsXsXsXsXsXeX7X<X=X=X=X=X<Xt.t.t.t.t.G.T
    W Z.K P.K K K C.g.g.f p.p.f d i 9 o. .{ } } { { 7 e e e w w w r | | | | | |
    } } ..} y m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m g
    iXsXsXsXsXsXsXsXsXiXiXeXqXqXqX9XeXeXiXsXsXsXsXsXiXqX7X<X=X=X=Xr.t.t.t.t.j.P.D.Z.K
    Z.K K K L g.p.i i p.p.i i .. .{ } { { { 7 7 7 6 0 w w r r | | | | | | .}
    .} @.m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m h * $
    sXsXsXsXsXsXsXiXiXeXqXqXqX9XwXeXeXiXsXsXsXsXsXsXeXqX<X<X=X8.8.t.t.8.t.;.f
    G.D.K W S K C.g.p.p.p.p j 9 h p o.| { e 7 7 7 6 6 6 w w w r | O.O.O.| | | |
    .} } &.m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m . M
    sXsXsXsXsXsXiXiXeXeXqXqXqXwXwXeXiXiXsXsXsXsXsXsXiXqX7X=X8.8.8.8.8.8.t.J
    j.P.C.C.K C.D.J p.9 q q o.O.@.p j } 7 7 7 6 6 6 6 5 q q w | | | O.O.O.| | |
    . ...*.n m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m 9 o
    *X9XsXsXsXiXiXeXeXqXqXqX9XwXeXeXiXiXsXsXsXsXsXsXsXeXy.8.8.8.8.8.8.8.u.6.G.W
    K C.K f i 9 %.O. .| { | ..2 t 0 0 6 5 6 5 5 q 5 q w r | | O.O.O.O.O.O.| .
    .*.v m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m n , =
    sXsXiXiXeXeXqXqXqXwX9XwXeXeXiXiXsXsXsXsXsXsX7X8.8.8.8.8.6.6.2.6.g.-.P.A K K
    S i y . .{ | | { { k h y e 6 5 8 3 q q 8 q w r | | O.O.O.O.X.X.X. . .*.v m
    m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m c . M )
    9XeXiXeXeXqXqXqX9XwXwXeXeXiXsXsXsXsXsXiX8.8.8.8.2.2.2.2.2.2.-.B x C.A H K d
    0 { .e | } e j 3 8 9 X 0 Y < 5 3 q q q q w | | O.O.| O.X.X.X. ...*.v m m m
    m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m b z *
    j.'.7XeXeXwXqX9X9XwXwXeXiXiXsXsXsX,X3.3.3.3.2.2.2.2.2.2.>.>.z O.;.K A K S 8
    } { .h p 6 7 e 6 0 8 q 3 5 3 3 q 8 r q | | | O.O.O.O.X.X. .....*.n m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n m
    u.j.|.`.8XwXwXwXwXwXeXeXiX7XR u.3.3.2.2.2.2.2.2.2.>.>.>.>.>. .&.;.K A + a }
    | _ p . 7 e 3 5 w 3 3 3 2 2 2 5 q q r r O.| | O.| O.X. . ...o.*.m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m.Z -Xu.n.n.u.u.u z q.3.3.3.2.3.*.2.2.*.2.*.>.>.%.%.%.-.o.;.K K H A X
    y g d . 6 0 e q 3 3 2 2 8 q 8 8 * p j y y V y O.| | X.X.o. .o.&.m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m O.2.2.3.3.3.3.3.*.*.*.*.*.*.*.*.&.&.&.%.%.%.O.O.X. .{ , S H #
    S K S * D.S X 5 2 2 2 5 & J + . i J f d f J d y O.X.O.g y o.o. .m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m y *.*.*.*.*.*.*.*.*.*.*.*.*.&.&.&.%.%.%.@.O.O. . .X. .} 7 5 ,
    6 5 $ + + + . 5 2 2 3 f . U . p.A L + a J J d h g p p.f S +.@.y m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m l 3.*.*.*.*.*.*.*.*.*.*.&.$.&.%.%.@.%.@.o.o. .X.{ .| e e e 0
    5 3 5 5 3 9 + 1 2 9 j a F . . g.A # a a f J a p p.i f C.& @.$.l m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m b 3.*.&.*.*.&.*.*.&.&.$.$.#.%.#.@.@.o.o.o. . . .{ | t e 0 0 5
    3 3 3 2 2 3 2 $ % 2 & o A . a . f # a f p f i i f J f L } o.3.v m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m %.$.&.&.$.&.$.$.#.#.#.#.#.@.@.@.o.o. . . . .{ { e e 0 q 5 3
    3 2 2 2 1 1 1 1 1 1 2 G # a a . a . i a i p f J f J C.a $.@.*.m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m h #.#.%.#.#.#.#.#.#.@.@.o.@.o.o. . . . .{ { e e 0 0 5 5 3 2
    2 1 1 1 1 1 1 , 1 , q : a a . a i i i i i p J J f L L & $.@.h m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m v &.@.@.#.#.@.@.@.@.@.o.o.o. . . . . .{ { e e 0 0 q q 3 3 2
    1 1 1 1 1 1 , , , 2 E + a . i i i i i i p J J J f K C.j #.*.v m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n n m
    c.c.m.&X0XtX3X3X3X3X<X=Xm.;.;.-.-.@.o.o.o. .....} } } { e e e 0 0 5 5 3 3 2
    2 1 < 1 < < , , , 1 8 W o a a . i i i i i d J J f L L L y #.&.m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m Z Z Z
    u.u.n.$X=X<XiXtXtX3X3X3X<X<X;X;XN.l.l.a.s.k h . .....} } { { { e e e 0 0 5
    5 3 3 2 1 1 < < , < < , 1 1 1 Y + . i i i i i p f J L J J K L S +.$.l m m m
    m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m n Z Z E E
    u.u.u.u.n.$X<XiXtXtX3X3X3X<X;XN.N.l.a.s.p p p X X 9 .} } } { { { e e 0 0 q
    5 3 3 2 2 1 1 , < , < < < 1 1 1 q W o i a a a a f J J J J L L L C.= $.:.m m
    m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m a.s.s.s.s.s.a.Z E E
    u.u.u.M.=X0XtX3X3X3X,X;XN.l.s.p p X X X X 9 9 9 9 q { { { { e e e 6 0 5 5 5
    3 2 2 2 1 , , < < < , < 1 1 2 2 M o # a a a d d f f H i L S C.S #.2.h m m m
    m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m a.f.f.m i.i.i.s.s.s.s.C E
    u.u.u.$X<XtX3X3X1XN.l.s.p j X X X X , , 9 u B E u.%X{ { { e e e 0 0 5 5 3 3
    3 2 1 1 , < < < < < , < 1 1 2 2 q 8 o # J S J d f a d i L g.L #.%.:.m m m m
    m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m m m N.N.N.N.N.l.l.f.f.f.d.i.s.a.E
    u.u.=XtX3X,Xl.p . X = = u B E u.'.*X<XqXeXiXsXsX`.{ e e 7 0 0 6 5 5 3 3 2 2
    1 1 , , < < < < , , 1 1 2 2 3 3 r u + A A + # S g.a g.J C.@.%.3.v m m m m m
    m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m m m.-X;X;X;X;X;X;X;X;X;X;XN.N.l.l.f.f.C
    <X3X%Xa.`.'.%X%X=X<XqXeXiXsXsXsXiXiXiXeXqXqX:X9 e 7 6 6 6 5 5 5 3 3 2 2 2 1
    , , < < < < , , 1 1 2 2 3 3 q 5 r u - A A # o J p.f C.S $.&.y m m m m m m m
    m m m m m m m m m m m ",
      ") m m m m m m m m m m m m %X<X<X<X<X<X<X<X<X<X8X8X8XtXtXiXsXeXE a.j.k 9
    <X=X=X$X$X$X$X$X$X$X$X$X$X$X$X$X$X$X`.B r 6 0 6 6 5 5 5 3 3 2 2 1 1 1 , < <
    < < , < < 1 1 2 2 2 q q w q 0 { O.A A + f p.f L _ %.%.m m m m m m m m m m m
    m m m m m m m m ",
      ") m m m m m m m m m m m
    %XtXtXtXtXiXiXiXiXsXiXiXqX:X'.b.b.'.7XiX&X-X7XwXeXsXiXiXeXqX7X<X<X=X=X=X=X$X$X$X$X`.g
    0 6 6 6 5 5 5 3 3 3 2 2 1 1 < , < < < , , < < 1 1 1 2 3 3 q q q w w | } H +
    a i i d y #.*.n m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m
    -XsXsXiXiXqX:X:X%X`.b.b.b.b.`.&X7XiXiXqX:X:X:X-X:X<X7XwXeXiXiXiXiXiXeXeXqXqXqX%X&Xb.y
    5 5 q 5 5 3 3 3 3 2 2 1 1 1 < < < , , , , < < 1 1 2 2 3 3 3 q r q w r | | A
    o p.i p.p $.*.v m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m
    :X&X'.b.b.b.b.b.b.b.`.'.:X7XeXsXeXeX7X:X:X:X:X-X:X:X7X7X7XwXeXeXiXiXiXiXiX&X`.)
    ;.l 6 3 3 3 3 3 3 3 2 2 2 1 1 < , < , , , < , < < < 1 1 2 3 3 8 q w q w r r
    { u.+ S i i g +.*.l m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m R
    b.u.b.b.b.`.'.&X:X7XqXiXiXiXeXqX7X:X:X:X:X:X-X>X:X:X7X<X7XqXwXeX7X-Xn.! E
    u.m m m l 3 2 2 2 2 2 1 1 1 1 , , < < < < < < 1 < 1 1 1 1 2 2 3 8 8 q q w w
    r r } F D S p.p +.*.l m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m o B
    %X`.'.&X:X:X7XeXiXsXiXeXqX7X7X:X:X:X:X:X:X-X-X:X:X:X<XeXeX'.j.%XC n n m m m
    m m m b 2 2 1 1 1 1 1 , , , , 1 1 1 < 1 1 1 1 1 1 1 2 2 8 8 8 q q w r r r |
    O.A J d j $.*.b m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m n
    7X:X:XqXeXiXsXiXeXeXqX7X7X:X:X:X:X&X&X&X-X-X:XiXeX8XN.%X8Xn m m m m m m m m
    m m m n 1 1 , , , , , , 1 < 1 1 1 1 1 1 1 1 1 2 1 2 8 8 q q q w w r r | ..Y
    S d h $.O.n m m m m m m m m m m m m m m m m m m m m m m m m ",
      ") m m m m m m m m m m m m g 9 . ) :X'.`.`.`.`.b.b.b.b.b.b.'.`.b.E
    `.*X-Xc.%XM.m m m m m m m m m m m m m m m m m h 3 1 , 1 1 1 1 1 1 1 1 1 1 1
    2 2 2 2 2 8 8 8 q q w w r r | | y K K y 2.x m m m m m m m m m m m m m m m m
    m m m m m m m m m m ",
      ") m m m m m m m m m m m m m n l c v 9 , o , m , , * u B u.n n v n n m
    m m m m m m m m m m m m m m m m m m m m m v 1 3 1 1 1 1 1 1 2 2 2 2 2 2 2 2
    2 2 3 8 q q q w w r | | ..N K -.y v m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m h 8 3 2 1 1 2 1 2 2 2 8 2 2 2
    2 8 8 8 q w w w r r | | y S O.l m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m l 8 5 2 2 2 2 2 2 3 8 2 2
    2 2 3 q q q w r r | | O.y l m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m b h 3 6 5 3 3 3 8 8 3
    3 3 3 q q w r | X. .h b m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m b l h 8 8 w w e
    r r e { t q h x v m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m n n
    n n n m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m ",
      ") m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m
    m m m m m m m "
      };

    Fl_Group* steps_group;

    Fl_Group* step1_group;

    Fl_Input* package_name_input;

    static void cb_Browse(Fl_Button*, void*) {
      char *file_types = _("Packages (*.rpm; *.tgz; *.deb), *.{rpm|tgz|deb}, All
    files (*.*), *");
      const char *f = fl_select_file(package_name_input->value(), file_types,
    _("Package selection"));

          if (f) {
              package_name_input->value(f);
          }
    ;}

    Fl_Check_Button* nodeps_button;

    Fl_Group* step2_group;

    Fl_Text_Editor* result_output;

    Fl_ProgressBar* install_progress;

    Fl_Button* prev_button;

    static void cb_prev_button(Fl_Button*, void*) {
      step1_group->show();
      step2_group->hide();
      prev_button->deactivate();
    }

    Fl_Button* next_button;

    static void cb_next_button(Fl_Button*, void*) {
      step1_group->hide();
      step2_group->show();
      prev_button->activate();
      install_package();
    }

    static void cb_Close(Fl_Button*, void*) {
      exit(0);
    }

    int main (int argc, char **argv) {

      Fl_Window* w;
      fl_init_locale_support("einstaller", PREFIX"/share/locale");
      out_buffer = new Fl_Text_Buffer();
       {Fl_Window* o = install_window = new Fl_Window(505, 310, _("Install
    software package"));
        w = o;
         {Fl_Box* o = new Fl_Box(5, 5, 135, 270);
          o->image(Fl_Image::read_xpm(/*"icons/install.xpm"*/0, (const
    char**)datas_install));
          o->box(FL_DOWN_BOX);
          o->color((Fl_Color)0x7d8300);
        }
         {Fl_Group* o = steps_group = new Fl_Group(140, 0, 355, 275);
          o->box(FL_FLAT_BOX);
           {Fl_Group* o = step1_group = new Fl_Group(5, 5, 350, 270);
            o->box(FL_ENGRAVED_BOX);
             {Fl_Input* o = package_name_input = new Fl_Input(10, 132, 250, 23,
    _("Enter the name of software package you want to install:"));
              o->align(133);
              ;
            }
             {Fl_Button* o = new Fl_Button(265, 132, 80, 25, _("&Browse..."));
              o->callback((Fl_Callback*)cb_Browse);
            }
             {Fl_Box* o = new Fl_Box(5, 5, 340, 90, _("Welcome. This
    installation wizard will help you to install new software on yo\
    ur computer."));
              o->label_size(18);
              o->align(133|FL_ALIGN_INSIDE);
              ;
            }
             {Fl_Check_Button* o = nodeps_button = new Fl_Check_Button(7, 165,
    338, 25, _("Ignore dependencies"));
              ;
            }
            o->end();
          }
           {Fl_Group* o = step2_group = new Fl_Group(5, 5, 350, 270);
            o->box(FL_ENGRAVED_BOX);
            o->hide();
             {Fl_Text_Editor* o = result_output = new Fl_Text_Editor(10, 25,
    335, 155, _("Installation results:"));
              o->align(133);
              ;
              o->buffer(out_buffer);
            }
             {Fl_ProgressBar* o = install_progress = new Fl_ProgressBar(10, 215,
    335, 20, _("Installation status:"));
              o->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
              ;
            }
            o->end();
          }
          o->end();
        }
         {Fl_Button* o = prev_button = new Fl_Button(230, 280, 80, 25, _("<<
    &Previous"));
          o->callback((Fl_Callback*)cb_prev_button);
          o->deactivate();
          ;
        }
         {Fl_Button* o = next_button = new Fl_Button(315, 280, 80, 25,
    _("&Install"));
          o->callback((Fl_Callback*)cb_next_button);
          ;
        }
         {Fl_Button* o = new Fl_Button(415, 280, 80, 25, _("&Close"));
          o->callback((Fl_Callback*)cb_Close);
          ;
        }
        ;
        o->end();
      }
      w->show(argc, argv);
      return Fl::run();
    }

    the urls are http://www.hypertextnavigation.com/unixgui.htm
    http://developer.gnome.org/projects/gup/hig/2.0/
    http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/index.html

    As you can plainly see I am working on it. I'm working on providing the gui
    that would be the best that could be created. It would include facilities
    for utilising the whole power of unix, with an easy to understand interface.
      (i'm trying to base it more on the gnome hig, so it's composed of small
    tools, with a minimalistic look and feel that has none of the features
    removed) It will include tools to install modules into the kernel, the
    engines and servers, and apps, it will include tools to manage networking,
    inc dhcp, dns, vnc, tcp/ip, ssh etc. and everything else that a full
    featured gui would need.

    _________________________________________________________________
    Winks & nudges are here - download MSN Messenger 7.0 today!
    http://messenger.msn.co.uk

    _______________________________________________
    freebsd-arch@freebsd.org mailing list
    http://lists.freebsd.org/mailman/listinfo/freebsd-arch
    To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"


  • Next message: Steve Kargl: "Re: Request to mailing list freebsd-arch rejected-gui for unix"
  • Quantcast