home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / cmd / xfe / Microline3.0 / examples / demo.c next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  107.1 KB  |  2,730 lines

  1. /* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
  2.  *
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  *
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  *
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18.  
  19. /*
  20.  * The following source code is part of the Microline Widget Library.
  21.  * The Microline widget library is made available to Mozilla developers
  22.  * under the Netscape Public License (NPL) by Neuron Data.  To learn
  23.  * more about Neuron Data, please visit the Neuron Data Home Page at
  24.  * http://www.neurondata.com.
  25.  */
  26.  
  27.  
  28. #include <XmL/XmL.h>
  29. #include <XmL/Folder.h>
  30. #include <XmL/Grid.h>
  31. #include <XmL/Progress.h>
  32. #include <XmL/Tree.h>
  33.  
  34. #include <Xm/Xm.h>
  35. #include <Xm/DialogS.h>
  36. #include <Xm/Form.h>
  37. #include <Xm/Label.h>
  38. #include <Xm/PushB.h>
  39. #include <Xm/DrawingA.h>
  40. #include <Xm/Text.h>
  41. #include <Xm/ToggleB.h>
  42. #include <Xm/Protocols.h>
  43.  
  44. #include <X11/IntrinsicP.h>
  45. #include <X11/cursorfont.h>
  46.  
  47. #include <stdlib.h>
  48. #include <stdio.h>
  49. #include <unistd.h>
  50.  
  51. static void CreateWidgetEdit();
  52. static Widget AddWidgetSample();
  53. static void CreateText();
  54. static void CreatePixmap();
  55. void AddCoverTabForm();
  56. void AddIntroTabForm();
  57. void AddFolderTabForm();
  58. void AddGridTabForm();
  59. void AddProgTabForm();
  60. void AddTreeTabForm();
  61.  
  62. /*
  63.    Main Window
  64. */
  65.  
  66. static void exitCB();
  67. static void editCB();
  68. static void folderCB();
  69.  
  70. #define BOLDFONT "-*-helvetica-bold-r-*--*-100-*-*-*-*-iso8859-1"
  71.  
  72. main(argc, argv)
  73. int argc;
  74. char *argv[];
  75. {
  76.     XtAppContext context;
  77.     Widget w, shell, form, folder;
  78.     int i;
  79.     XrmDatabase db;
  80.     static String resources[] =
  81.     {
  82.         "*fontList: -*-helvetica-medium-r-*--*-100-*-*-*-*-iso8859-1",
  83.         "*XmText.fontList: -*-helvetica-medium-r-*--*-100-*-*-*-*-iso8859-1",
  84.         "*XmLProgress.fontList: -*-helvetica-bold-r-*--*-100-*-*-*-*-iso8859-1",
  85.         "*background: #D0D0D0",
  86.         "*foreground: black",
  87.         "*topShadowColor: white",
  88.         "*bottomShadowColor: #404040",
  89.         "*XmLGrid.topShadowColor: #F0F0F0",
  90.         "*XmLGrid.selectBackground: #000060",
  91.         "*XmLGrid.selectForeground: white",
  92.         "*XmLProgress.topShadowColor: #E0E0E0",
  93.         "*XmLProgress.bottomShadowColor: #404040",
  94.         "*XmToggleButton.selectColor: blue",
  95.         "*XmToggleButton.marginHeight: 0",
  96.         "*XmToggleButton.spacing: 4",
  97.         "*XmText.marginHeight: 2",
  98.         "*XmForm.marginHeight: 8",
  99.         "*XmForm.marginWidth: 10",
  100.         "*XmForm.horizontalSpacing: 8",
  101.         "*XmForm.verticalSpacing: 10",
  102.         "*XmLabel.marginWidth: 0",
  103.         "*XmLFolder.XmForm.marginHeight: 16",
  104.         "*XmLFolder.XmForm.marginWidth: 16",
  105.         "*XmPushButton.marginHeight: 4",
  106.         "*WidgetEdit*name.foreground: #000060",
  107.         "*WidgetEdit*class.foreground: #000060",
  108.         "*WidgetEdit*XmText.background: white",
  109.         "*XmLTree.blankBackground: white",
  110.         "*XmLTree.selectBackground: #000060",
  111.         "*XmLTree.selectForeground: white",
  112.         "*XmLTree.connectingLineColor: black",
  113.         NULL
  114.     };
  115.  
  116.     shell =  XtVaAppInitialize(&context, "Test", NULL, 0,
  117. #ifdef X11R4
  118.         (Cardinal *)&argc, argv, resources, NULL);
  119. #else
  120.         (int *)&argc, argv, resources, NULL);
  121. #endif
  122.  
  123.     /* Force override of the falback resources.  Normally, we would
  124.        have an app-default file or similar but since this is a demo,
  125.        we don't want the user to have to set anything up to run */
  126.     db = XtDatabase(XtDisplay(shell));
  127.     i = 0;
  128.     while (resources[i])
  129.     {
  130.         XrmPutLineResource(&db, resources[i]);
  131.         i++;
  132.     }
  133.  
  134.     XtVaSetValues(
  135.         shell,
  136.         XmNtitle, "Microline Widget Library",
  137.         NULL);
  138.  
  139.     form = XtVaCreateWidget("form",
  140.         xmFormWidgetClass, shell,
  141.         XmNshadowThickness, 0,
  142.         NULL);
  143.  
  144.     w = XtVaCreateManagedWidget("Exit",
  145.         xmPushButtonWidgetClass, form,
  146.         XmNrightAttachment, XmATTACH_FORM,
  147.         XmNbottomAttachment, XmATTACH_FORM,
  148.         XmNwidth, 100,
  149.         NULL);
  150.     XtAddCallback(w, XmNactivateCallback, exitCB, (XtPointer)shell);
  151.  
  152.     w = XtVaCreateManagedWidget("Editor",
  153.         xmPushButtonWidgetClass, form,
  154.         XmNrightAttachment, XmATTACH_WIDGET,
  155.         XmNrightWidget, w,
  156.         XmNbottomAttachment, XmATTACH_FORM,
  157.         XmNwidth, 100,
  158.         NULL);
  159.     XtAddCallback(w, XmNactivateCallback, editCB, NULL);
  160.     CreateWidgetEdit(form);
  161.  
  162.     folder = XtVaCreateManagedWidget("folder",
  163.         xmlFolderWidgetClass, form,
  164.         XmNtopAttachment, XmATTACH_FORM,
  165.         XmNleftAttachment, XmATTACH_FORM,
  166.         XmNrightAttachment, XmATTACH_FORM,
  167.         XmNbottomAttachment, XmATTACH_WIDGET,
  168.         XmNbottomWidget, w,
  169.         XmNbottomOffset, 5,
  170.         XmNtabsPerRow, 3,
  171.         NULL);
  172.     AddCoverTabForm(folder);
  173.     AddIntroTabForm(folder);
  174.     AddGridTabForm(folder);
  175.     AddTreeTabForm(folder);
  176.     AddFolderTabForm(folder);
  177.     AddProgTabForm(folder);
  178.  
  179.     XtAddCallback(folder, XmNactivateCallback, folderCB, NULL);
  180.  
  181.     XtManageChild(form);
  182.  
  183.     XtRealizeWidget(shell);
  184.     XtAppMainLoop(context);
  185. }
  186.  
  187. static void exitCB(w, clientData, callData)
  188. Widget w;
  189. XtPointer clientData;
  190. XtPointer callData;
  191. {
  192.     Widget shell;
  193.  
  194.     shell = (Widget)clientData;
  195.     exit(0);
  196. }
  197.  
  198. /*
  199.    Widget Editor Functions
  200. */
  201.  
  202. static void _getResourceAsString();
  203. static void _editCB();
  204. static void _editCommandCB();
  205. static void _editChooseCB();
  206. static void _editShowCB();
  207. static void _editCloseCB();
  208. static void _wmCloseCB();
  209.  
  210. Widget _editDialog, _editClassL, _editNameL, _editGrid, _editCommandT;
  211. Widget _editWidget;
  212. Boolean _editShowInherited, _editDialogUp;
  213. int _editRow, _editCol;
  214.  
  215. static void CreateWidgetEdit(parent)
  216. Widget parent;
  217. {
  218.     Widget form, w;
  219.     Widget chooseB, closeB;
  220.     Atom WM_DELETE_WINDOW;
  221.  
  222.     _editWidget = 0;
  223.     _editShowInherited = 0;
  224.     _editDialogUp = False;
  225.  
  226.     _editDialog = XtVaAppCreateShell("WidgetEdit", "WidgetEdit",
  227.         topLevelShellWidgetClass, XtDisplay(parent),
  228.         XtNtitle, "Widget Editor",
  229.         XmNdeleteResponse, XmDO_NOTHING,
  230.         NULL);
  231.  
  232.     WM_DELETE_WINDOW = XmInternAtom(XtDisplay(parent),
  233.         "WM_DELETE_WINDOW", False);
  234.     XmAddWMProtocolCallback(_editDialog, WM_DELETE_WINDOW,
  235.         _wmCloseCB, (XtPointer)_editDialog);
  236.  
  237.     form = XtVaCreateWidget("form",
  238.         xmFormWidgetClass, _editDialog,
  239.         XmNautoUnmanage, False,
  240.         XmNshadowThickness, 0,
  241.         NULL);
  242.  
  243.     /* Top Row */
  244.     w = XtVaCreateManagedWidget("Name:",
  245.         xmLabelWidgetClass, form,
  246.         XmNleftAttachment, XmATTACH_FORM,
  247.         XmNtopAttachment, XmATTACH_FORM,
  248.         NULL);
  249.     _editNameL = XtVaCreateManagedWidget("name",
  250.         xmLabelWidgetClass, form,
  251.         XmNleftAttachment, XmATTACH_WIDGET,
  252.         XmNleftWidget, w,
  253.         XmNtopAttachment, XmATTACH_FORM,
  254.         NULL);
  255.  
  256.     w = XtVaCreateManagedWidget("Class:",
  257.         xmLabelWidgetClass, form,
  258.         XmNleftAttachment, XmATTACH_WIDGET,
  259.         XmNleftWidget, _editNameL,
  260.         XmNtopAttachment, XmATTACH_FORM,
  261.         NULL);
  262.     _editClassL = XtVaCreateManagedWidget("class",
  263.         xmLabelWidgetClass, form,
  264.         XmNleftAttachment, XmATTACH_WIDGET,
  265.         XmNleftWidget, w,
  266.         XmNtopAttachment, XmATTACH_FORM,
  267.         NULL);
  268.  
  269.     w = XtVaCreateManagedWidget("Show All",
  270.         xmToggleButtonWidgetClass, form,
  271.         XmNtopAttachment, XmATTACH_FORM,
  272.         XmNtopOffset, 4,
  273.         XmNrightAttachment, XmATTACH_FORM,
  274.         NULL);
  275.     XtAddCallback(w, XmNvalueChangedCallback, _editShowCB, 0);
  276.  
  277.     _editGrid = XtVaCreateManagedWidget("Grid",
  278.         xmlGridWidgetClass, form,
  279.         XtVaTypedArg, XmNblankBackground, XmRString, "white", 6,
  280.         XmNcolumns, 4,
  281.         XmNsimpleWidths, "16c 18c 24c 16c",
  282.         XmNvisibleColumns, 9,
  283.         XmNheadingRows, 1,
  284.         XmNvsbDisplayPolicy, XmSTATIC,
  285.         XmNsimpleHeadings, "Class|Type|Resource|Value",
  286.         XmNvisibleRows, 8,
  287.         XmNshadowThickness, 0,
  288.         XmNscrollBarMargin, 4,
  289.         XmNselectionPolicy, XmSELECT_NONE,
  290.         XmNallowColumnResize, True,
  291.         XmNtopAttachment, XmATTACH_WIDGET,
  292.         XmNtopWidget, w,
  293.         XmNleftAttachment, XmATTACH_FORM,
  294.         XmNrightAttachment, XmATTACH_FORM,
  295.         NULL);
  296.  
  297.     XtVaSetValues(_editGrid,
  298.         XmNcellDefaults, True,
  299.         XmNcellMarginRight, 2,
  300.         XmNcellAlignment, XmALIGNMENT_LEFT,
  301.         XtVaTypedArg, XmNcellBackground, XmRString, "white", 6,
  302.         XmNcellLeftBorderType, XmBORDER_NONE,
  303.         XmNcellRightBorderType, XmBORDER_NONE,
  304.         XmNcellTopBorderType, XmBORDER_NONE,
  305.         XmNcellBottomBorderType, XmBORDER_NONE,
  306.         NULL);
  307.     XtVaSetValues(_editGrid,
  308.         XmNcellDefaults, True,
  309.         XmNcolumn, 3,
  310.         XmNcellEditable, True,
  311.         NULL);
  312.  
  313.     XtAddCallback(_editGrid, XmNeditCallback, _editCB, 0);
  314.  
  315.     w = XtVaCreateManagedWidget("Command",
  316.         xmLabelWidgetClass, form,
  317.         XmNbottomAttachment, XmATTACH_FORM,
  318.         XmNbottomOffset, 11,
  319.         XmNleftAttachment, XmATTACH_FORM,
  320.         NULL);
  321.     _editCommandT = XtVaCreateManagedWidget("editCommandT",
  322.         xmTextWidgetClass, form,
  323.         XmNbottomAttachment, XmATTACH_FORM,
  324.         XmNleftAttachment, XmATTACH_WIDGET,
  325.         XmNleftWidget, w,
  326.         NULL);
  327.     XtAddCallback(_editCommandT, XmNactivateCallback, _editCommandCB, 0);
  328.  
  329.     /* Bottom Row */
  330.     chooseB = XtVaCreateManagedWidget("Choose",
  331.         xmPushButtonWidgetClass, form,
  332.         XmNbottomAttachment, XmATTACH_FORM,
  333.         XmNmarginWidth, 18,
  334.         NULL);
  335.     XtAddCallback(chooseB, XmNactivateCallback, _editChooseCB, 0);
  336.     closeB = XtVaCreateManagedWidget("Close",
  337.         xmPushButtonWidgetClass, form,
  338.         XmNrightAttachment, XmATTACH_FORM,
  339.         XmNbottomAttachment, XmATTACH_FORM,
  340.         XmNmarginWidth, 24,
  341.         NULL);
  342.     XtAddCallback(closeB, XmNactivateCallback, _editCloseCB, 0);
  343.     XtVaSetValues(chooseB,
  344.         XmNrightAttachment, XmATTACH_WIDGET,
  345.         XmNrightWidget, closeB,
  346.         NULL);
  347.     XtVaSetValues(_editCommandT,
  348.         XmNrightAttachment, XmATTACH_WIDGET,
  349.         XmNrightWidget, chooseB,
  350.         NULL);
  351.     XtVaSetValues(_editGrid,
  352.         XmNbottomAttachment, XmATTACH_WIDGET,
  353.         XmNbottomWidget, closeB,
  354.         NULL);
  355.     XtManageChild(form);
  356. }
  357.  
  358. static void SetEditWidget(w)
  359. Widget w;
  360. {
  361.     WidgetClass wc, superWc;
  362.     XtResourceList resList;
  363.     char className[50], *resName, *resType;
  364.     Cardinal resCount;
  365.     int i, j, n, skip, done, superSize;
  366.     char resVal[50], line[100];
  367.     XmString str;
  368.     char *s;
  369.     static char *skipType[] =
  370.     {
  371.         "Callback",
  372.         0
  373.     };
  374.  
  375.     _editWidget = w;
  376.     if (_editWidget)
  377.         s = XtName(_editWidget);
  378.     else
  379.         s = "none";
  380.     if (s)
  381.     {
  382.         str = XmStringCreateSimple(s);
  383.         XtVaSetValues(_editNameL, XmNlabelString, str, NULL);
  384.         XmStringFree(str);
  385.     }
  386.     if (_editWidget)
  387.     {
  388.         wc = XtClass(_editWidget);
  389.         s = wc->core_class.class_name;
  390.     }
  391.     else
  392.         s = "none";
  393.     if (s)
  394.     {
  395.         str = XmStringCreateSimple(s);
  396.         XtVaSetValues(_editClassL, XmNlabelString, str, NULL);
  397.         XmStringFree(str);
  398.     }
  399.     if (!_editWidget)
  400.     {
  401.         XmLGridDeleteAllRows(_editGrid, XmCONTENT);
  402.         return;
  403.     }
  404.     n = 0;
  405.     done = 0;
  406.     XtVaSetValues(_editGrid, XmNlayoutFrozen, True, NULL);
  407.     XmLGridDeleteAllRows(_editGrid, XmCONTENT);
  408.     while (!done)
  409.     {
  410.         if (!wc)
  411.         {
  412.             wc = XtClass(XtParent(_editWidget));
  413.             XtGetConstraintResourceList(wc, &resList, &resCount);
  414.             sprintf(className, "%s [C]", wc->core_class.class_name);
  415.             superSize = 0;
  416.             done = 1;
  417.         }
  418.         else
  419.         {
  420.             XtGetResourceList(wc, &resList, &resCount);
  421.             sprintf(className, wc->core_class.class_name);
  422.             superWc = wc->core_class.superclass;
  423.             if (superWc)
  424.                 superSize = superWc->core_class.widget_size;
  425.         }
  426.         for (i = 0; i < resCount; i++)
  427.         {
  428.             resName = resList[i].resource_name;
  429.             resType = resList[i].resource_type;
  430.             if (resList[i].resource_offset < superSize)
  431.                 continue;
  432.             skip = 0;
  433.             for (j = 0; skipType[j]; j++)
  434.                 if (!strcmp(skipType[j], resType))
  435.                     skip = 1;
  436.             if (skip)
  437.                 continue;
  438.             _getResourceAsString(resName, resType, resVal);
  439.             sprintf(line, "%s|%s|%s|%s", className, resType, resName, resVal);
  440.             XmLGridAddRows(_editGrid, XmCONTENT, -1, 1);
  441.             XmLGridSetStringsPos(_editGrid, XmCONTENT, n, XmCONTENT, 0, line);
  442.             n++;
  443.         }
  444.         wc = wc->core_class.superclass;
  445.         XtFree((char *)resList);
  446.         if (_editShowInherited == False)
  447.             done = 1;
  448.     }
  449.     XtVaSetValues(_editGrid, XmNlayoutFrozen, False, NULL);
  450. }
  451.  
  452. static void _getResourceAsString(res, type, str)
  453. char *res;
  454. char *type;
  455. char *str;
  456. {
  457.     Boolean bool;
  458.     Dimension dimension;
  459.     int i;
  460.     static char *skipRes[] =
  461.     {
  462.         XmNrowExpands,
  463.         XmNrowIsExpanded,
  464.         XmNrowHeight,
  465.         XmNrowLevel,
  466.         XmNcolumnWidth,
  467.         XmNcellColumnSpan,
  468.         XmNcellEditable,
  469.         XmNcellMarginBottom,
  470.         XmNcellMarginLeft,
  471.         XmNcellMarginRight,
  472.         XmNcellMarginTop,
  473.         XmNcellRowSpan,
  474.         XmNcellToggleSet,
  475.         0
  476.     };
  477.  
  478.     for (i = 0; skipRes[i]; i++)
  479.         if (!strcmp(skipRes[i], res))
  480.         {
  481.             sprintf(str, "");
  482.             return;
  483.         }
  484.     if (!strcmp(type, XmRInt))
  485.     {
  486.         XtVaGetValues(_editWidget, res, &i, NULL);
  487.         sprintf(str, "%d", i);
  488.     }
  489.     else if (!strcmp(type, XmRDimension))
  490.     {
  491.         XtVaGetValues(_editWidget, res, &dimension, NULL);
  492.         sprintf(str, "%d", (int)dimension);
  493.     }
  494.     else if (!strcmp(type, XmRBoolean))
  495.     {
  496.         XtVaGetValues(_editWidget, res, &bool, NULL);
  497.         if (bool == True)
  498.             sprintf(str, "True");
  499.         else
  500.             sprintf(str, "False");
  501.     }
  502.     else
  503.         sprintf(str, "");
  504. }
  505.  
  506. static void _editCB(w, clientData, callData)
  507. Widget w;
  508. XtPointer clientData;
  509. XtPointer callData;
  510. {
  511.     XmLGridCallbackStruct *cbs;
  512.     int resRow, rowType, row, rowEnd, colType, col, colEnd;
  513.     XmLGridRow rowp;
  514.     XmLGridColumn colp;
  515.     XmString resStr, valStr;
  516.     char *s, *resS, *valS;
  517.     static char *emptyValS = "";
  518.  
  519.     cbs = (XmLGridCallbackStruct *)callData;
  520.     if (cbs->reason != XmCR_EDIT_COMPLETE)
  521.         return;
  522.     resRow = cbs->row;
  523.  
  524.     /* get resource and value */
  525.     rowp = XmLGridGetRow(_editGrid, XmCONTENT, resRow);
  526.     colp = XmLGridGetColumn(_editGrid, XmCONTENT, 2);
  527.     XtVaGetValues(_editGrid,
  528.         XmNrowPtr, rowp,
  529.         XmNcolumnPtr, colp,
  530.         XmNcellString, &resStr,
  531.         NULL);
  532.     if (!resStr)
  533.         resS = 0;
  534.     else
  535.         XmStringGetLtoR(resStr, XmSTRING_DEFAULT_CHARSET, &resS);
  536.     colp = XmLGridGetColumn(_editGrid, XmCONTENT, 3);
  537.     XtVaGetValues(_editGrid,
  538.         XmNrowPtr, rowp,
  539.         XmNcolumnPtr, colp,
  540.         XmNcellString, &valStr,
  541.         NULL);
  542.     if (!valStr)
  543.         valS = emptyValS;
  544.     else
  545.         XmStringGetLtoR(valStr, XmSTRING_DEFAULT_CHARSET, &valS);
  546.  
  547.     if (XmLIsGrid(_editWidget))
  548.         XtVaSetValues(_editWidget,
  549.             XmNrow, _editRow,
  550.             XmNcolumn, _editCol,
  551.             XtVaTypedArg, resS,
  552.             XmRString, valS, strlen(valS) + 1,
  553.             NULL);
  554.     else
  555.         XtVaSetValues(_editWidget,
  556.             XtVaTypedArg, resS,
  557.             XmRString, valS, strlen(valS) + 1,
  558.             NULL);
  559.  
  560.     if (resS)
  561.         XtFree(resS);
  562.     if (resStr)
  563.         XmStringFree(resStr);
  564.     if (valS != emptyValS)
  565.         XtFree(valS);
  566.     if (valStr)
  567.         XmStringFree(valStr);
  568. }
  569.  
  570. static void _editCommandCB(w, clientData, callData)
  571. Widget w;
  572. XtPointer clientData;
  573. XtPointer callData;
  574. {
  575.     char op[40], *cmd;
  576.     int *rowPos, *colPos, *newPos;
  577.     int i, l1, l2, l3, l4, n, count;
  578.     XmString str;
  579.  
  580.     cmd = XmTextGetString(_editCommandT);
  581.     if (_editWidget && XmLIsGrid(_editWidget))
  582.     {
  583.         n = sscanf(cmd, "%s %d %d %d %d", op, &l1, &l2, &l3, &l4);
  584.         /* Tree commands */
  585.         if (!strcmp(op, "addTreeRow") && n == 5)
  586.         {
  587.             str = XmStringCreateSimple("New Node");
  588.             XmLTreeAddRow(_editWidget, l1, (Boolean)l2, (Boolean)l3, l4,
  589.                 XmUNSPECIFIED_PIXMAP, XmUNSPECIFIED_PIXMAP, str);
  590.             XmStringFree(str);
  591.         }
  592.         /* Grid commands */
  593.         else if (!strcmp(op, "addHRows") && n == 3)
  594.             XmLGridAddRows(_editWidget, XmHEADING, l1, l2);
  595.         else if (!strcmp(op, "addFRows") && n == 3)
  596.             XmLGridAddRows(_editWidget, XmFOOTER, l1, l2);
  597.         else if (!strcmp(op, "addRows") && n == 3)
  598.             XmLGridAddRows(_editWidget, XmCONTENT, l1, l2);
  599.         else if (!strcmp(op, "addHColumns") && n == 3)
  600.             XmLGridAddColumns(_editWidget, XmHEADING, l1, l2);
  601.         else if (!strcmp(op, "addFColumns") && n == 3)
  602.             XmLGridAddColumns(_editWidget, XmFOOTER, l1, l2);
  603.         else if (!strcmp(op, "addColumns") && n == 3)
  604.             XmLGridAddColumns(_editWidget, XmCONTENT, l1, l2);
  605.         else if (!strcmp(op, "deleteHRows") && n == 3)
  606.             XmLGridDeleteRows(_editWidget, XmHEADING, l1, l2);
  607.         else if (!strcmp(op, "deleteFRows") && n == 3)
  608.             XmLGridDeleteRows(_editWidget, XmFOOTER, l1, l2);
  609.         else if (!strcmp(op, "deleteRows") && n == 3)
  610.             XmLGridDeleteRows(_editWidget, XmCONTENT, l1, l2);
  611.         else if (!strcmp(op, "deleteHColumns") && n == 3)
  612.             XmLGridDeleteColumns(_editWidget, XmHEADING, l1, l2);
  613.         else if (!strcmp(op, "deleteFColumns") && n == 3)
  614.             XmLGridDeleteColumns(_editWidget, XmFOOTER, l1, l2);
  615.         else if (!strcmp(op, "deleteColumns") && n == 3)
  616.             XmLGridDeleteColumns(_editWidget, XmCONTENT, l1, l2);
  617.         else if (!strcmp(op, "copyPos") && n == 3)
  618.             XmLGridCopyPos(_editWidget, CurrentTime, XmCONTENT,
  619.                 l1, XmCONTENT, l2, 3, 3);
  620.         else if (!strcmp(op, "copySelected") && n == 1)
  621.             XmLGridCopySelected(_editWidget, CurrentTime);
  622.         else if (!strcmp(op, "paste") && n == 1)
  623.             XmLGridPaste(_editWidget);
  624.         else if (!strcmp(op, "pastePos") && n == 3)
  625.             XmLGridPastePos(_editWidget, XmCONTENT, l1, XmCONTENT, l2);
  626.         else if (!strcmp(op, "moveColumns") && n == 1)
  627.             XmLGridMoveColumns(_editWidget, 3, 1, 2);
  628.         else if (!strcmp(op, "moveRows") && n == 1)
  629.             XmLGridMoveRows(_editWidget, 3, 1, 2);
  630.         else if (!strcmp(op, "printSelected") && n == 1)
  631.         {
  632.             printf ("--- Current Selections ---\n");
  633.             count = XmLGridGetSelectedRowCount(_editWidget);
  634.             if (count)
  635.             {
  636.                 rowPos = (int *)malloc(sizeof(int) * count);
  637.                 XmLGridGetSelectedRows(_editWidget, rowPos, count);
  638.                 printf ("Selected Rows: ");
  639.                 for (i = 0; i < count; i++)
  640.                     printf ("%d ", rowPos[i]);
  641.                 printf ("\n");
  642.                 free((char *)rowPos);
  643.             }
  644.  
  645.             count = XmLGridGetSelectedColumnCount(_editWidget);
  646.             if (count)
  647.             {
  648.                 colPos = (int *)malloc(sizeof(int) * count);
  649.                 XmLGridGetSelectedColumns(_editWidget, colPos, count);
  650.                 printf ("Selected Columns: ");
  651.                 for (i = 0; i < count; i++)
  652.                     printf ("%d ", colPos[i]);
  653.                 printf ("\n");
  654.                 free((char *)colPos);
  655.             }
  656.  
  657.             count = XmLGridGetSelectedCellCount(_editWidget);
  658.             if (count)
  659.             {
  660.                 colPos = (int *)malloc(sizeof(int) * count);
  661.                 rowPos = (int *)malloc(sizeof(int) * count);
  662.                 XmLGridGetSelectedCells(_editWidget, rowPos, colPos, count);
  663.                 printf ("Selected Cells: ");
  664.                 for (i = 0; i < count; i++)
  665.                     printf ("[%d %d] ", rowPos[i], colPos[i]);
  666.                 printf ("\n");
  667.                 free((char *)colPos);
  668.                 free((char *)rowPos);
  669.             }
  670.         }
  671.         else if (!strcmp(op, "setCell") && n == 3)
  672.         {
  673.             printf ("WidgetEdit: set row %d col %d\n", l1, l2);
  674.             _editRow = l1;
  675.             _editCol = l2;
  676.         }
  677.         else if (!strcmp(op, "reorderColumns") && n == 1)
  678.         {
  679.             XtVaGetValues(_editWidget,
  680.                 XmNcolumns, &count,
  681.                 NULL);
  682.             newPos = (int *)malloc(count * sizeof(int));
  683.             for (i = 0; i < count; i++)
  684.                 newPos[i] = i + 1;
  685.             newPos[count - 1] = 0;
  686.             XmLGridReorderColumns(_editWidget, newPos, 0, count);
  687.             free((char *)newPos);
  688.         }
  689.         else if (!strcmp(op, "reorderRows") && n == 1)
  690.         {
  691.             XtVaGetValues(_editWidget,
  692.                 XmNrows, &count,
  693.                 NULL);
  694.             newPos = (int *)malloc(count * sizeof(int));
  695.             for (i = 0; i < count; i++)
  696.                 newPos[i] = i + 1;
  697.             newPos[count - 1] = 0;
  698.             XmLGridReorderRows(_editWidget, newPos, 0, count);
  699.             free((char *)newPos);
  700.         }
  701.         else if (!strcmp(op, "write") && n == 1)
  702.             XmLGridWrite(_editWidget, stdout, XmFORMAT_DELIMITED, '|', True);
  703.         else if (!strcmp(op, "writeXL") && n == 1)
  704.             XmLGridWrite(_editWidget, stdout, XmFORMAT_XL, 0, True);
  705.         else if (!strcmp(op, "writePAD") && n == 1)
  706.             XmLGridWrite(_editWidget, stdout, XmFORMAT_PAD, 0, True);
  707.         else if (!strcmp(op, "writePos") && n == 3)
  708.             XmLGridWritePos(_editWidget, stdout, XmFORMAT_DELIMITED, '|',
  709.                 True, XmCONTENT, 0, XmCONTENT, 0, l1, l2);
  710.         else
  711.             fprintf(stderr, "WidgetEdit: unknown command %s\n", cmd);
  712.     }
  713.     XtFree(cmd);
  714.     XmTextSetString(_editCommandT, "");
  715. }
  716.  
  717. static void _editChooseCB(w, clientData, callData)
  718. Widget w;
  719. XtPointer clientData;
  720. XtPointer callData;
  721. {
  722.     Cursor cursor;
  723.     Widget editW;
  724.  
  725.     cursor = XCreateFontCursor(XtDisplay(w), XC_hand2);
  726.     editW = XmTrackingLocate(w, cursor, False);
  727.     if (editW)
  728.         SetEditWidget(editW);
  729.     XFreeCursor(XtDisplay(w), cursor);
  730. }
  731.  
  732. static void _editShowCB(w, clientData, callData)
  733. Widget w;
  734. XtPointer clientData;
  735. XtPointer callData;
  736. {
  737.     XmToggleButtonCallbackStruct *cbs;
  738.  
  739.     cbs = (XmToggleButtonCallbackStruct *)callData;
  740.     _editShowInherited = cbs->set;
  741.     SetEditWidget(_editWidget);
  742. }
  743.  
  744. static void _wmCloseCB(w, clientData, callData)
  745. Widget w;
  746. XtPointer clientData;
  747. XtPointer callData;
  748. {
  749.     XtPopdown(XmLShellOfWidget((Widget)clientData));
  750.     _editDialogUp = False;
  751. }
  752.  
  753. static void _editCloseCB(w, clientData, callData)
  754. Widget w;
  755. XtPointer clientData;
  756. XtPointer callData;
  757. {
  758.     XtPopdown(XmLShellOfWidget(w));
  759.     _editDialogUp = False;
  760. }
  761.  
  762. /*
  763.    Callbacks which manipulate the Widget Editor
  764. */
  765.  
  766. static void folderCB(w, clientData, callData)
  767. Widget w;
  768. XtPointer clientData;
  769. XtPointer callData;
  770. {
  771.     XmLFolderCallbackStruct *cbs;
  772.     extern Widget _folder, _grid, _progress, _tree;
  773.  
  774.     cbs = (XmLFolderCallbackStruct *)callData;
  775.     switch (cbs->pos)
  776.     {
  777.     case 2:
  778.         _editWidget = _grid;
  779.         break;
  780.     case 3:
  781.         _editWidget = _tree;
  782.         break;
  783.     case 4:
  784.         _editWidget = _folder;
  785.         break;
  786.     case 5:
  787.         _editWidget = _progress;
  788.         break;
  789.     default:
  790.         _editWidget = 0;
  791.         break;
  792.     }
  793.     if (_editDialogUp == True)
  794.         SetEditWidget(_editWidget);
  795. }
  796.  
  797. static void editCB(w, clientData, callData)
  798. Widget w;
  799. XtPointer clientData;
  800. XtPointer callData;
  801. {
  802.     SetEditWidget(_editWidget);
  803.     XtPopup(_editDialog, XtGrabNone);
  804.     _editDialogUp = True;
  805. }
  806.  
  807. /*
  808.    Utility to add a sample tab and form to a folder, returning the form in
  809.    the sample Folder created.
  810. */
  811.  
  812. static Widget AddWidgetSample(folder, name, desc)
  813. Widget folder;
  814. char *name, *desc;
  815. {
  816.     Widget form, sampleFolder, sampleForm;
  817.     XmString str;
  818.     char buf[20];
  819.     int i;
  820.  
  821.     sprintf(buf, "%s Widget", name);
  822.     str = XmStringCreateSimple(buf);
  823.     form = XmLFolderAddTabForm(folder, str);
  824.     XmStringFree(str);
  825.     sampleFolder = XtVaCreateManagedWidget("sampleFolder",
  826.         xmlFolderWidgetClass, form,
  827.         XmNtabPlacement, XmFOLDER_RIGHT,
  828.         XmNleftAttachment, XmATTACH_FORM,
  829.         XmNtopAttachment, XmATTACH_FORM,
  830.         XmNrightAttachment, XmATTACH_FORM,
  831.         XmNbottomAttachment, XmATTACH_POSITION,
  832.         XmNbottomPosition, 55,
  833.         XmNtabsPerRow, 3,
  834.         NULL);
  835.     for (i = 0; i < 3; i++)
  836.     {
  837.         if (!i)
  838.             sprintf(buf, "%s One", name);
  839.         else if (i == 1)
  840.             sprintf(buf, "%s Two", name);
  841.         else
  842.             sprintf(buf, "%s Three", name);
  843.         str = XmStringCreateSimple(buf);
  844.         XmLFolderAddTab(sampleFolder, str);
  845.         XmStringFree(str);
  846.     }
  847.     sampleForm = XtVaCreateManagedWidget("sampleForm",
  848.         xmFormWidgetClass, sampleFolder,
  849.         NULL);
  850.     CreateText(form, desc, sampleFolder, 1);
  851.     return sampleForm;
  852. }
  853.  
  854. static void CreateText(form, data, topWidget, scrollVert)
  855. Widget form;
  856. char *data;
  857. Widget topWidget;
  858. int scrollVert;
  859. {
  860.     Widget text, sb;
  861.     int n;
  862.     Arg args[20];
  863.  
  864.     XtSetArg(args[0], XmNleftAttachment, XmATTACH_FORM);
  865.     XtSetArg(args[1], XmNrightAttachment, XmATTACH_FORM);
  866.     XtSetArg(args[2], XmNbottomAttachment, XmATTACH_FORM);
  867.     XtSetArg(args[3], XmNwordWrap, True);
  868.     XtSetArg(args[4], XmNscrollHorizontal, False);
  869.     XtSetArg(args[5], XmNeditMode, XmMULTI_LINE_EDIT);
  870.     XtSetArg(args[6], XmNeditable, False);
  871.     XtSetArg(args[7], XmNcursorPositionVisible, False);
  872.     XtSetArg(args[8], XmNhighlightThickness, 0);
  873.     XtSetArg(args[9], XmNtopAttachment, XmATTACH_WIDGET);
  874.     XtSetArg(args[10], XmNtopWidget, topWidget);
  875.     n = 11;
  876.     if (!scrollVert)
  877.     {
  878.         XtSetArg(args[11], XmNscrollVertical, False);
  879.         n = 12;
  880.     }
  881.     text = XmCreateScrolledText(form, "text", args, n);
  882.     XmTextSetString(text, data);
  883.     XtManageChild(text);
  884.     XtVaSetValues(text,
  885.         XtVaTypedArg, XmNbackground, XmRString, "#D0D0D0", 8,
  886.         XtVaTypedArg, XmNforeground, XmRString, "black", 6,
  887.         XmNshadowThickness, 0,
  888.         NULL);
  889.     if (scrollVert)
  890.     {
  891.         XtVaGetValues(XtParent(text),
  892.             XmNverticalScrollBar, &sb,
  893.             NULL);
  894.         XtVaSetValues(sb,
  895.             XmNshadowThickness, 2,
  896.             NULL);
  897.     }
  898. #ifndef MOTIF11
  899.     /* multiple drop site in the same area conflict with one another */
  900.     /* even if they are unmanaged - a Motif bug */
  901.     XmDropSiteUnregister(text);
  902. #endif
  903. }
  904.  
  905. static void CreatePixmap(w, color, pixmap, pixmask, bits, width, height)
  906. Widget w;
  907. int color;
  908. Pixmap *pixmap, *pixmask;
  909. char *bits;
  910. int width, height;
  911. {
  912.     Display *dpy;
  913.     Window root;
  914.     int depth;
  915.     XColor col;
  916.     Pixel black, white, fg, bg;
  917.  
  918.     dpy = XtDisplay(w);
  919.     root = DefaultRootWindow(dpy);
  920.     depth = DefaultDepthOfScreen(XtScreen(w));
  921.     black = BlackPixelOfScreen(XtScreen(w));
  922.     white = WhitePixelOfScreen(XtScreen(w));
  923.     XtVaGetValues(w,
  924.         XmNbackground, &bg,
  925.         NULL);
  926.     col.red = 0;
  927.     col.green = 0;
  928.     col.blue = 0;
  929.     if (color == 0)
  930.         fg = white;
  931.     else if (color == 1)
  932.         fg = black;
  933.     else
  934.     {
  935.         if (color == 2)
  936.             col.green = 40000;
  937.         else if (color == 3)
  938.             col.red = 45000;
  939.         else if (color == 4)
  940.             col.blue = 30000;
  941.         col.flags = DoRed | DoGreen | DoBlue;
  942.         XAllocColor(dpy, DefaultColormapOfScreen(XtScreen(w)), &col);
  943.         fg = col.pixel;
  944.     }
  945.     *pixmap = XCreatePixmapFromBitmapData(dpy, root, bits,
  946.         width, height, fg, bg, depth);
  947.     *pixmask = XCreatePixmapFromBitmapData(dpy, root, bits,
  948.         width, height, 1L, 0L, 1);
  949. }
  950.  
  951. /*
  952.    Cover Tab Form
  953. */
  954.  
  955. #define cover_width 230
  956. #define cover_height 240
  957. static unsigned char cover_bits[] = {
  958.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  959.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  960.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  961.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  962.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,
  963.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  964.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,
  965.     0x00,0x00,0x00,0x00,0x00,0x80,0x07,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  966.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
  967.     0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  968.     0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x03,0x00,0x00,0x00,0x00,
  969.     0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0xff,
  970.     0x01,0x00,0xc0,0x0f,0x00,0x00,0xe0,0x00,0x80,0x03,0x00,0x00,0x3c,0x00,0x00,
  971.     0x00,0x00,0x38,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x80,0xff,0x01,
  972.     0x00,0x30,0x1c,0x00,0x00,0xe0,0x00,0x80,0x01,0x00,0x00,0x3e,0x00,0x00,0x00,
  973.     0x00,0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x60,0xe0,0x01,0x00,
  974.     0x0c,0x38,0x00,0x00,0x20,0x00,0x80,0x01,0x00,0x80,0x01,0x00,0x00,0x00,0x00,
  975.     0x18,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0xe0,0x00,0x00,0x06,
  976.     0x78,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x1c,
  977.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0xd0,0x00,0x00,0x03,0x70,
  978.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,
  979.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xd8,0x00,0x80,0x01,0x70,0x00,
  980.     0x00,0x00,0x00,0xc0,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x0c,0x00,0x00,
  981.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xc8,0x00,0x80,0x01,0x70,0x18,0x08,
  982.     0x30,0xe0,0xc0,0xe0,0x01,0x60,0x00,0x00,0x3c,0x00,0x0f,0x0c,0x1e,0x00,0x00,
  983.     0x00,0xc0,0x00,0x00,0x00,0x00,0x18,0xc4,0x00,0xc0,0x01,0x70,0x1e,0x0e,0x3c,
  984.     0xf0,0xe1,0xf0,0x01,0x70,0x00,0x00,0x7f,0xc0,0x1f,0x0e,0x1f,0x00,0x00,0x00,
  985.     0xc0,0x00,0x00,0x00,0x00,0x38,0xc6,0x00,0xc0,0x00,0xf0,0x0d,0x06,0x1b,0x8c,
  986.     0x61,0x98,0x00,0x70,0x00,0x80,0x79,0x60,0x1e,0x86,0x09,0x00,0x00,0x00,0xc0,
  987.     0x00,0x00,0x00,0x00,0x08,0xc3,0x00,0xe0,0x00,0x70,0x0c,0x06,0x18,0x8e,0x60,
  988.     0x04,0x00,0x30,0x00,0xe0,0x70,0x38,0x1c,0x46,0x00,0x00,0x00,0x00,0xc0,0x00,
  989.     0x00,0x00,0x00,0x00,0xe1,0x00,0xe0,0x00,0x70,0x0e,0x07,0x1c,0x06,0x70,0x03,
  990.     0x00,0x30,0x00,0x60,0x70,0x18,0x1c,0x37,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  991.     0x00,0x00,0x80,0xe1,0x00,0xe0,0x00,0x30,0x06,0x03,0x1c,0x07,0xf0,0x01,0x00,
  992.     0x30,0x00,0x70,0x70,0x1c,0x1c,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  993.     0x00,0xc0,0xff,0x00,0xe0,0x00,0x38,0x06,0x03,0x0c,0x07,0xf0,0x01,0x00,0x38,
  994.     0x00,0x30,0x70,0x0c,0x1c,0x1f,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  995.     0x60,0xe0,0x00,0xe0,0x00,0x18,0x86,0x03,0x0c,0x03,0xb0,0x03,0x00,0x18,0x00,
  996.     0x39,0x30,0x0e,0x0c,0x3b,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x20,
  997.     0xe0,0x00,0xe0,0x00,0x18,0x87,0x01,0x8e,0x03,0x38,0x03,0x00,0x18,0x80,0x39,
  998.     0x38,0x0e,0x8e,0x33,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x10,0x60,
  999.     0x00,0xe0,0x00,0x0c,0x83,0x01,0x8e,0x03,0x38,0x03,0x00,0x0c,0x80,0x38,0x18,
  1000.     0x0e,0x86,0x33,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x1c,0x60,0x00,
  1001.     0xc0,0x01,0x06,0xc3,0x11,0x86,0x03,0x19,0x07,0x00,0x04,0xe0,0x38,0x0c,0x0e,
  1002.     0x83,0x71,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x0f,0xe0,0x0c,0xc0,
  1003.     0x01,0x03,0xb3,0x0d,0xe6,0xc3,0x18,0x06,0x80,0xff,0x7f,0x78,0x06,0x9e,0x81,
  1004.     0x61,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xc0,0x07,0xe0,0x07,0x80,0xc7,
  1005.     0x81,0xcf,0x03,0x9f,0x3f,0x1c,0x0e,0xc0,0xff,0x7f,0xf8,0x03,0xfe,0xc0,0xe1,
  1006.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0xe0,0x01,0x70,0x00,0x00,0xff,0x01,
  1007.     0xc3,0x00,0x06,0x0f,0x0c,0x0c,0xe0,0xff,0x3f,0xf0,0x00,0x3c,0xc0,0xc0,0x00,
  1008.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
  1009.     0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
  1010.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x04,0x00,
  1011.     0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,
  1012.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x04,0x00,0x00,
  1013.     0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x00,0x00,
  1014.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1e,0x04,0x00,0x00,0x00,
  1015.     0x00,0x70,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x87,0x00,0x00,0x00,0xc0,
  1016.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3c,0x0e,0x00,0x00,0x00,0x00,
  1017.     0xe0,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xce,0x00,0x00,0x00,0xc0,0x00,
  1018.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x03,0x00,0x00,0x00,0x00,0x80,
  1019.     0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0xc0,0x00,0x00,
  1020.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1021.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1022.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1023.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1024.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1025.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1026.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1027.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1028.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x00,
  1029.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1030.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,
  1031.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1032.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  1033.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1034.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1035.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1036.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1037.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1038.     0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1039.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1040.     0x0c,0x00,0x30,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1041.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,
  1042.     0x00,0x18,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1043.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,
  1044.     0x18,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1045.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x1c,
  1046.     0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1047.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x01,0x03,0x00,0x0c,0x30,
  1048.     0x38,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1049.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf8,0x07,0x03,0x00,0x0c,0x38,0x3c,
  1050.     0xd8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1051.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x84,0xe1,0x7f,0x80,0xff,0x39,0x3b,0xc6,
  1052.     0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1053.     0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x91,0x03,0x40,0x0e,0xd8,0x38,0xc7,0x01,
  1054.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1055.     0x00,0x00,0x00,0x00,0x00,0x83,0x81,0x01,0x00,0x06,0x38,0x18,0xe3,0x00,0x00,
  1056.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1057.     0x00,0x00,0x00,0x80,0xc3,0x81,0x01,0x00,0x06,0x1c,0x9c,0x33,0x00,0x00,0x00,
  1058.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1059.     0x00,0x00,0x80,0xc1,0xc0,0x01,0x00,0x07,0x0c,0x9c,0x1b,0x00,0x00,0x00,0x00,
  1060.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1061.     0x00,0x80,0xc1,0xc0,0x01,0x00,0x07,0x0c,0xcc,0x07,0x00,0x00,0x00,0x00,0x00,
  1062.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1063.     0xc0,0xe1,0xc0,0x00,0x00,0x03,0x0c,0xcc,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  1064.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1065.     0xe1,0xc0,0x00,0x00,0x03,0x0e,0xce,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1066.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x71,
  1067.     0xe4,0x10,0x80,0x43,0x06,0xce,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1068.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x6d,0xe3,
  1069.     0x0c,0x80,0x33,0x06,0xee,0xe3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1070.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe3,0xe0,0x03,
  1071.     0x80,0x0f,0x07,0xde,0x3f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1072.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x31,0xc0,0x00,0x00,
  1073.     0x03,0x01,0x86,0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1074.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1075.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1076.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1077.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1078.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1079.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1080.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1081.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1082.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1083.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1084.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1085.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1086.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1087.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1088.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1089.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1090.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1091.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1092.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1093.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1094.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1095.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1096.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1097.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1098.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1099.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1100.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1101.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1102.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1103.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1104.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1105.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1106.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1107.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1108.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1109.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1110.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1111.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1112.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1113.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1114.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1115.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1116.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1117.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1118.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1119.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1120.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1121.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1122.     0x00,0x00,0x00,0x00,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1123.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1124.     0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1125.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1126.     0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0x3f,0xf8,0xff,0xff,0xff,0x1f,0xfe,
  1127.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1128.     0x3f,0xc0,0x0c,0xfe,0x1f,0x3e,0xfc,0x07,0xe3,0x0f,0x00,0xff,0x03,0xf0,0x1f,
  1129.     0xfe,0x0f,0x1f,0xfe,0xcf,0x07,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
  1130.     0xc0,0x0c,0xfe,0x1f,0x3e,0xfc,0xc3,0xdf,0x0f,0x1f,0xfc,0xf1,0xc3,0x1f,0xfe,
  1131.     0x0f,0x1f,0xfc,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,
  1132.     0x0c,0xfc,0x0f,0x3e,0xfc,0xf1,0x9f,0x0f,0x3f,0xfc,0xf8,0x87,0x1f,0xfe,0x0f,
  1133.     0x1f,0xfc,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,
  1134.     0xfc,0x0f,0x3e,0xfc,0xf8,0x3f,0x0f,0x7f,0x7c,0xf8,0x0f,0x1f,0xfe,0x0f,0x1f,
  1135.     0xf8,0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,0xf8,
  1136.     0x07,0x3e,0x7c,0xf8,0x7f,0x0e,0x7f,0x78,0xfc,0x0f,0x1f,0xfe,0x0f,0x1f,0xf0,
  1137.     0xcf,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x0c,0xf8,0x07,
  1138.     0x3e,0x7c,0xfc,0xff,0x0f,0x7f,0x38,0xfc,0x1f,0x1e,0xfe,0x0f,0x9f,0xf0,0xcf,
  1139.     0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x4c,0xf8,0x17,0x3e,
  1140.     0x3c,0xfc,0xff,0x0f,0x7f,0x38,0xfe,0x1f,0x1e,0xfe,0x0f,0x9f,0xe0,0xcf,0x87,
  1141.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0x4c,0xf0,0x13,0x3e,0x3c,
  1142.     0xfc,0xff,0x0f,0x7f,0x18,0xfe,0x1f,0x1e,0xfe,0x0f,0x9f,0xc1,0xcf,0x87,0xff,
  1143.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xf0,0x13,0x3e,0x3c,0xfc,
  1144.     0xff,0x0f,0x7f,0x18,0xfe,0x1f,0x1c,0xfe,0x0f,0x9f,0x83,0xcf,0x87,0xff,0xff,
  1145.     0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe0,0x19,0x3e,0x1c,0xfe,0xff,
  1146.     0x0f,0x3f,0x1c,0xfe,0x1f,0x1c,0xfe,0x0f,0x9f,0x83,0xcf,0x87,0xff,0xff,0xff,
  1147.     0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe1,0x19,0x3e,0x1c,0xfe,0xff,0x0f,
  1148.     0x1f,0x1c,0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x07,0xcf,0x07,0x80,0xff,0xff,0xff,
  1149.     0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xe1,0x1d,0x3e,0x1c,0xfe,0xff,0x0f,0x01,
  1150.     0x1f,0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x0f,0xce,0x07,0x80,0xff,0xff,0xff,0xff,
  1151.     0xff,0xff,0xff,0x3f,0xc0,0xcc,0xc1,0x1c,0x3e,0x1c,0xfe,0xff,0x0f,0xc3,0x1f,
  1152.     0xfe,0x3f,0x1c,0xfe,0x0f,0x9f,0x0f,0xce,0x87,0xff,0xff,0xff,0xff,0xff,0xff,
  1153.     0xff,0xff,0x3f,0xc0,0xcc,0xc3,0x1c,0x3e,0x1c,0xfe,0xff,0x0f,0xc3,0x1f,0xfe,
  1154.     0x3f,0x1c,0xfe,0x0f,0x9f,0x1f,0xcc,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1155.     0xff,0x3f,0xc0,0xcc,0x03,0x1e,0x3e,0x1c,0xfc,0xff,0x0f,0x87,0x1f,0xfe,0x1f,
  1156.     0x1c,0xfe,0x0f,0x9f,0x3f,0xc8,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1157.     0x3f,0xc0,0xcc,0x07,0x1e,0x3e,0x1c,0xfc,0xff,0x0f,0x87,0x1f,0xfe,0x1f,0x1e,
  1158.     0xfe,0x0f,0x9f,0x7f,0xc8,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,
  1159.     0xc0,0xcc,0x07,0x1e,0x3e,0x3c,0xfc,0xff,0x0f,0x0f,0x3f,0xfe,0x1f,0x1e,0xfe,
  1160.     0x0f,0x9f,0x7f,0xc0,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,
  1161.     0xcc,0x07,0x1f,0x3e,0x3c,0xfc,0xff,0x0c,0x0f,0x3f,0xfc,0x1f,0x1e,0xfe,0x0f,
  1162.     0x9f,0xff,0xc0,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,
  1163.     0x0f,0x1f,0x3e,0x7c,0xf8,0x7f,0x0e,0x1f,0x3e,0xfc,0x0f,0x1f,0xfe,0x0f,0x9f,
  1164.     0xff,0xc1,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x8f,
  1165.     0x1f,0x3e,0xfc,0xf0,0x3f,0x0f,0x1f,0x7e,0xfc,0x8f,0x1f,0xfe,0x0f,0x9f,0xff,
  1166.     0xc1,0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x9f,0x1f,
  1167.     0x3e,0xfc,0xe0,0x1f,0x0f,0x3f,0xfc,0xf8,0x87,0x1f,0xfe,0x0f,0x9f,0xff,0xc3,
  1168.     0x87,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0x9f,0x1f,0x3e,
  1169.     0xfc,0x83,0x87,0x0f,0x3f,0xfc,0xf1,0xc3,0x1f,0x00,0x0c,0x9f,0xff,0xc7,0x07,
  1170.     0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xcc,0xff,0x1f,0x3e,0xfc,
  1171.     0x07,0xe0,0x0f,0x7f,0xf8,0x03,0xf0,0x1f,0x00,0x0c,0x9f,0xff,0xc7,0x07,0x00,
  1172.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,
  1173.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1174.     0xff,0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,
  1175.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1176.     0xff,0xff,0xff,0xff,0xff,0x3f,0xc0,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1177.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1178.     0xff,0xff,0xff,0xff,0x3f,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1179.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1180.     0x00,0x00,0x00,0x00,0xc0,0xf0,0x07,0xf8,0x03,0xfc,0xf9,0x81,0xff,0xff,0x00,
  1181.     0x00,0xf8,0x0f,0x00,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,
  1182.     0x00,0x00,0x00,0xc0,0xe0,0x07,0xf8,0x03,0xfc,0xf8,0x81,0xff,0xff,0x03,0x00,
  1183.     0xff,0x7f,0x00,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,
  1184.     0x00,0x00,0xc0,0xe0,0x07,0xf8,0x07,0xfc,0xf8,0x81,0xff,0xff,0x0f,0x80,0xff,
  1185.     0xff,0x01,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  1186.     0x00,0xc0,0xe0,0x0f,0xf8,0x07,0xfc,0xf8,0x81,0xff,0xff,0x1f,0xc0,0xff,0xff,
  1187.     0x03,0xfc,0xff,0x7f,0xfe,0xff,0xff,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1188.     0xc0,0xc0,0x0f,0xfc,0x07,0x7e,0xf8,0x81,0x1f,0xc0,0x3f,0xe0,0x0f,0xf8,0x07,
  1189.     0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1190.     0xc0,0x0f,0xfc,0x07,0x7e,0xf8,0x81,0x1f,0x00,0x3f,0xf0,0x07,0xe0,0x0f,0xfc,
  1191.     0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,
  1192.     0x0f,0xbc,0x0f,0x7e,0xf8,0x81,0x1f,0x00,0x7f,0xf8,0x03,0xc0,0x0f,0xfc,0x00,
  1193.     0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,
  1194.     0xbc,0x0f,0x3e,0xf8,0x81,0x1f,0x00,0x7e,0xf8,0x01,0x00,0x00,0xfc,0x00,0x00,
  1195.     0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xbe,
  1196.     0x0f,0x3f,0xf8,0x81,0x1f,0x00,0xfe,0xf8,0x01,0x00,0x00,0xfc,0x00,0x00,0x00,
  1197.     0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xbe,0x0f,
  1198.     0x3f,0xf8,0x81,0x1f,0x00,0xfc,0xfc,0x00,0x00,0x00,0xfc,0xff,0x3f,0x00,0xfc,
  1199.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x1f,0x1e,0x1f,0x1f,
  1200.     0xf8,0x81,0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,
  1201.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3f,0x1e,0x1f,0x1f,0xf8,
  1202.     0x81,0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,0x00,
  1203.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3f,0x1f,0x9f,0x1f,0xf8,0x81,
  1204.     0x1f,0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0xff,0x3f,0x00,0xfc,0x00,0x00,0x00,
  1205.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x3e,0x1f,0x9e,0x0f,0xf8,0x81,0x1f,
  1206.     0x00,0xfc,0xfc,0x00,0xfe,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
  1207.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x7e,0x0f,0xbe,0x0f,0xf8,0x81,0x1f,0x00,
  1208.     0xfc,0xfc,0x01,0x80,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,
  1209.     0x00,0x00,0x00,0x00,0xc0,0x00,0x7e,0x0f,0xbe,0x0f,0xf8,0x81,0x1f,0x00,0x7e,
  1210.     0xf8,0x01,0x80,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,
  1211.     0x00,0x00,0x00,0xc0,0x00,0xfc,0x0f,0xfc,0x07,0xf8,0x81,0x1f,0x00,0x7f,0xf8,
  1212.     0x03,0xc0,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1213.     0x00,0x00,0xc0,0x00,0xfc,0x07,0xfc,0x07,0xf8,0x81,0x1f,0x00,0x3f,0xf0,0x07,
  1214.     0xe0,0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1215.     0x00,0xc0,0x00,0xf8,0x07,0xfc,0x07,0xf8,0x81,0x1f,0xc0,0x3f,0xe0,0x1f,0xf8,
  1216.     0x0f,0xfc,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1217.     0xc0,0x00,0xf8,0x07,0xfc,0x03,0xf8,0x81,0xff,0xff,0x1f,0xc0,0xff,0xff,0x0f,
  1218.     0xfc,0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1219.     0x00,0xf8,0x07,0xf8,0x03,0xf8,0x81,0xff,0xff,0x0f,0x80,0xff,0x7f,0x0f,0xfc,
  1220.     0xff,0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1221.     0xf0,0x03,0xf8,0x03,0xf8,0x81,0xff,0xff,0x03,0x00,0xfe,0x3f,0x0f,0xfc,0xff,
  1222.     0xff,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,
  1223.     0x03,0xf8,0x01,0xf8,0x81,0xff,0xff,0x00,0x00,0xf0,0x07,0x0f,0xfc,0xff,0xff,
  1224.     0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1225.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1226.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1227.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1228.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1229.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1230.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1231.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1232.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1233.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,
  1234.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1235.     0xc0,0x01,0x00,0x3c,0xf0,0xff,0x07,0xe0,0xff,0x0f,0x00,0x80,0x03,0x00,0xfe,
  1236.     0xff,0xe1,0x03,0x00,0x38,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1237.     0x01,0x00,0x3c,0xf0,0x00,0x1f,0xe0,0x01,0x3f,0x00,0x80,0x03,0x00,0x1e,0xe0,
  1238.     0xc3,0x07,0x00,0x1c,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,
  1239.     0x00,0x3c,0xf0,0x00,0x3c,0xe0,0x01,0x78,0x00,0xc0,0x07,0x00,0x1e,0x80,0x8f,
  1240.     0x0f,0x00,0x0e,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
  1241.     0x3c,0xf0,0x00,0x3c,0xe0,0x01,0xf8,0x00,0xc0,0x07,0x00,0x1e,0x00,0x0f,0x1f,
  1242.     0x00,0xe7,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,
  1243.     0xf0,0x00,0x3c,0xe0,0x01,0xf0,0x00,0x60,0x0f,0x00,0x1e,0x00,0x0f,0x1e,0x80,
  1244.     0x43,0xc7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,
  1245.     0x00,0x3c,0xe0,0x01,0xf0,0x00,0x30,0x1f,0x00,0x1e,0x00,0x0f,0x3c,0x80,0x41,
  1246.     0xc5,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,
  1247.     0x3c,0xe0,0x01,0x78,0x00,0x30,0x1e,0x00,0x1e,0x00,0x0f,0x78,0xc0,0x01,0xc0,
  1248.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x1c,
  1249.     0xe0,0x01,0x78,0x00,0x18,0x3c,0x00,0x1e,0x80,0x07,0xf8,0xe0,0x00,0xc0,0x00,
  1250.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x80,0x07,0xe0,
  1251.     0x01,0x3e,0x00,0x18,0x3c,0x00,0x1e,0xc0,0x03,0xf0,0x61,0x00,0xc0,0x00,0x00,
  1252.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0xff,0x00,0xe0,0xff,
  1253.     0x07,0x00,0x0c,0x78,0x00,0xfe,0x7f,0x00,0xe0,0x19,0x00,0xc0,0x00,0x00,0x00,
  1254.     0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0xc0,0x0f,0xe0,0x7f,0x00,
  1255.     0x00,0x0c,0xf8,0x00,0xfe,0x07,0x00,0xc0,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,
  1256.     0x00,0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x1e,0xe0,0xfd,0x00,0x00,
  1257.     0xfe,0xff,0x00,0x9e,0x0f,0x00,0x80,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1258.     0x00,0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x7c,0xe0,0xf9,0x00,0x00,0xff,
  1259.     0xff,0x01,0x1e,0x1f,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1260.     0x00,0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0xf1,0x03,0x00,0x03,0xe0,
  1261.     0x01,0x1e,0x3e,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1262.     0x00,0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0xc1,0x07,0x80,0x01,0xc0,0x03,
  1263.     0x1e,0x78,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1264.     0xc0,0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0x81,0x07,0x80,0x01,0xc0,0x03,0x1e,
  1265.     0xf0,0x00,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1266.     0x01,0x00,0x3c,0xf0,0x00,0x78,0xe0,0x01,0x1f,0xc0,0x00,0x80,0x07,0x1e,0xe0,
  1267.     0x03,0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,
  1268.     0x00,0x3c,0xf0,0x00,0x78,0xe0,0x01,0x3e,0xe0,0x00,0x00,0x0f,0x1e,0xc0,0x07,
  1269.     0x00,0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x00,
  1270.     0x3c,0xf0,0x00,0x3c,0xe0,0x01,0x7c,0x60,0x00,0x00,0x0e,0x1e,0x80,0x07,0x00,
  1271.     0x0f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x01,0x1f,0x3c,
  1272.     0xf0,0x00,0x0f,0xe0,0x01,0xf8,0x71,0x00,0x00,0x1e,0x1e,0x00,0x1f,0x00,0x0f,
  1273.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xff,0x1f,0x3c,0xf0,
  1274.     0xff,0x03,0xe0,0x01,0xe0,0x33,0x00,0x00,0x1c,0x1e,0x00,0x3e,0x00,0x0f,0x00,
  1275.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1276.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1277.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1278.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1279.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1280.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1281.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1282.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1283.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1284.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1285.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1286.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1287.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1288.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1289.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1290.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1291.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1292.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1293.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1294.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1295.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,
  1296.     0x03,0x00,0xfc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1297.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,
  1298.     0x00,0xfe,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1299.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1c,0x00,
  1300.     0x87,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1301.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x18,0x00,0x03,
  1302.     0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1303.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x18,0x80,0x01,0x06,
  1304.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1305.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x01,0x06,0xc0,
  1306.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1307.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0c,0x80,0x01,0x06,0xc0,0x00,
  1308.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1309.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x07,0x80,0x01,0x06,0xc0,0x00,0x00,
  1310.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1311.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x0f,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,
  1312.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1313.     0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,
  1314.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1315.     0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,
  1316.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1317.     0x00,0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1318.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1319.     0x00,0x00,0x00,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1320.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1321.     0x00,0x0c,0x30,0x80,0x01,0x06,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1322.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1323.     0x1c,0x38,0x00,0x03,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1324.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,
  1325.     0x1c,0x00,0x87,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1326.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x0f,
  1327.     0x06,0xfe,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1328.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x03,0x06,
  1329.     0xfc,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1330.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1331.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1332.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1333.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1334.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1335.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1336.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1337.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1338.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1339.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1340.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1341.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1342.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1343.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1344.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1345.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1346.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1347.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1348.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1349.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1350.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1351.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1352.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1353.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1354.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1355.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1356.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1357.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1358.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1359.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1360.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1361.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1362.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1363.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1364.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1365.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1366.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1367.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1368.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1369.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1370.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1371.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,
  1372.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1373.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1374.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1375.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1376.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1377.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1378.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1379.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1380.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1381.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1382.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1383.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1384.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1385.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1386.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1387.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1388.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1389.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1390.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1391.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1392.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1393.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1394.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1395.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1396.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1397.     0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1398.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1399.     0x40,0x20,0x40,0x70,0x38,0x3c,0x00,0x82,0xc3,0xe1,0x40,0x90,0x00,0x00,0x48,
  1400.     0x00,0x00,0x78,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x20,
  1401.     0x46,0x60,0x88,0x44,0x04,0x00,0x43,0x24,0x12,0xc1,0x18,0x00,0x00,0x08,0x00,
  1402.     0x00,0x84,0x00,0x12,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x10,0x89,
  1403.     0x50,0x88,0x44,0x02,0x80,0x42,0x24,0x12,0xc0,0x98,0x18,0xe5,0x48,0x1a,0x0e,
  1404.     0x84,0x38,0x7f,0x44,0x8e,0x72,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x90,0x40,
  1405.     0x88,0x44,0x1e,0x00,0x42,0x24,0xd2,0x40,0x95,0x24,0x13,0x49,0x26,0x11,0x04,
  1406.     0x44,0x52,0x44,0x91,0x89,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x80,0x40,0xc8,
  1407.     0x64,0x22,0x00,0x42,0x26,0x33,0x41,0x95,0x04,0x11,0x49,0x22,0x11,0x78,0x44,
  1408.     0x92,0x2a,0x90,0x88,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x80,0x40,0xb0,0x58,
  1409.     0x20,0x00,0x82,0xc5,0x12,0x41,0x95,0x04,0x11,0x49,0x22,0x1f,0x80,0x44,0x92,
  1410.     0x2a,0x9e,0xf8,0x00,0x00,0xc0,0x00,0x00,0x00,0x90,0x90,0x40,0x80,0x40,0x20,
  1411.     0x00,0x02,0x04,0x12,0x41,0x95,0x04,0x11,0x49,0x22,0x01,0x84,0x44,0x92,0x2a,
  1412.     0x91,0x08,0x00,0x00,0xc0,0x00,0x00,0x00,0x10,0x89,0x40,0x88,0x44,0x22,0x00,
  1413.     0x42,0x24,0x12,0x41,0x92,0x24,0x11,0x49,0x22,0x11,0x84,0x44,0x12,0x11,0x99,
  1414.     0x88,0x00,0x00,0xc0,0x00,0x00,0x00,0x20,0x46,0x40,0x70,0x38,0x1c,0x02,0x82,
  1415.     0xc3,0xe1,0x40,0x92,0x18,0xe1,0x48,0x22,0x0e,0x78,0x38,0x32,0x11,0x96,0x70,
  1416.     0x00,0x00,0xc0,0x00,0x00,0x00,0x40,0x20,0x00,0x00,0x00,0x00,0x02,0x00,0x00,
  1417.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1418.     0x00,0xc0,0x00,0x00,0x00,0x80,0x1f,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
  1419.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1420.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1421.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0
  1422. };
  1423.  
  1424. Pixmap coverPixmapW, coverPixmapB, coverPixmask;
  1425. GC coverGC;
  1426.  
  1427. static void CoverExpose();
  1428.  
  1429. void AddCoverTabForm(folder)
  1430. Widget folder;
  1431. {
  1432.     Widget form, da;
  1433.     Display *dpy;
  1434.     Window root;
  1435.     XmString str;
  1436.  
  1437.     str = XmStringCreateSimple("Cover Page");
  1438.     form = XmLFolderAddTabForm(folder, str);
  1439.     XmStringFree(str);
  1440.     CreatePixmap(form, 0, &coverPixmapW, &coverPixmask,
  1441.         (char *)cover_bits, cover_width, cover_height);
  1442.     CreatePixmap(form, 1, &coverPixmapB, &coverPixmask,
  1443.         (char *)cover_bits, cover_width, cover_height);
  1444.  
  1445.     dpy = XtDisplay(form);
  1446.     root = DefaultRootWindow(dpy);
  1447.     coverGC = XCreateGC(dpy, root, 0, NULL);
  1448.     da = XtVaCreateManagedWidget("drawArea",
  1449.         xmDrawingAreaWidgetClass, form,
  1450.         XmNleftAttachment, XmATTACH_FORM,
  1451.         XmNrightAttachment, XmATTACH_FORM,
  1452.         XmNtopAttachment, XmATTACH_FORM,
  1453.         XmNbottomAttachment, XmATTACH_FORM,
  1454.         NULL);
  1455.     XtAddCallback(da, XmNexposeCallback, CoverExpose, NULL);
  1456.  
  1457. }
  1458.  
  1459. static void CoverExpose(w, clientData, callData)
  1460. Widget w;
  1461. XtPointer clientData, callData;
  1462. {
  1463.     XRectangle rect;
  1464.     Pixel black, white;
  1465.  
  1466.     XClearArea(XtDisplay(w), XtWindow(w), 0, 0, 0, 0, False);
  1467.     black = BlackPixelOfScreen(XtScreen(w));
  1468.     white = WhitePixelOfScreen(XtScreen(w));
  1469.     rect.x = 1;
  1470.     rect.y = 1;
  1471.     XtVaGetValues(w,
  1472.         XmNwidth, &rect.width,
  1473.         XmNheight, &rect.height,
  1474.         NULL);
  1475.     XmLPixmapDraw(w, coverPixmapW, coverPixmask, cover_width, cover_height,
  1476.         XmALIGNMENT_CENTER, coverGC, &rect, &rect);
  1477.     rect.x = 0;
  1478.     rect.y = 0;
  1479.     XmLPixmapDraw(w, coverPixmapB, coverPixmask, cover_width, cover_height,
  1480.         XmALIGNMENT_CENTER, coverGC, &rect, &rect);
  1481. }
  1482.  
  1483. /*
  1484.    Intro Tab Form
  1485. */
  1486.  
  1487. #define logo_width 230
  1488. #define logo_height 90
  1489. static unsigned char logo_bits[] = {
  1490.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1491.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1492.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1493.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1494.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1495.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,
  1496.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1497.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xf8,0xff,0xff,0xff,
  1498.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1499.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,0xff,0xff,0xff,
  1500.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1501.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,0xff,0xff,0xff,0x7f,
  1502.     0xf0,0xff,0xff,0xff,0x3f,0xfc,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1503.     0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xfc,0x3f,0x7c,0xf8,0x0f,0xc6,
  1504.     0x1f,0x00,0xfe,0x07,0xe0,0x3f,0xfc,0x1f,0x3e,0xfc,0x9f,0x0f,0x00,0xfe,0xff,
  1505.     0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xfc,0x3f,0x7c,0xf8,0x87,0xbf,0x1f,
  1506.     0x3e,0xf8,0xe3,0x87,0x3f,0xfc,0x1f,0x3e,0xf8,0x9f,0x0f,0xff,0xff,0xff,0xff,
  1507.     0xff,0xff,0xff,0xff,0x7f,0xc0,0x18,0xf8,0x1f,0x7c,0xf8,0xe3,0x3f,0x1f,0x7e,
  1508.     0xf8,0xf1,0x0f,0x3f,0xfc,0x1f,0x3e,0xf8,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,
  1509.     0xff,0xff,0xff,0x7f,0xc0,0x18,0xf8,0x1f,0x7c,0xf8,0xf1,0x7f,0x1e,0xfe,0xf8,
  1510.     0xf0,0x1f,0x3e,0xfc,0x1f,0x3e,0xf0,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,
  1511.     0xff,0xff,0x7f,0xc0,0x18,0xf0,0x0f,0x7c,0xf8,0xf0,0xff,0x1c,0xfe,0xf0,0xf8,
  1512.     0x1f,0x3e,0xfc,0x1f,0x3e,0xe0,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1513.     0xff,0x7f,0xc0,0x18,0xf0,0x0f,0x7c,0xf8,0xf8,0xff,0x1f,0xfe,0x70,0xf8,0x3f,
  1514.     0x3c,0xfc,0x1f,0x3e,0xe1,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1515.     0x7f,0xc0,0x98,0xf0,0x2f,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x70,0xfc,0x3f,0x3c,
  1516.     0xfc,0x1f,0x3e,0xc1,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
  1517.     0xc0,0x98,0xe0,0x27,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x30,0xfc,0x3f,0x3c,0xfc,
  1518.     0x1f,0x3e,0x83,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,
  1519.     0x98,0xe1,0x27,0x7c,0x78,0xf8,0xff,0x1f,0xfe,0x30,0xfc,0x3f,0x38,0xfc,0x1f,
  1520.     0x3e,0x07,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,
  1521.     0xc1,0x33,0x7c,0x38,0xfc,0xff,0x1f,0x7e,0x38,0xfc,0x3f,0x38,0xfc,0x1f,0x3e,
  1522.     0x07,0x9f,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0xc3,
  1523.     0x33,0x7c,0x38,0xfc,0xff,0x1f,0x3e,0x38,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x0f,
  1524.     0x9e,0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0xc3,0x3b,
  1525.     0x7c,0x38,0xfc,0xff,0x1f,0x02,0x3e,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x1f,0x9c,
  1526.     0x0f,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x83,0x39,0x7c,
  1527.     0x38,0xfc,0xff,0x1f,0x86,0x3f,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x1f,0x9c,0x0f,
  1528.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x87,0x39,0x7c,0x38,
  1529.     0xfc,0xff,0x1f,0x86,0x3f,0xfc,0x7f,0x38,0xfc,0x1f,0x3e,0x3f,0x98,0x0f,0xff,
  1530.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x07,0x3c,0x7c,0x38,0xf8,
  1531.     0xff,0x1f,0x0e,0x3f,0xfc,0x3f,0x38,0xfc,0x1f,0x3e,0x7f,0x90,0x0f,0xff,0xff,
  1532.     0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3c,0x7c,0x38,0xf8,0xff,
  1533.     0x1f,0x0e,0x3f,0xfc,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x90,0x0f,0xff,0xff,0xff,
  1534.     0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3c,0x7c,0x78,0xf8,0xff,0x1f,
  1535.     0x1e,0x7e,0xfc,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x80,0x0f,0xff,0xff,0xff,0xff,
  1536.     0xff,0xff,0xff,0xff,0x7f,0xc0,0x98,0x0f,0x3e,0x7c,0x78,0xf8,0xff,0x19,0x1e,
  1537.     0x7e,0xf8,0x3f,0x3c,0xfc,0x1f,0x3e,0xff,0x81,0x0f,0xff,0xff,0xff,0xff,0xff,
  1538.     0xff,0xff,0xff,0x7f,0xc0,0x98,0x1f,0x3e,0x7c,0xf8,0xf0,0xff,0x1c,0x3e,0x7c,
  1539.     0xf8,0x1f,0x3e,0xfc,0x1f,0x3e,0xff,0x83,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,
  1540.     0xff,0xff,0x7f,0xc0,0x98,0x1f,0x3f,0x7c,0xf8,0xe1,0x7f,0x1e,0x3e,0xfc,0xf8,
  1541.     0x1f,0x3f,0xfc,0x1f,0x3e,0xff,0x83,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1542.     0xff,0x7f,0xc0,0x98,0x3f,0x3f,0x7c,0xf8,0xc1,0x3f,0x1e,0x7e,0xf8,0xf1,0x0f,
  1543.     0x3f,0xfc,0x1f,0x3e,0xff,0x87,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1544.     0x7f,0xc0,0x98,0x3f,0x3f,0x7c,0xf8,0x07,0x0f,0x1f,0x7e,0xf8,0xe3,0x87,0x3f,
  1545.     0x00,0x18,0x3e,0xff,0x8f,0x0f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
  1546.     0xc0,0x98,0xff,0x3f,0x7c,0xf8,0x0f,0xc0,0x1f,0xfe,0xf0,0x07,0xe0,0x3f,0x00,
  1547.     0x18,0x3e,0xff,0x8f,0x0f,0x00,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,
  1548.     0xf8,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1549.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,
  1550.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1551.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0xf8,0xff,
  1552.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  1553.     0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xc0,0x00,0x00,0x00,
  1554.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1555.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xe0,0x0f,0xf0,0x07,
  1556.     0xf8,0xf3,0x03,0xff,0xff,0x01,0x00,0xf0,0x1f,0x00,0xf8,0xff,0xff,0xfc,0xff,
  1557.     0xff,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x0f,0xf0,0x07,0xf8,
  1558.     0xf1,0x03,0xff,0xff,0x07,0x00,0xfe,0xff,0x00,0xf8,0xff,0xff,0xfc,0xff,0xff,
  1559.     0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x0f,0xf0,0x0f,0xf8,0xf1,
  1560.     0x03,0xff,0xff,0x1f,0x00,0xff,0xff,0x03,0xf8,0xff,0xff,0xfc,0xff,0xff,0x03,
  1561.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0xc0,0x1f,0xf0,0x0f,0xf8,0xf1,0x03,
  1562.     0xff,0xff,0x3f,0x80,0xff,0xff,0x07,0xf8,0xff,0xff,0xfc,0xff,0xff,0x03,0x00,
  1563.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xf8,0x0f,0xfc,0xf0,0x03,0x3f,
  1564.     0x80,0x7f,0xc0,0x1f,0xf0,0x0f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,
  1565.     0x00,0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0xf8,0x0f,0xfc,0xf0,0x03,0x3f,0x00,
  1566.     0x7e,0xe0,0x0f,0xc0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,
  1567.     0x00,0x00,0x00,0x00,0xc0,0x80,0x1f,0x78,0x1f,0xfc,0xf0,0x03,0x3f,0x00,0xfe,
  1568.     0xf0,0x07,0x80,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,
  1569.     0x00,0x00,0x00,0xc0,0x00,0x3f,0x78,0x1f,0x7c,0xf0,0x03,0x3f,0x00,0xfc,0xf0,
  1570.     0x03,0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  1571.     0x00,0x00,0xc0,0x00,0x3f,0x7c,0x1f,0x7e,0xf0,0x03,0x3f,0x00,0xfc,0xf1,0x03,
  1572.     0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1573.     0x00,0xc0,0x00,0x3f,0x7c,0x1f,0x7e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0x00,
  1574.     0x00,0xf8,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1575.     0xc0,0x00,0x3e,0x3c,0x3e,0x3e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,
  1576.     0xf8,0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1577.     0x00,0x7e,0x3c,0x3e,0x3e,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,
  1578.     0xff,0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1579.     0x7e,0x3e,0x3e,0x3f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,0xff,
  1580.     0x7f,0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x7c,
  1581.     0x3e,0x3c,0x1f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x01,0xfc,0x1f,0xf8,0x01,0x00,
  1582.     0x00,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0x1e,
  1583.     0x7c,0x1f,0xf0,0x03,0x3f,0x00,0xf8,0xf9,0x03,0x00,0x1f,0xf8,0x01,0x00,0x00,
  1584.     0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xfc,0x1e,0x7c,
  1585.     0x1f,0xf0,0x03,0x3f,0x00,0xfc,0xf0,0x03,0x00,0x1f,0xf8,0x01,0x00,0x00,0xf8,
  1586.     0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf8,0x1f,0xf8,0x0f,
  1587.     0xf0,0x03,0x3f,0x00,0xfe,0xf0,0x07,0x80,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,
  1588.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf8,0x0f,0xf8,0x0f,0xf0,
  1589.     0x03,0x3f,0x00,0x7e,0xe0,0x0f,0xc0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,
  1590.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf8,0x0f,0xf0,0x03,
  1591.     0x3f,0x80,0x7f,0xc0,0x3f,0xf0,0x1f,0xf8,0x01,0x00,0x00,0xf8,0x01,0x00,0x00,
  1592.     0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf8,0x07,0xf0,0x03,0xff,
  1593.     0xff,0x3f,0x80,0xff,0xff,0x1f,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,
  1594.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0xf0,0x0f,0xf0,0x07,0xf0,0x03,0xff,0xff,
  1595.     0x1f,0x00,0xff,0xff,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,
  1596.     0x00,0x00,0x00,0x00,0xc0,0x00,0xe0,0x07,0xf0,0x07,0xf0,0x03,0xff,0xff,0x07,
  1597.     0x00,0xfc,0x7f,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,
  1598.     0x00,0x00,0x00,0xc0,0x00,0xe0,0x07,0xf0,0x03,0xf0,0x03,0xff,0xff,0x01,0x00,
  1599.     0xe0,0x0f,0x1e,0xf8,0xff,0xff,0x01,0xf8,0x01,0x00,0x00,0x00,0x00,0x00,0x00,
  1600.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1601.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1602.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1603.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1604.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1605.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,
  1606.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1607.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,
  1608.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1609.     0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,
  1610.     0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0xff,0x0f,0xc0,0xff,
  1611.     0x1f,0x00,0x00,0x07,0x00,0xfc,0xff,0xc3,0x07,0x00,0x70,0xc0,0x00,0x00,0x00,
  1612.     0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x3e,0xc0,0x03,0x7e,
  1613.     0x00,0x00,0x07,0x00,0x3c,0xc0,0x87,0x0f,0x00,0x38,0xc0,0x00,0x00,0x00,0x00,
  1614.     0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x00,
  1615.     0x80,0x0f,0x00,0x3c,0x00,0x1f,0x1f,0x00,0x1c,0xc0,0x00,0x00,0x00,0x00,0x00,
  1616.     0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x01,0x80,
  1617.     0x0f,0x00,0x3c,0x00,0x1e,0x3e,0x00,0xce,0xcf,0x00,0x00,0x00,0x00,0x00,0x00,
  1618.     0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xe0,0x01,0xc0,0x1e,
  1619.     0x00,0x3c,0x00,0x1e,0x3c,0x00,0x87,0xce,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1620.     0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xe0,0x01,0x60,0x3e,0x00,
  1621.     0x3c,0x00,0x1e,0x78,0x00,0x83,0xca,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1622.     0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf0,0x00,0x60,0x3c,0x00,0x3c,
  1623.     0x00,0x1e,0xf0,0x80,0x03,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
  1624.     0x03,0x00,0x78,0xe0,0x01,0x38,0xc0,0x03,0xf0,0x00,0x30,0x78,0x00,0x3c,0x00,
  1625.     0x0f,0xf0,0xc1,0x01,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,
  1626.     0x00,0x78,0xe0,0x01,0x0f,0xc0,0x03,0x7c,0x00,0x30,0x78,0x00,0x3c,0x80,0x07,
  1627.     0xe0,0xc3,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,
  1628.     0x78,0xe0,0xff,0x01,0xc0,0xff,0x0f,0x00,0x18,0xf0,0x00,0xfc,0xff,0x00,0xc0,
  1629.     0x33,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,
  1630.     0xe0,0x81,0x1f,0xc0,0xff,0x00,0x00,0x18,0xf0,0x01,0xfc,0x0f,0x00,0x80,0x3f,
  1631.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,
  1632.     0x01,0x3c,0xc0,0xfb,0x01,0x00,0xfc,0xff,0x01,0x3c,0x1f,0x00,0x00,0x1f,0x00,
  1633.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,
  1634.     0xf8,0xc0,0xf3,0x01,0x00,0xfe,0xff,0x03,0x3c,0x3e,0x00,0x00,0x1e,0x00,0xc0,
  1635.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,
  1636.     0xc0,0xe3,0x07,0x00,0x06,0xc0,0x03,0x3c,0x7c,0x00,0x00,0x1e,0x00,0xc0,0x00,
  1637.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,
  1638.     0x83,0x0f,0x00,0x03,0x80,0x07,0x3c,0xf0,0x00,0x00,0x1e,0x00,0xc0,0x00,0x00,
  1639.     0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,
  1640.     0x0f,0x00,0x03,0x80,0x07,0x3c,0xe0,0x01,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,
  1641.     0x00,0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,0x3e,
  1642.     0x80,0x01,0x00,0x0f,0x3c,0xc0,0x07,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,
  1643.     0x00,0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0xf0,0xc0,0x03,0x7c,0xc0,
  1644.     0x01,0x00,0x1e,0x3c,0x80,0x0f,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,
  1645.     0x00,0x00,0x00,0x80,0x03,0x00,0x78,0xe0,0x01,0x78,0xc0,0x03,0xf8,0xc0,0x00,
  1646.     0x00,0x1c,0x3c,0x00,0x0f,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,
  1647.     0x00,0x00,0x80,0x03,0x3e,0x78,0xe0,0x01,0x1e,0xc0,0x03,0xf0,0xe3,0x00,0x00,
  1648.     0x3c,0x3c,0x00,0x3e,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1649.     0x00,0x80,0xff,0x3f,0x78,0xe0,0xff,0x07,0xc0,0x03,0xc0,0x67,0x00,0x00,0x38,
  1650.     0x3c,0x00,0x7c,0x00,0x1e,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1651.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1652.     0x00,0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1653.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1654.     0x00,0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1655.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1656.     0x00,0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1657.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1658.     0x00,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1659.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1660.     0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1661.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1662.     0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  1663.     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0
  1664. };
  1665.  
  1666. void AddIntroTabForm(folder)
  1667. Widget folder;
  1668. {
  1669.     Widget form, label;
  1670.     Pixmap pixmap, pixmask;
  1671.     XmString str;
  1672.     static char *desc =
  1673.     "Welcome to a Quick Look at the Microline Widget Library version 3.0.  \
  1674. This program presents an overview of widgets contained in the library.\
  1675. \n\n\
  1676. If you understand widget resources, you may want to try clicking the Editor \
  1677. button to display and edit some of the example widget's resources.  \
  1678. Please note that the editor is blank for the Cover Page and this \
  1679. Introduction screen.\
  1680. \n\n\
  1681. Further information on the library including pricing, supported platforms, \
  1682. licensing policies, etc. may be found on our web site \
  1683. http://www.mlsoft.com.  You can also email us at info@mlsoft.com.\
  1684. \n\n\
  1685. Microline Widget Library is a trademark of Microline Software. \
  1686. All other trademarks are the property of their respective owners.";
  1687.  
  1688.     str = XmStringCreateSimple("Introduction");
  1689.     form = XmLFolderAddTabForm(folder, str);
  1690.     XmStringFree(str);
  1691.     CreatePixmap(form, 1, &pixmap, &pixmask,
  1692.         (char *)logo_bits, logo_width, logo_height);
  1693.     label = XtVaCreateManagedWidget("label",
  1694.         xmLabelWidgetClass, form,
  1695.         XmNlabelType, XmPIXMAP,
  1696.         XmNlabelPixmap, pixmap,
  1697.         XmNmarginHeight, 25,
  1698.         XmNtopAttachment, XmATTACH_FORM,
  1699.         XmNleftAttachment, XmATTACH_FORM,
  1700.         XmNrightAttachment, XmATTACH_FORM,
  1701.         NULL);
  1702.  
  1703.     CreateText(form, desc, label, 0);
  1704. }
  1705.  
  1706. /*
  1707.    Folder Tab Form
  1708. */
  1709.  
  1710.  
  1711. #define sphere_width 10
  1712. #define sphere_height 10
  1713. static unsigned char sphere_bits[] = {
  1714.     0x00, 0x00, 0x78, 0x00, 0xf4, 0x00, 0xe2, 0x01, 0xf6, 0x01, 0xfe, 0x01,
  1715.     0xfe, 0x01, 0xfc, 0x00, 0x78, 0x00, 0x00, 0x00};
  1716.  
  1717.  
  1718. #define cross_width 10
  1719. #define cross_height 10
  1720. static unsigned char cross_bits[] = {
  1721.     0x00, 0x00, 0x30, 0x00, 0xb4, 0x00, 0x30, 0x00, 0xfe, 0x01, 0xfe, 0x01,
  1722.     0x30, 0x00, 0xb4, 0x00, 0x30, 0x00, 0x00, 0x00};
  1723.  
  1724. static Pixmap spherePixmap;
  1725. static Pixmap spherePixmask;
  1726. static Pixmap crossPixmap;
  1727. static Pixmap crossPixmask;
  1728.  
  1729. static void FolderSwitchCB();
  1730.  
  1731. Widget _folder;
  1732.  
  1733. void AddFolderTabForm(folder)
  1734. Widget folder;
  1735. {
  1736.     Widget form, w, sampleForm;
  1737.     XmString str;
  1738.     int i;
  1739.     static char *labels[] =
  1740.     {
  1741.         "Configuration", "Appearance", "Documents", "Keys"             };
  1742.     static char *desc =
  1743.     "The Folder widget provides a folder containing single or \
  1744. multiple rows of tabs along the top, bottom, left or right \
  1745. and an area managed by the tabs in the center.\
  1746. \n\n\
  1747. The Folder One sample contains a single row of tabs with arc-style \
  1748. corners, each containing a pixmap image.\
  1749. \n\n\
  1750. The Folder Two sample also contains a single row of tabs but placed on the \
  1751. bottom with the \"none\" corner style.  If you increase \
  1752. the width of the demo program, you will notice that this row of tabs \
  1753. will always fill the entire row with the individual tabs taking up \
  1754. a width proportional to their contents and the width of the row.\
  1755. \n\n\
  1756. The Folder Three sample contains tabs in 2 rows placed on the right.  \
  1757. Again, the size of the tabs are proportional to the size of \
  1758. their contents and will fit to the row.\
  1759. \n\n\
  1760. The Folder is a Manager widget and each tab \
  1761. consists of a Primitive widget (usually a DrawnButton widget) \
  1762. surrounded by tab decorations including an optional pixmap.  \
  1763. Any non-Primitive widget children of the Folder are placed in \
  1764. the center area.  Tab widgets may be assigned a widget \
  1765. in the center area of the folder to display/manage when the \
  1766. tab is selected or the application can change the contents \
  1767. in the center area itself as tabs are selected.\
  1768. \n\n\
  1769. Resources exist to set the style of the corners, pixmaps \
  1770. to display in the tabs, number of tabs per row, \
  1771. various colors, sizes and spacing in and around the tabs.  \
  1772. Also, since the tabs themselves \
  1773. have Primitive widgets like DrawnButtons inside of them, they \
  1774. retain all display abilities of their respective Primitive \
  1775. widgets.  DrawnButton tabs, for example, may be displayed with \
  1776. different fonts, character sets, colors, alignments, etc.\
  1777. \n\n\
  1778. Tabs may be be added or deleted by adding or deleting \
  1779. Primitive-based widgets to the Folder.  Callbacks are provided \
  1780. which can notify an application when a tab is activated, allowing \
  1781. the application to either accept or reject the activation.\
  1782. \n\n\
  1783. The 3.0 release adds multiple rows of tabs, improved tab layout \
  1784. and also a rewrite of the Folder's geometry management.\
  1785. \n\n\
  1786. Keyboard traversal of the tabs is supported by using the arrow \
  1787. keys to move from one tab to the next.  Tabs may be activated \
  1788. by either selection with the mouse or by activating their \
  1789. underlying Primitive widget.  For example, DrawnButton tabs \
  1790. may be activated by pressing the space bar when focus is in the tab.";
  1791.  
  1792.     form = AddWidgetSample(folder, "Folder", desc);
  1793.     _folder = XtVaCreateManagedWidget("sampleFolder",
  1794.         xmlFolderWidgetClass, form,
  1795.         XmNleftAttachment, XmATTACH_FORM,
  1796.         XmNtopAttachment, XmATTACH_FORM,
  1797.         XmNrightAttachment, XmATTACH_FORM,
  1798.         XmNbottomAttachment, XmATTACH_FORM,
  1799.         XmNmarginWidth, 4,
  1800.         NULL);
  1801.     CreatePixmap(_folder, 4, &spherePixmap, &spherePixmask,
  1802.         (char *)sphere_bits, sphere_width, sphere_height);
  1803.     CreatePixmap(_folder, 2, &crossPixmap, &crossPixmask,
  1804.         (char *)cross_bits, cross_width, cross_height);
  1805.     for (i = 0; i < 4; i++)
  1806.     {
  1807.         str = XmStringCreateSimple(labels[i]);
  1808.         w = XmLFolderAddTab(_folder, str);
  1809.         XmStringFree(str);
  1810.         if (i % 2)
  1811.             XtVaSetValues(w,
  1812.                 XmNtabPixmap, crossPixmap,
  1813.                 XmNtabInactivePixmap, crossPixmap,
  1814.                 NULL);
  1815.         else
  1816.             XtVaSetValues(w,
  1817.                 XmNtabPixmap, spherePixmap,
  1818.                 XmNtabInactivePixmap, spherePixmap,
  1819.                 NULL);
  1820.     }
  1821.     sampleForm = XtVaCreateManagedWidget("sampleForm",
  1822.         xmFormWidgetClass, _folder,
  1823.         NULL);
  1824.     str = XmStringCreateLtoR("\nSample Folder\nPage Area\n",
  1825.         XmSTRING_DEFAULT_CHARSET);
  1826.     XtVaCreateManagedWidget("label",
  1827.         xmLabelWidgetClass, sampleForm,
  1828.         XmNlabelString, str,
  1829.         XmNleftAttachment, XmATTACH_FORM,
  1830.         XmNrightAttachment, XmATTACH_FORM,
  1831.         XmNtopAttachment, XmATTACH_FORM,
  1832.         XmNbottomAttachment, XmATTACH_FORM,
  1833.         NULL);
  1834.     XmStringFree(str);
  1835.  
  1836.  
  1837.     XtAddCallback(XtParent(form), XmNactivateCallback, FolderSwitchCB, NULL);
  1838. }
  1839.  
  1840. static void FolderSwitchCB(w, clientData, callData)
  1841. Widget w;
  1842. XtPointer clientData, callData;
  1843. {
  1844.     XmLFolderCallbackStruct *cbs;
  1845.  
  1846.     cbs = (XmLFolderCallbackStruct *)callData;
  1847.     if (cbs->pos == 0)
  1848.         XtVaSetValues(_folder,
  1849.             XmNcornerStyle, XmCORNER_ARC,
  1850.             XmNcornerDimension, 2,
  1851.             XmNtabPlacement, XmFOLDER_TOP,
  1852.             XmNtabsPerRow, 0,
  1853.             NULL);
  1854.     else if (cbs->pos == 1)
  1855.         XtVaSetValues(_folder,
  1856.             XmNcornerStyle, XmCORNER_NONE,
  1857.             XmNtabPlacement, XmFOLDER_BOTTOM,
  1858.             XmNtabsPerRow, 4,
  1859.             NULL);
  1860.     else
  1861.         XtVaSetValues(_folder,
  1862.             XmNcornerStyle, XmCORNER_ARC,
  1863.             XmNcornerDimension, 3,
  1864.             XmNtabPlacement, XmFOLDER_RIGHT,
  1865.             XmNtabsPerRow, 2,
  1866.             NULL);
  1867. }
  1868.  
  1869. /*
  1870.    Grid Tab Form
  1871. */
  1872.  
  1873. static void GridSwitchCB();
  1874. static void GridSample1();
  1875. static void GridSample2();
  1876. static void GridSample3();
  1877. Widget _grid;
  1878.  
  1879. void AddGridTabForm(folder)
  1880. Widget folder;
  1881. {
  1882.     Widget form;
  1883.     XmString str;
  1884.     static char *desc =
  1885.     "The Grid widget provides an editable grid of \
  1886. cells containing text or images in rows and columns.\
  1887. \n\n\
  1888. The Grid One sample above is a multiple row selection Grid which \
  1889. allows column resizing by dragging column headings larger or smaller.  \
  1890. It contains one heading row and has columns fixed on the left and right.  \
  1891. The arrows in the Price column are an example of pixmap (image) cell \
  1892. types.\
  1893. \n\n\
  1894. The Grid Two sample demonstrates cell spanning (the 1995 Income \
  1895. Summary heading spans 2 columns) and control of cell borders, \
  1896. colors and alignment.  This Grid is set to not allow selection.\
  1897. \n\n\
  1898. The Grid Three sample allows editing and is set to allow \
  1899. selection of mulitple rows, columns and/or cells.  Note that an \
  1900. edit may be accepted by pressing Return or by moving to a new \
  1901. location and may be rejected with the Escape key.  You may \
  1902. edit an existing cell's contents using the F2 or Insert key.  \
  1903. This Grid also supports interactive row and column resizing.  \
  1904. Drag and drop is permitted by selecting an area to be dragged \
  1905. and performing a drag-and-drop operation (using mouse button 2) \
  1906. to copy the selected area to another location.\
  1907. \n\n\
  1908. The Grid includes a number of advanced features such as:\
  1909. \n\
  1910.    - string (editable or non-editable XmString format) or pixmap cells\n\
  1911.    - keyboard traversal using arrow keys, page keys, etc.\n\
  1912.    - add, delete, reorder, move and hiding of rows/columns\n\
  1913.    - heading, content and footer rows/columns\n\
  1914.    - top, bottom, left and/or right fixed rows/columns\n\
  1915.    - rows/column intelligently size to cell fonts/images\n\
  1916.    - user-adjustable row/column sizes\n\
  1917.    - cells may span rows/columns\n\
  1918.    - full control of cell borders and colors\n\
  1919.    - 9 cell alignment options (top-left, center, etc)\n\
  1920.    - uses reference-counted cell attributes to save memory\n\
  1921.    - SetValues on ranges of cells/rows/columns\n\
  1922.    - callbacks for select, activate, draw, edit, focus, etc.\n\
  1923.    - cut, paste, drag and drop of cell contents\n\
  1924.    - ASCII file import and export\
  1925. \n\n\
  1926. The Grid widget is ideal for replacing single-column Motif \
  1927. scrolled lists with multi-column lists. Its also perfect for creating \
  1928. high-performance tables.  Tables may be created where the data \
  1929. displayed is not kept in the Grid itself but retrieved from a \
  1930. database when it needs to be displayed.  This direct database \
  1931. access can save memory and time loading/storing the table. \
  1932. Click-sorting may be added to the table to allow a user to \
  1933. sort rows by clicking on a column heading.\
  1934. \n\n\
  1935. Cell attributes in the Grid are reference counted.  If a number \
  1936. of cells in the Grid have similar attributes (color, fonts, etc) \
  1937. they may all contain a pointer to the same attributes structure \
  1938. instead of creating an attributes structure for each individual \
  1939. cell.  This reference counting is transparent to a programmer \
  1940. creating a Grid.\
  1941. \n\n\
  1942. Cells may have borders set on the top, bottom, left and right and \
  1943. have a number of color/alignment options.  Keyboard traversal is \
  1944. provided using the standard Motif key mappings of Page Up, \
  1945. Page Down, Home, etc.  Selection modes are provided to allow \
  1946. selection of a single row (browse mode or single mode), multiple \
  1947. rows and arbitrary regions of rows, columns and cells. \
  1948. Functions are provided to easily import data to and from text \
  1949. files.\
  1950. \n\n\
  1951. The 3.0 release has added resources allowing you to specify cell \
  1952. defaults on a per-column basis (e.g. all cells in column 2 will be \
  1953. editable).  Also, the Grid's layout has improved for sizing policies \
  1954. where scrollbars appear as needed.  The Grid now will use all the \
  1955. space it can for data instead of not using the space where the \
  1956. scrollbars would appear. \
  1957. \n\n\
  1958. A number of resources have been added in the 3.0 release to support \
  1959. better integration with interface builders.  You can now add and \
  1960. delete rows and also set column widths and simple headings through \
  1961. resources.\
  1962. \n\n\
  1963. Internally the Grid is a Manager widget which contains two \
  1964. ScrollBar children and one Text widget child.";
  1965.  
  1966.     form = AddWidgetSample(folder, "Grid", desc);
  1967.  
  1968.     _grid = XtVaCreateManagedWidget("grid",
  1969.         xmlGridWidgetClass, form,
  1970.         XmNleftAttachment, XmATTACH_FORM,
  1971.         XmNrightAttachment, XmATTACH_FORM,
  1972.         XmNtopAttachment, XmATTACH_FORM,
  1973.         XmNbottomAttachment, XmATTACH_FORM,
  1974.         NULL);
  1975.     GridSample1();
  1976.     XtAddCallback(XtParent(form), XmNactivateCallback, GridSwitchCB, NULL);
  1977. }
  1978.  
  1979. static void GridSwitchCB(w, clientData, callData)
  1980. Widget w;
  1981. XtPointer clientData, callData;
  1982. {
  1983.     XmLFolderCallbackStruct *cbs;
  1984.     Pixel bg;
  1985.  
  1986.     cbs = (XmLFolderCallbackStruct *)callData;
  1987.  
  1988.     /* reset defaults to grid */
  1989.     XtVaSetValues(_grid,
  1990.         XmNallowDragSelected, False,
  1991.         XmNallowDrop, False,
  1992.         XmNallowColumnResize, False,
  1993.         XmNallowRowResize, False,
  1994.         XmNhighlightRowMode, False,
  1995.         XmNheadingRows, 0,
  1996.         XmNrows, 0,
  1997.         XmNfooterRows, 0,
  1998.         XmNheadingColumns, 0,
  1999.         XmNcolumns, 0,
  2000.         XmNfooterColumns, 0,
  2001.         XmNshadowThickness, 2,
  2002.         XmNtopFixedCount, 0,
  2003.         XmNbottomFixedCount, 0,
  2004.         XmNleftFixedCount, 0,
  2005.         XmNrightFixedCount, 0,
  2006.         NULL);
  2007.     XtVaGetValues(_grid,
  2008.         XmNbackground, &bg,
  2009.         NULL);
  2010.     XtVaSetValues(_grid,
  2011.         XmNcellDefaults, True,
  2012.         XmNcellBackground, bg,
  2013.         XmNcellAlignment, XmALIGNMENT_CENTER,
  2014.         XmNcellLeftBorderType, XmBORDER_LINE,
  2015.         XmNcellRightBorderType, XmBORDER_LINE,
  2016.         XmNcellTopBorderType, XmBORDER_LINE,
  2017.         XmNcellBottomBorderType, XmBORDER_LINE,
  2018.         NULL);
  2019.  
  2020.     if (cbs->pos == 0)
  2021.         GridSample1();
  2022.     else if (cbs->pos == 1)
  2023.         GridSample2();
  2024.     else
  2025.         GridSample3();
  2026. }
  2027.  
  2028. static Pixmap upPixmap = XmUNSPECIFIED_PIXMAP;
  2029. static Pixmap upPixmask;
  2030. static Pixmap downPixmap = XmUNSPECIFIED_PIXMAP;
  2031. static Pixmap downPixmask;
  2032.  
  2033. #define up_width 12
  2034. #define up_height 16
  2035. static unsigned char up_bits[] = {
  2036.     0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0xfc, 0x03, 0xfe, 0x07,
  2037.     0xfe, 0x07, 0xf6, 0x06, 0xf2, 0x04, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00,
  2038.     0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0x00, 0x00};
  2039.  
  2040. #define down_width 12
  2041. #define down_height 16
  2042. static unsigned char down_bits[] = {
  2043.     0x00, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00, 0xf0, 0x00,
  2044.     0xf0, 0x00, 0xf2, 0x04, 0xf6, 0x06, 0xfe, 0x07, 0xfe, 0x07, 0xfc, 0x03,
  2045.     0xf8, 0x01, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00};
  2046.  
  2047. static void GridSample1()
  2048. {
  2049.     static char *data = 
  2050.     "Name|Price||Change|Close Date|Location|Yield\n\
  2051. TZZ 3.0 Tana Zin|102.23||-1.2|1/1/94|Tomano, RE|5.6%\n\
  2052. BLC 4.5 Board L|103.23||+2.5|2/15/94|Rino, LO|6.8%\n\
  2053. DGB 5.4 Dig Gen|101.53||+3.7|6/20/94|Carolana, CA|7.5%\n\
  2054. KLC 5.3 Kord L|108.98||-2.5|2/15/94|Cannes, CA|8.7%\n\
  2055. LLO 3.4 Liw Lol|107.24||+2.2|2/20/94|Tenise, MI|6.7%\n\
  2056. MMN 3.1 Mon Mor|105.63||+1.4|2/15/94|Waterton, MN|6.3%\n\
  2057. PLP 4.3 Pol Lab|102.12||-2.3|2/20/94|Holard, LM|7.6%\n\
  2058. SZN 4.5 Siml Zi|101.11||+1.6|2/15/94|Tempest, CA|5.4%\n\
  2059. TTL 5.6 Towa Tin|101.12||+2.7|3/15/94|Conila, OK|6.7%\n\
  2060. ULD 5.4 Upl La D|105.12||-2.2|4/15/94|Mandrill, HI|7.8%";
  2061.  
  2062.     XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL);
  2063.  
  2064.     XtVaSetValues(_grid,
  2065.         XmNallowColumnResize, True,
  2066.         XmNselectionPolicy, XmSELECT_MULTIPLE_ROW,
  2067.         XmNhighlightRowMode, True,
  2068.         XmNheadingRows, 1,
  2069.         XmNcolumns, 7,
  2070.         XmNsimpleWidths, "18c 8c 16p 8c 12c 16c 6c",
  2071.         XmNrightFixedCount, 1,
  2072.         XmNleftFixedCount, 1,
  2073.         NULL);
  2074.     XtVaSetValues(_grid,
  2075.         XmNcellDefaults, True,
  2076.         XtVaTypedArg, XmNcellBackground, XmRString, "white", 6,
  2077.         XmNcellLeftBorderType, XmBORDER_NONE,
  2078.         XmNcellRightBorderType, XmBORDER_NONE,
  2079.         XmNcellTopBorderType, XmBORDER_NONE,
  2080.         XmNcellBottomBorderType, XmBORDER_NONE,
  2081.         NULL);
  2082.     XtVaSetValues(_grid,
  2083.         XmNrowType, XmHEADING,
  2084.         XmNcolumn, 1,
  2085.         XmNcellColumnSpan, 1,
  2086.         NULL);
  2087.     XtVaSetValues(_grid,
  2088.         XmNcellDefaults, True,
  2089.         XmNcellAlignment, XmALIGNMENT_RIGHT,
  2090.         NULL);
  2091.     XtVaSetValues(_grid,
  2092.         XmNcellDefaults, True,
  2093.         XmNcolumn, 0,
  2094.         XmNcellAlignment, XmALIGNMENT_LEFT,
  2095.         NULL);
  2096.     XtVaSetValues(_grid,
  2097.         XmNcellDefaults, True,
  2098.         XmNcolumn, 1,
  2099.         XmNcellRightBorderType, XmBORDER_NONE,
  2100.         NULL);
  2101.     XtVaSetValues(_grid,
  2102.         XmNcellDefaults, True,
  2103.         XmNcolumn, 2,
  2104.         XmNcellType, XmPIXMAP_CELL,
  2105.         XmNcellLeftBorderType, XmBORDER_NONE,
  2106.         NULL);
  2107.     XmLGridAddRows(_grid, XmCONTENT, -1, 10);
  2108.     XmLGridSetStrings(_grid, data);
  2109.  
  2110.     if (upPixmap == XmUNSPECIFIED_PIXMAP)
  2111.         CreatePixmap(_grid, 2, &upPixmap, &upPixmask,
  2112.             (char *)up_bits, up_width, up_height);
  2113.     if (downPixmap == XmUNSPECIFIED_PIXMAP)
  2114.         CreatePixmap(_grid, 3, &downPixmap, &downPixmask,
  2115.             (char *)down_bits, down_width, down_height);
  2116.     XtVaSetValues(_grid,
  2117.         XmNcolumn, 2,
  2118.         XmNcellPixmap, upPixmap,
  2119.         XmNcellPixmapMask, upPixmask,
  2120.         NULL);
  2121.     XtVaSetValues(_grid,
  2122.         XmNcolumn, 2,
  2123.         XmNrowStep, 3,
  2124.         XmNcellPixmap, downPixmap,
  2125.         XmNcellPixmapMask, downPixmask,
  2126.         NULL);
  2127.  
  2128.     XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL);
  2129. }
  2130.  
  2131.  
  2132. static void GridSample2()
  2133. {
  2134.     static char *data =
  2135.     "|1995 Income Summary\n\
  2136. |Shampoo|Conditioner|Soap|Total\n\
  2137. Revenues:\n\
  2138. Sales|$ 1,600,000|$ 1,000,000|$  800,000|$ 3,400,000\n\
  2139. Less Discounts|(16,000)|(10,000)|(8,000)|(34,000)\n\
  2140. Less Return Allowance|(8,000)|(5,000)|(4,000)|(17,000)\n\
  2141.   Net Revenue|1,576,000|985,000|792,000|3,349,000\n\
  2142. \n\
  2143. Less Expenses:\n\
  2144. Cost of Goods Sold|(640,000)|(330,000)|(264,000)|(1,234,000)\n\
  2145. Salary Expense|(380,000)|(280,000)|(180,000)|(840,000)\n\
  2146. Marketing Expense|(157,600)|(98,500)|(79,200)|(335,300)\n\
  2147. Rent Expense|(36,000)|(36,000)|(36,000)|(108,000)\n\
  2148. Misc. Other Expense|(36,408)|(22,335)|(16,776)|(75,519)\n\
  2149.   Total Expenses|(1,250,008)|(766,835)|(575,976)|(2,592,819)\n\
  2150. \n\
  2151. Income Tax Expense|(130,397)|(87,266)|(86,410)|(304,072)\n\
  2152. Net Income|195,595|130,899|129,614|456,109";
  2153.  
  2154.     XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL);
  2155.  
  2156.     XtVaSetValues(_grid,
  2157.         XmNheadingColumns, 1,
  2158.         XmNcolumns, 3,
  2159.         XmNfooterColumns, 1,
  2160.         XmNsimpleWidths, "22c 12c 12c 12c 12c",
  2161.         XmNselectionPolicy, XmSELECT_NONE,
  2162.         NULL);
  2163.  
  2164.     /* add 'Income Summary' heading row */
  2165.     XtVaSetValues(_grid, 
  2166.         XmNcellDefaults, True,
  2167.         XmNcellLeftBorderType, XmBORDER_NONE,
  2168.         XmNcellRightBorderType, XmBORDER_NONE,
  2169.         XmNcellTopBorderType, XmBORDER_NONE,
  2170.         XtVaTypedArg, XmNcellBottomBorderColor, XmRString, "black", 6,
  2171.         XmNcellAlignment, XmALIGNMENT_CENTER,
  2172.         XtVaTypedArg, XmNcellForeground, XmRString, "#000080", 8,
  2173.         NULL);
  2174.     XmLGridAddRows(_grid, XmHEADING, -1, 1);
  2175.     XtVaSetValues(_grid,
  2176.         XmNrowType, XmHEADING,
  2177.         XmNrow, 0,
  2178.         XmNcolumn, 0,
  2179.         XmNcellColumnSpan, 2,
  2180.         NULL);
  2181.  
  2182.     /* add 'Shampoo Conditioner Soap' heading row */
  2183.     XtVaSetValues(_grid, 
  2184.         XmNcellDefaults, True,
  2185.         XtVaTypedArg, XmNcellBackground, XmRString, "white", 6,
  2186.         XtVaTypedArg, XmNcellForeground, XmRString, "black", 6,
  2187.         XmNcellBottomBorderType, XmBORDER_NONE,
  2188.         NULL);
  2189.     XmLGridAddRows(_grid, XmHEADING, -1, 1);
  2190.  
  2191.     /* bold heading rows */
  2192.     XtVaSetValues(_grid,
  2193.         XmNrowType, XmHEADING,
  2194.         XmNcolumnType, XmALL_TYPES,
  2195.         XtVaTypedArg, XmNcellFontList, XmRString,
  2196.         BOLDFONT, strlen(BOLDFONT) + 1,
  2197.         NULL);
  2198.  
  2199.     /* add content and footer rows */
  2200.     XtVaSetValues(_grid,
  2201.         XmNcellDefaults, True,
  2202.         XmNcellAlignment, XmALIGNMENT_RIGHT,
  2203.         NULL);
  2204.     XmLGridAddRows(_grid, XmCONTENT, -1, 15);
  2205.     XmLGridAddRows(_grid, XmFOOTER, -1, 1);
  2206.  
  2207.     /* left justify left-most (heading) column */
  2208.     XtVaSetValues(_grid,
  2209.         XmNcolumn, 0,
  2210.         XmNcolumnType, XmHEADING,
  2211.         XmNrowType, XmALL_TYPES,
  2212.         XmNcellAlignment, XmALIGNMENT_LEFT,
  2213.         NULL);
  2214.  
  2215.     /* bold 'Revenues' cell */
  2216.     XtVaSetValues(_grid,
  2217.         XmNcolumnType, XmHEADING,
  2218.         XmNcolumn, 0,
  2219.         XmNrow, 0,
  2220.         XtVaTypedArg, XmNcellFontList, XmRString,
  2221.         BOLDFONT, strlen(BOLDFONT) + 1,
  2222.         NULL);
  2223.  
  2224.     /* bold 'Less Expenses' cell */
  2225.     XtVaSetValues(_grid,
  2226.         XmNcolumnType, XmHEADING,
  2227.         XmNcolumn, 0,
  2228.         XmNrow, 6,
  2229.         XtVaTypedArg, XmNcellFontList, XmRString,
  2230.         BOLDFONT, strlen(BOLDFONT) + 1,
  2231.         NULL);
  2232.  
  2233.     /* grey middle and footer content column */
  2234.     XtVaSetValues(_grid,
  2235.         XmNrowType, XmALL_TYPES,
  2236.         XmNcolumnType, XmALL_TYPES,
  2237.         XmNcolumnRangeStart, 2,
  2238.         XmNcolumnRangeEnd, 4,
  2239.         XmNcolumnStep, 2,
  2240.         XtVaTypedArg, XmNcellBackground, XmRString, "#E8E8E8", 8,
  2241.         NULL);
  2242.  
  2243.     /* set 'Income Summary' heading row yellow */
  2244.     XtVaSetValues(_grid,
  2245.         XmNcolumnType, XmALL_TYPES,
  2246.         XmNrowType, XmHEADING,
  2247.         XmNrow, 0,
  2248.         XtVaTypedArg, XmNcellBackground, XmRString, "#FFFF00", 8,
  2249.         NULL);
  2250.  
  2251.     /* blue and bold 'Net Revenue' and 'Total Expenses' rows */
  2252.     XtVaSetValues(_grid,
  2253.         XmNrowRangeStart, 4,
  2254.         XmNrowRangeEnd, 12,
  2255.         XmNrowStep, 8,
  2256.         XmNcolumnType, XmALL_TYPES,
  2257.         XtVaTypedArg, XmNcellForeground, XmRString, "white", 6,
  2258.         XtVaTypedArg, XmNcellBackground, XmRString, "#000080", 8,
  2259.         XtVaTypedArg, XmNcellFontList, XmRString,
  2260.         BOLDFONT, strlen(BOLDFONT) + 1,
  2261.         NULL);
  2262.  
  2263.     /* blue and bold 'Net Income' footer row */
  2264.     XtVaSetValues(_grid,
  2265.         XmNrow, 0,
  2266.         XmNrowType, XmFOOTER,
  2267.         XmNcolumnType, XmALL_TYPES,
  2268.         XtVaTypedArg, XmNcellForeground, XmRString, "white", 6,
  2269.         XtVaTypedArg, XmNcellBackground, XmRString, "#000080", 8,
  2270.         XtVaTypedArg, XmNcellFontList, XmRString,
  2271.         BOLDFONT, strlen(BOLDFONT) + 1,
  2272.         NULL);
  2273.     XmLGridSetStrings(_grid, data);
  2274.  
  2275.     XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL);
  2276.  
  2277. }
  2278.  
  2279. static void GridSample3()
  2280. {
  2281.     char buf[4];
  2282.     int i;
  2283.  
  2284.     XtVaSetValues(_grid, XmNlayoutFrozen, True, NULL);
  2285.  
  2286.     XtVaSetValues(_grid,
  2287.         XmNallowDragSelected, True,
  2288.         XmNallowDrop, True,
  2289.         XmNhsbDisplayPolicy, XmSTATIC,
  2290.         XmNvsbDisplayPolicy, XmSTATIC,
  2291.         XmNselectionPolicy, XmSELECT_CELL,
  2292.         XmNallowColumnResize, True,
  2293.         XmNallowRowResize, True,
  2294.         XmNshadowThickness, 1,
  2295.         NULL);
  2296.     XtVaSetValues(_grid,
  2297.         XmNcellDefaults, True,
  2298.         XmNcellEditable, True,
  2299.         XmNcellAlignment, XmALIGNMENT_RIGHT,
  2300.         XtVaTypedArg, XmNcellBackground, XmRString, "white", 6,
  2301.         XmNcellLeftBorderType, XmBORDER_NONE,
  2302.         XmNcellTopBorderType, XmBORDER_NONE,
  2303.         NULL);
  2304.     XtVaSetValues(_grid,
  2305.         XmNheadingRows, 1,
  2306.         XmNheadingColumns, 1,
  2307.         XmNcolumns, 26,
  2308.         XmNrows, 100,
  2309.         NULL);
  2310.  
  2311.     XtVaSetValues(_grid, XmNlayoutFrozen, False, NULL);
  2312.     for (i = 0; i < 26; i++)
  2313.     {
  2314.         sprintf(buf, "%c", 'A' + i);
  2315.         XmLGridSetStringsPos(_grid, XmHEADING, 0, XmCONTENT, i, buf);
  2316.     }
  2317.     for (i = 0; i < 100; i++)
  2318.     {
  2319.         sprintf(buf, "%d", i + 1);
  2320.         XmLGridSetStringsPos(_grid, XmCONTENT, i, XmHEADING, 0, buf);
  2321.     }
  2322.     XtVaSetValues(_grid,
  2323.         XmNrowType, XmALL_TYPES,
  2324.         XmNcolumnType, XmHEADING,
  2325.         XmNcolumn, 0,
  2326.         XmNcellAlignment, XmALIGNMENT_CENTER,
  2327.         XtVaTypedArg, XmNcellBackground, XmRString, "#C0C0C0", 8,
  2328.         XtVaTypedArg, XmNcellFontList, XmRString,
  2329.         BOLDFONT, strlen(BOLDFONT) + 1,
  2330.         XmNcellLeftBorderType, XmBORDER_LINE,
  2331.         XmNcellTopBorderType, XmBORDER_LINE,
  2332.         NULL);
  2333.     XtVaSetValues(_grid,
  2334.         XmNrowType, XmHEADING,
  2335.         XmNrow, 0,
  2336.         XmNcellAlignment, XmALIGNMENT_CENTER,
  2337.         XtVaTypedArg, XmNcellBackground, XmRString, "#C0C0C0", 8,
  2338.         XtVaTypedArg, XmNcellFontList, XmRString,
  2339.         BOLDFONT, strlen(BOLDFONT) + 1,
  2340.         XmNcellLeftBorderType, XmBORDER_LINE,
  2341.         XmNcellTopBorderType, XmBORDER_LINE,
  2342.         NULL);
  2343. }
  2344.  
  2345. /*
  2346.    Progress Tab Form
  2347. */
  2348.  
  2349. static void ProgSwitchCB();
  2350. static void ProgSweepCB();
  2351. Widget _progress;
  2352.  
  2353. void AddProgTabForm(folder)
  2354. Widget folder;
  2355. {
  2356.     Widget form, button;
  2357.     XmString str;
  2358.     static char *desc =
  2359.     "The Progress widget may be used to chart the completion of a task.\
  2360. \n\n\
  2361. The Progress One sample displays a standard bar-style Progress widget.  \
  2362. You may press the Quick Sweep or the Slow Sweep button to chart progress \
  2363. of a simulated task.\
  2364. \n\n\
  2365. The Progress Two sample displays a box-style Progress widget with 20 boxes.\
  2366. \n\n\
  2367. The Progress Three sample contains a bar-style Progress widget which \
  2368. displays elapsed time and estimated time to completion.  \
  2369. Press the Slow Sweep button to display this behavior.  These \
  2370. times are calculated automatically by the Progress widget. \
  2371. \n\n\
  2372. Resources exist to set colors, fonts, shadows, the style of the \
  2373. meter bar and the values used to determine level of completeness. \
  2374. \n\n\
  2375. The Progress widget is a subclasss of the Primitive widget.";
  2376.  
  2377.     form = AddWidgetSample(folder, "Progress", desc);
  2378.     _progress = XtVaCreateManagedWidget("progress",
  2379.         xmlProgressWidgetClass, form,
  2380.         XmNleftAttachment, XmATTACH_FORM,
  2381.         XmNrightAttachment, XmATTACH_FORM,
  2382.         XmNtopAttachment, XmATTACH_POSITION,
  2383.         XmNtopPosition, 30,
  2384.         XmNheight, 24,
  2385.         XmNvalue, 50,
  2386.         XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8,
  2387.         XtVaTypedArg, XmNbackground, XmRString, "white", 6,
  2388.         NULL);
  2389.     button = XtVaCreateManagedWidget("Quick Sweep",
  2390.         xmPushButtonWidgetClass, form,
  2391.         XmNbottomAttachment, XmATTACH_FORM,
  2392.         XmNrightAttachment, XmATTACH_FORM,
  2393.         XmNmarginWidth, 15,
  2394.         NULL);
  2395.     XtAddCallback(button, XmNactivateCallback, ProgSweepCB, (XtPointer)1);
  2396.     button = XtVaCreateManagedWidget("Slow Sweep",
  2397.         xmPushButtonWidgetClass, form,
  2398.         XmNrightAttachment, XmATTACH_WIDGET,
  2399.         XmNrightWidget, button,
  2400.         XmNbottomAttachment, XmATTACH_FORM,
  2401.         XmNmarginWidth, 15,
  2402.         NULL);
  2403.     XtAddCallback(button, XmNactivateCallback, ProgSweepCB, (XtPointer)0);
  2404.     XtAddCallback(XtParent(form), XmNactivateCallback, ProgSwitchCB, NULL);
  2405. }
  2406.  
  2407. static void ProgSwitchCB(w, clientData, callData)
  2408. Widget w;
  2409. XtPointer clientData, callData;
  2410. {
  2411.     XmLFolderCallbackStruct *cbs;
  2412.  
  2413.     cbs = (XmLFolderCallbackStruct *)callData;
  2414.     if (cbs->pos == 0)
  2415.         XtVaSetValues(_progress,
  2416.             XmNvalue, 50,
  2417.             XmNshadowThickness, 2,
  2418.             XmNmeterStyle, XmMETER_BAR,
  2419.             XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8,
  2420.             XmNshowTime, False,
  2421.             NULL);
  2422.     else if (cbs->pos == 1)
  2423.         XtVaSetValues(_progress,
  2424.             XmNvalue, 50,
  2425.             XmNshadowThickness, 1,
  2426.             XmNmeterStyle, XmMETER_BOXES,
  2427.             XmNnumBoxes, 20,
  2428.             XtVaTypedArg, XmNforeground, XmRString, "#0000C0", 8,
  2429.             XmNshowTime, False,
  2430.             NULL);
  2431.     else
  2432.         XtVaSetValues(_progress,
  2433.             XmNvalue, 50,
  2434.             XmNshadowThickness, 2,
  2435.             XmNmeterStyle, XmMETER_BAR,
  2436.             XtVaTypedArg, XmNforeground, XmRString, "#E00000", 8,
  2437.             XmNshowTime, True,
  2438.             NULL);
  2439. }
  2440.  
  2441. static void ProgSweepCB(w, clientData, callData)
  2442. Widget w;
  2443. XtPointer clientData;
  2444. XtPointer callData;
  2445. {
  2446.     int i, quickSweep;
  2447.  
  2448.     quickSweep = (int)clientData;
  2449.     if (quickSweep)
  2450.         for (i = 0; i <= 100; i += 4)
  2451.             XtVaSetValues(_progress,
  2452.                 XmNvalue, i,
  2453.                 NULL);
  2454.     else
  2455.     {
  2456.         for (i = 0; i <= 100; i += 23)
  2457.         {
  2458.             XtVaSetValues(_progress,
  2459.                 XmNvalue, i,
  2460.                 NULL);
  2461.             sleep(1);
  2462.         }
  2463.         XtVaSetValues(_progress,
  2464.             XmNvalue, 100,
  2465.             NULL);
  2466.     }
  2467. }
  2468.  
  2469. /*
  2470.    Tree Tab Form
  2471. */
  2472.  
  2473. static void TreeSwitchCB();
  2474. static void TreeSample();
  2475. Widget _tree;
  2476.  
  2477. void AddTreeTabForm(folder)
  2478. Widget folder;
  2479. {
  2480.     Widget form, w;
  2481.     XmString str;
  2482.     static char *desc =
  2483.     "The Tree widget may be used to display hierarchical data and \
  2484. parent-child relationships.\
  2485. \n\n\
  2486. The Tree One sample contains a simple Tree in browse select mode.  \
  2487. Note that horizontal scrolling is on a per-pixel basis while vertical \
  2488. scrolling is on a per-row basis and the horizontal and vertical \
  2489. scrollbars only appear as needed.  The plus and minus indicators \
  2490. may be used to expand and collapse rows.  Activating a row \
  2491. with Return or by double clicking on it will toggle the expanded \
  2492. state of the row.\
  2493. \n\n\
  2494. The Tree Two sample contains a Tree in multiple row select mode with \
  2495. application defined pixmaps.\
  2496. \n\n\
  2497. The Tree Three sample displays a Tree in browse select mode containing \
  2498. multiple columns.  The columns support interactive resizing by \
  2499. dragging a column heading larger or smaller.\
  2500. \n\n\
  2501. The Tree widget is a subclass of the Grid, meaning it includes all the \
  2502. functionality of the Grid widget.  This includes selection policies \
  2503. of single row, multiple row, etc. as well as full control over colors, \
  2504. fonts, alignment, borders, etc. on a per-cell basis.  The Tree \
  2505. also supports all the other features of the Grid, including heading, \
  2506. content and footer rows and columns, various cell types etc.\
  2507. \n\n\
  2508. An application may add rows to the Tree and let the Tree handle \
  2509. the expansion and collapse of rows, or for large trees, \
  2510. an application may handle the expansion and collapse of rows \
  2511. by adding (creating) and deleting rows dynamically as needed.\
  2512. \n\n\
  2513. Resources exist to set the indent level, various colors of the \
  2514. Tree, etc.  As stated earlier, the Tree also contains all the \
  2515. resources available in the Grid.\
  2516. \n\n\
  2517. This widget is new in the 3.0 release.";
  2518.  
  2519.     form = AddWidgetSample(folder, "Tree", desc);
  2520.     _tree = XtVaCreateManagedWidget("tree",
  2521.         xmlTreeWidgetClass, form,
  2522.         XmNleftAttachment, XmATTACH_FORM,
  2523.         XmNrightAttachment, XmATTACH_FORM,
  2524.         XmNtopAttachment, XmATTACH_FORM,
  2525.         XmNbottomAttachment, XmATTACH_FORM,
  2526.         NULL);
  2527.     TreeSample(0);
  2528.     XtAddCallback(XtParent(form), XmNactivateCallback, TreeSwitchCB, NULL);
  2529. }
  2530.  
  2531. static void TreeSwitchCB(w, clientData, callData)
  2532. Widget w;
  2533. XtPointer clientData, callData;
  2534. {
  2535.     XmLFolderCallbackStruct *cbs;
  2536.  
  2537.     cbs = (XmLFolderCallbackStruct *)callData;
  2538.     TreeSample(cbs->pos);
  2539. }
  2540.  
  2541. #define dot_width 16
  2542. #define dot_height 16
  2543. static unsigned char dot_bits[] = {
  2544.     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x07, 0xe0, 0x0f, 0xb0, 0x1f,
  2545.     0x18, 0x3f, 0xb8, 0x3f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf8, 0x3f, 0xf0, 0x1f,
  2546.     0xe0, 0x0f, 0xc0, 0x07, 0x00, 0x00, 0x00, 0x00};
  2547.  
  2548. #define win_width 16
  2549. #define win_height 16
  2550. static unsigned char win_bits[] = {
  2551.     0x00, 0x00, 0x00, 0x00, 0xf8, 0x3f, 0x08, 0x40, 0xe8, 0x6f, 0xe8, 0x61,
  2552.     0xe8, 0x61, 0xe8, 0x61, 0x28, 0x60, 0x28, 0x60, 0x28, 0x60, 0x08, 0x60,
  2553.     0x08, 0x60, 0xe8, 0x7f, 0xf0, 0x7f, 0x00, 0x00};
  2554.  
  2555. static Pixmap dotPixmap = XmUNSPECIFIED_PIXMAP;
  2556. static Pixmap dotPixmask;
  2557. static Pixmap winPixmap = XmUNSPECIFIED_PIXMAP;
  2558. static Pixmap winPixmask;
  2559.  
  2560. static void TreeSample(num)
  2561. int num;
  2562. {
  2563.     XmLTreeRowDefinition *rows;
  2564.     int i, n, size, level;
  2565.     Pixel bg;
  2566.     char buf[80];
  2567.     static struct
  2568.                     {
  2569.         Boolean expands;
  2570.         int level;
  2571.     } defs[10] =
  2572.     {
  2573.         True, 0,
  2574.         True, 1,
  2575.         True, 2,
  2576.         False, 3,
  2577.         False, 2,
  2578.         False, 2,
  2579.         True, 1,
  2580.         False, 2,
  2581.         False, 2,
  2582.         True, 2,
  2583.     };
  2584.  
  2585.     if (dotPixmap == XmUNSPECIFIED_PIXMAP)
  2586.         CreatePixmap(_tree, 4, &dotPixmap, &dotPixmask,
  2587.             (char *)dot_bits, dot_width, dot_height);
  2588.     if (winPixmap == XmUNSPECIFIED_PIXMAP)
  2589.         CreatePixmap(_tree, 1, &winPixmap, &winPixmask,
  2590.             (char *)win_bits, win_width, win_height);
  2591.  
  2592.     XtVaSetValues(_tree,
  2593.         XmNlayoutFrozen, True,
  2594.         NULL);
  2595.  
  2596.     XmLGridDeleteAllRows(_tree, XmCONTENT);
  2597.     XtVaSetValues(_tree,
  2598.         XmNallowColumnResize, False,
  2599.         XmNheadingRows, 0,
  2600.         XmNcolumns, 1,
  2601.         XmNshadowThickness, 1,
  2602.         XmNselectionPolicy, XmSELECT_BROWSE_ROW,
  2603.         XmNhighlightRowMode, False,
  2604.         XmNglobalPixmapWidth, 0,
  2605.         XmNglobalPixmapHeight, 0,
  2606.         NULL);
  2607.     XtVaSetValues(_tree,
  2608.         XmNcolumn, 0,
  2609.         XmNcolumnSizePolicy, XmVARIABLE,
  2610.         NULL);
  2611.     XtVaGetValues(_tree,
  2612.         XmNbackground, &bg,
  2613.         NULL);
  2614.     XtVaSetValues(_tree,
  2615.         XmNcellDefaults, True,
  2616.         XmNcellBackground, bg,
  2617.         XmNcellLeftBorderType, XmBORDER_LINE,
  2618.         XmNcellRightBorderType, XmBORDER_LINE,
  2619.         XmNcellTopBorderType, XmBORDER_LINE,
  2620.         XmNcellBottomBorderType, XmBORDER_LINE,
  2621.         XmNcellAlignment, XmALIGNMENT_CENTER,
  2622.         NULL);
  2623.  
  2624.     n = 100;
  2625.  
  2626.     if (num == 1)
  2627.         XtVaSetValues(_tree,
  2628.             XmNselectionPolicy, XmSELECT_MULTIPLE_ROW,
  2629.             XmNglobalPixmapWidth, 16,
  2630.             XmNglobalPixmapHeight, 16,
  2631.             NULL);
  2632.     else if (num == 2)
  2633.         XtVaSetValues(_tree,
  2634.             XmNhighlightRowMode, True,
  2635.             XmNheadingRows, 1,
  2636.             XmNcolumns, 5,
  2637.             XmNsimpleHeadings, "Object|Position|Size|Method|Note",
  2638.             XmNsimpleWidths, "1c 10c 10c 15c 15c",
  2639.             XmNallowColumnResize, True,
  2640.             NULL);
  2641.  
  2642.     XtVaSetValues(_tree,
  2643.         XmNcellDefaults, True,
  2644.         XtVaTypedArg, XmNcellBackground, XmRString, "white", 6,
  2645.         XmNcellLeftBorderType, XmBORDER_NONE,
  2646.         XmNcellRightBorderType, XmBORDER_NONE,
  2647.         XmNcellTopBorderType, XmBORDER_NONE,
  2648.         XmNcellBottomBorderType, XmBORDER_NONE,
  2649.         XmNcellAlignment, XmALIGNMENT_RIGHT,
  2650.         NULL);
  2651.     if (num == 2)
  2652.         XtVaSetValues(_tree,
  2653.             XmNcellDefaults, True,
  2654.             XmNcolumnRangeStart, 3,
  2655.             XmNcolumnRangeEnd, 4,
  2656.             XmNcellAlignment, XmALIGNMENT_CENTER,
  2657.             NULL);
  2658.  
  2659.     size = sizeof(XmLTreeRowDefinition);
  2660.     rows = (XmLTreeRowDefinition *)malloc(size * n);
  2661.     level = 0;
  2662.     for (i = 0; i < n; i++)
  2663.     {
  2664.         rows[i].level = defs[i % 10].level;
  2665.         rows[i].expands = defs[i % 10].expands;
  2666.         rows[i].isExpanded = True;
  2667.         if (num < 2)
  2668.         {
  2669.             if (i % 30 >= 10)
  2670.                 rows[i].level += 3;
  2671.             if (i % 30 >= 20)
  2672.                 rows[i].level += 3;
  2673.         }
  2674.         if (num != 1)
  2675.         {
  2676.             rows[i].pixmap = XmUNSPECIFIED_PIXMAP;
  2677.             rows[i].pixmask = XmUNSPECIFIED_PIXMAP;
  2678.         }
  2679.         else
  2680.         {
  2681.             if (rows[i].expands == True)
  2682.             {
  2683.                 rows[i].pixmap = dotPixmap;
  2684.                 rows[i].pixmask = dotPixmask;
  2685.             }
  2686.             else
  2687.             {
  2688.                 rows[i].pixmap = winPixmap;
  2689.                 rows[i].pixmask = winPixmask;
  2690.             }
  2691.         }
  2692.         if (num == 0)
  2693.             sprintf(buf, "Row %d Level %d\n", i, rows[i].level);
  2694.         else if (num == 2)
  2695.         {
  2696.             if (rows[i].expands)
  2697.                 sprintf(buf, "Composite");
  2698.             else if (i % 5)
  2699.                 sprintf(buf, "Curve");
  2700.             else
  2701.                 sprintf(buf, "Surface");
  2702.         }
  2703.         else
  2704.         {
  2705.             if (rows[i].expands == True)
  2706.                 sprintf(buf, "Sector Number %d-%d%d",
  2707.                     rows[i].level, i % 2, i + 413);
  2708.             else
  2709.                 sprintf(buf, "Item Number %d%d%d", i % 12, i % 3, i % 2);
  2710.         }
  2711.         rows[i].string = XmStringCreateSimple(buf);
  2712.     }
  2713.     XmLTreeAddRows(_tree, rows, n, -1);
  2714.     for (i = 0; i < n; i++)
  2715.     {
  2716.         XmStringFree(rows[i].string);
  2717.         if (num == 2)
  2718.         {
  2719.             sprintf(buf, "%d %d|%d points|Open|In Progress",
  2720.                 i % 20, i % 15, i % 4);
  2721.             XmLGridSetStringsPos(_tree, XmCONTENT, i, XmCONTENT, 1, buf);
  2722.         }
  2723.     }
  2724.     free((char *)rows);
  2725.  
  2726.     XtVaSetValues(_tree,
  2727.         XmNlayoutFrozen, False,
  2728.         NULL);
  2729. }
  2730.