/*****************************************************************************/
/* T.A.G. Bulletin Board System                                              */
/* Copyright (c) 1986-1993 by The T.A.G. Team                                */
/* All rights reserved.                                                      */
/*                                                                           */
/*                    -----------------------------------                    */
/*                    T.A.G. Version 2.6e Data Structures                    */
/*                    -----------------------------------                    */
/*             Converted from Turbo Pascal to C by Martin Pollard            */
/*                                                                           */
/* All we ask if you use these record structures is to give credit where     */
/* credit is due.                                                            */
/*                                                                           */
/* Additional structure information may be given out on an individual        */
/* basis depending on the situation.                                         */
/*                                                                           */
/* RELEASE HISTORY:                                                          */
/*                                                                           */
/* 01/24/93 - Initial release.                                               */
/* 02/17/93 - Corrected errors in definitions for SystatRec, ModemRec, and   */
/*            MboardType.                                                    */
/* 04/27/93 - Re-Released without change for version 2.6e (Paul Williams)    */
/*                                                                           */
/*---------------------------------------------------------------------------*/
/*                                                                           */
/* NOTES TO PROGRAMMERS:                                                     */
/*                                                                           */
/* Turbo Pascal strings are formatted differently than C strings:            */
/*                                                                           */
/*      Turbo Pascal:   length byte + string data                            */
/*      C:              string data + '\0' (zero)                            */
/*                                                                           */
/* You will have to write conversion routines to convert strings back and    */
/* forth between TP and C formats if you wish to use strings.                */
/*                                                                           */
/* Also, C has no direct equivalent to Turbo Pascal's "real" type for real   */
/* numbers (C's "float" and "double" do not use the same format).  If you    */
/* wish to use real numbers, you will have to write conversion routines.     */
/*                                                                           */
/* NOTE THAT THERE IS NO ATTEMPT HERE TO TEACH YOU HOW TO ACCESS T.A.G. DATA */
/* FILES USING THE C LANGUAGE.  IT IS ASSUMED THAT YOU ALREADY KNOW HOW TO   */
/* PROGRAM IN C, AND ARE FAMILIAR WITH THE INS AND OUTS OF ACCESSING FIXED-  */
/* LENGTH RECORD DATA FILES (SUCH AS THE ONES T.A.G. USES).                  */
/*                                                                           */
/*****************************************************************************/

#ifndef __TAGREC_H      /* Prevents header from being included */
#define __TAGREC_H      /* twice in the same program or module */

typedef unsigned char Boolean;  /* C equivalent for TP "boolean" type */
                                /* (0 is FALSE, non-0 is TRUE)        */
typedef unsigned char Byte;     /* C equivalent for TP "byte" type */
typedef unsigned char Char;     /* C equivalent for TP "char" type  */
                                /* (ensures values in 0..255 range) */
typedef int Integer;            /* C equivalent for TP "integer" type */
typedef long Longint;           /* C equivalent for TP "longint" type */
typedef unsigned int Word;      /* C equivalent for TP "word" type */

typedef unsigned char Real[6];  /* C has no equivalent for TP "real" type! */

typedef unsigned int Bit;       /* shorthand operator for bit fields   */
                                /* (ensures returning positive values) */

/*---------------------------------------------------------------------------*/

/***************************************************************************/
/* The following values are used by the system for user fields             */
/* "ask"  values will be asked of the user the next time they logon if the */
/*        question is part of the new user logon                           */
/* "none" values are normally for optional fields where the user simply    */
/*        pressed <enter>                                                  */
/***************************************************************************/

#define USER_STRING_ASK     " "     /* Ask for user string fields */
#define USER_STRING_NONE    ""      /* None for user string fields */
#define USER_DATE_ASK       0xFE21  /* Ask for user date fields - 1/1/2027 */
#define USER_DATE_NONE      0x0021  /* None for user date fields - 1/1/0 */
#define USER_WORD_ASK       65535U  /* Ask for user word fields */
#define USER_WORD_NONE      65534U  /* None for user word fields */
#define USER_CHAR_ASK       '~'     /* Ask for user character fields */
#define USER_CHAR_NONE      ' '     /* None for user character fields */
#define USER_PHONE_ASK      " "     /* Ask for user phone fields */
#define USER_PHONE_NONE     ""      /* None for user phone fields */

/*---------------------------------------------------------------------------*/

#define DYN_DEFAULT     0           /* Default */
#define DYN_YES         1           /* Yes */
#define DYN_NO          2           /* No */

typedef Byte DefaultYesNoType;     /* Default/yes/no type */

typedef Char ArFlagType;        /* AR flags (@..Z) */
typedef Byte ArFlagset[4];      /* Set of AR flags                 */
                                /* Byte 0 = bits 0..7 = Flags @..G */
                                /* Byte 1 = bits 0..7 = Flags H..O */
                                /* Byte 2 = bits 0..7 = Flags P..W */
                                /* Byte 3 = bits 0..2 = Flags X..Z */

typedef struct      /* User special flags */
{
    Bit AutoPrivDel : 1;    /* A = Force user to delete private mail */
    Bit NoPostCall : 1;     /* B = No post call ratio */
    Bit ForceULScan : 1;    /* C = Force this user to automatically scan */
                            /*     when uploading */
    Bit Ranon : 1;          /* D = Restrict from posting anonymous */
    Bit RbbsList : 1;       /* E = Restrict from adding to other BBS list */
    Bit Rchat : 1;          /* F = Restrict from chatting */
    Bit NoDLlimit : 1;      /* G = No download ratio limit */
    Bit RpubMsg : 1;        /* H = Restrict from posting public mail */
    Bit RprivMsg : 1;       /* I = Restrict from sending private mail */
    Bit Rvoting : 1;        /* J = Restrict from voting */
    Bit OneCall : 1;        /* K = One call per day allowed */
    Bit PubNotVal : 1;      /* L = Public posts are not validated */
    Bit ProtDel : 1;        /* M = Protect from deletion */
    Bit NoFilePts : 1;      /* N = No file point checks */
    Bit RfileVal : 1;       /* O = Credit from upload on validation */
    Bit Pause : 1;          /* P = [PAUSE] active */
    Bit Ansi : 1;           /* Q = ANSI graphics active */
    Bit Color : 1;          /* R = Color active if ANSI present */
    Bit OneKey : 1;         /* S = Onekey input used instead of line input */
    Bit Alert : 1;          /* T = Alert active from user's next call */
    Bit FlagRecUnused : 1;  /* U = Reserved */
    Bit MboxClosed : 1;     /* V = Mail box closed to all but SysOp's */
    Bit Tabs : 1;           /* W = VT100 tabs are used to optimize display */
    Bit ClsChar : 1;        /* X = Clear screen characters used */
}
FlagSet;    /* 3 bytes used for 24 flags in set */

typedef struct
{
    Bit IsCdRom : 1;
    Bit uuUlRecFlag1 : 1;
    Bit uuUlRecFlag2 : 1;
    Bit uuUlRecFlag3 : 1;
    Bit uuUlRecFlag4 : 1;
    Bit uuUlRecFlag5 : 1;
    Bit uuUlRecFlag6 : 1;
    Bit uuUlRecFlag7 : 1;
}
UlRecFlagSet;

typedef struct      /* User configuration flags */
{
    Bit UseCustomMenus : 1;     /* A = Allow custom ANSI menus */
    Bit ClsMsgRead : 1;         /* B = Clear screen between reading messages */
    Bit DoNotDisturbUser : 1;   /* C = Do not disturb user (multi-user only) */
    Bit uuCFFlag21 : 1;         /* D = Reserved */
    Bit uuCFFlag20 : 1;         /* E = Reserved */
    Bit uuCFFlag19 : 1;         /* F = Reserved */
    Bit uuCFFlag18 : 1;         /* G = Reserved */
    Bit uuCFFlag17 : 1;         /* H = Reserved */
    Bit uuCFFlag16 : 1;         /* I = Reserved */
    Bit uuCFFlag15 : 1;         /* J = Reserved */
    Bit uuCFFlag14 : 1;         /* K = Reserved */
    Bit uuCFFlag13 : 1;         /* L = Reserved */
    Bit uuCFFlag12 : 1;         /* M = Reserved */
    Bit uuCFFlag11 : 1;         /* N = Reserved */
    Bit uuCFFlag10 : 1;         /* O = Reserved */
    Bit uuCFFlag9 : 1;          /* P = Reserved */
    Bit uuCFFlag8 : 1;          /* Q = Reserved */
    Bit uuCFFlag7 : 1;          /* R = Reserved */
    Bit uuCFFlag6 : 1;          /* S = Reserved */
    Bit uuCFFlag5 : 1;          /* T = Reserved */
    Bit uuCFFlag4 : 1;          /* U = Reserved */
    Bit uuCFFlag3 : 1;          /* V = Reserved */
    Bit uuCFFlag2 : 1;          /* W = Reserved */
    Bit uuCFFlag1 : 1;          /* X = Reserved */
}
ConfigFlagSet;      /* 3 bytes used for 24 flags in set */

/************************************************/
/* ColorRec = Array of B&W / Color  Color Bytes */
/************************************************/

typedef Byte ColorRec[2][10];   /* ColorRec[0][x] = B&W          */
                                /* ColorRec[1][x] = Color        */
                                /* x = 0..9 = Actual Color Codes */

/*---------------------------------------------------------------------------*/

typedef struct      /* User name index - NAMES.LST */
{
    Char Name[37];      /* User name */
    Integer Number;     /* User number */
}
SmalRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* User log - USER.LST */
{
    Char Uname[37];             /* User name */
    Char Rname[37];             /* Real name */
    Char ADDR[31];              /* Address */
    Char ComType[31];           /* Computer type */
    Char CityState[31];         /* City/State */
    Char Snote[31];             /* SysOp note */

    Word LastDate;              /* Last date on - Semi-MS-DOS 1900 based fmt */
    Word LastTime;              /* Last time on - MS-DOS format */

    Char PW[17];                /* Password */
    Char Phone[13];             /* Phone number 1 */
    Char Zcode[11];             /* Zip code */
    Char Phone2[13];            /* Phone number 2 */

    Char ExtraStr1[41];         /* Extra string 1 */
    Char ExtraStr2[41];         /* Extra string 2 */
    Char ExtraStr3[41];         /* Extra string 3 */

    Word ExtraDate1;            /* Extra date 1 - Semi-MS-DOS 1900 based fmt */
    Word ExtraDate2;            /* Extra date 2 - Semi-MS-DOS 1900 based fmt */

    Word ExtraWord1;            /* Extra word 1 */
    Word ExtraWord2;            /* Extra word 2 */
    Word ExtraWord3;            /* Extra word 3 */
    Word ExtraWord4;            /* Extra word 4 */

    Char ExtraChar1;            /* Extra character 1 */
    Char ExtraChar2;            /* Extra character 2 */
    Char ExtraChar3;            /* Extra character 3 */
    Char ExtraChar4;            /* Extra character 4 */

    Char ExtraPhone[13];        /* Extra phone */

    Byte uureserved[3];         /* Reserved */

    /*************************************************************/
    /* Vote  = An array of Voting Answers, One for each question */
    /*************************************************************/

    Byte Vote[20];              /* Voting */

    /**********************************************************************/
    /* Call spread for last 15 calls - Number  of days between each call: */
    /* 0      = Called the same day                                       */
    /* 1..253 = X number of days between                                  */
    /* 254    = 254 or more days between                                  */
    /* 255    = Element not used yet                                      */
    /**********************************************************************/

    Byte CallSpr[15];           /* Call spread */

    Real Ttimeon;               /* Total time on system in minutes */
    Real UlK;                   /* UL K-Bytes */
    Real Dlk;                   /* DL K-Bytes */

    /**********************************************************/
    /* UserNum = The User number                              */
    /*           0  -----------------------------> Deleted    */
    /*           Same as Record Number ----------> Normal     */
    /*           Different from Record Number ---> Locked Out */
    /**********************************************************/

    Integer UserNum;            /* User number */

    Word PrivPost;              /* Private posts */
    Word PubPost;               /* Public posts */
    Word FeedBack;              /* Feedback sent to SysOp */
    Word NumCalls;              /* Total number of calls to system */
    Word NumUL;                 /* Number of uploads */
    Word NumDL;                 /* Number of downloads */

    /*********************************************************/
    /* Fmail = Status of Mail Forwarding                     */
    /*           0  --------> Forwarding inactive            */
    /*           Other  ----> User Number to forward mail to */
    /*********************************************************/

    Integer Fmail;              /* Forward mail to which user number */

    Word Hbaud;                 /* Highest baud rate user supports */
    Word TimeToday;             /* Minutes on system date of last call */
    Word Credit;                /* Credit for mail in cents */
    Word Debit;                 /* Debit for mail in cents */
    Word Points;                /* File points */
    Word TimeBank;              /* Minutes in time bank */
    Word Bday;                  /* Birthdate of user - Semi-MS-DOS format */
    Word LastChange;            /* Reserved */

    Byte StrtMenu;              /* Reserved */
    Byte SL;                    /* Security level - SL */
    Byte DSL;                   /* Download security level - DSL */
    Byte Hlvl;                  /* Help level */
    Byte Colms;                 /* Number of screen columns */
    Byte Lines;                 /* Number of screen lines */
    Byte Callstoday;            /* Number of calls to system today */
    Byte Illegal;               /* Illegal logon attempts */

    Char Gender;                /* User gender M/F/' '=not specified */

    Byte uulMsgBase;            /* Last message base */
    Byte uuLdlBase;             /* Last file section */
    Byte Cls;                   /* Reserved */

    DefaultYesNoType FullEdit;  /* Full screen editor status */

    ArFlagset Ar;               /* AR flag set */

    FlagSet Flags;              /* Special flag set */

    Word FirstOn;               /* Date first on - Semi-MS-DOS format */
    Word Expires;               /* Date expires - Semi-MS-DOS format */

    Byte UserRecUnused[29];     /* Reserved */

    ColorRec Colors;            /* User colors */

    Byte TBdeposit;             /* Time deposited in bank last call */
    Byte TBwithdraw;            /* Time withdraw from bank last call */

    Integer AdjTime;            /* Adjusted time date of last call */

    ConfigFlagSet ConfigFlags;  /* Configuration Flags */

    Word lMbase;                /* Last message section */
    Word lFbase;                /* Last file section */

    Byte Unused[5];             /* Reserved */
}
UserRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Short messages - SHORTMSG.DAT */
{
    Char Msg[161];      /* Message text */
    Integer Destin;     /* User number of who message is to */
}
SmallMessageRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Voting questions - VOTING.DAT */
{
    Char Question[75];      /* Question */
    Word NumA;              /* Number of answers in below array */
    struct                  /* Array of answer data */
    {
        Char Ans[41];       /* Answer */
        Word NumRes;        /* Number of users who chose this response */
    }
    Answ[10];
}
Vdatar;

/*---------------------------------------------------------------------------*/

typedef struct      /* File section - FBOARDS.DAT */
{
    Char Name[40];          /* Section name 26 Real Len, Rest Colors */
    Char Filename[9];       /* Listing filename (does not include ".DIR")  */
                            /*   If UL and DL paths are different,         */
                            /*     filename for upload section is "FILES"  */
                            /*   If first character is "@" then *.DIR file */
                            /*     is found in main data files directory   */
    Char DlPathname[31];    /* Download pathname */
    Char UlPathName[31];    /* Upload pathname */
    Char Password[16];      /* Password required */
    UlRecFlagSet Flags;
    Byte DSL;               /* DSL required */
    Byte SeeNames;          /* DSL required to see uploader names */
    ArFlagType ArLvl;       /* AR flag required */
    Byte NoRatioGroupNum;   /* Bit 0    = Ratio disabled */
                            /* Bits 1-7 = Group number */
}
UlRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Set of file flags */
{
    Bit NotValidated : 1;       /* File is not validated */
    Bit OwnerRestricted : 1;    /* Uploader did not receive credit on upload */
    Bit uuF6 : 1;               /* Reserved */
    Bit uuF5 : 1;               /* Reserved */
    Bit uuF4 : 1;               /* Reserved */
    Bit uuF3 : 1;               /* Reserved */
    Bit uuF2 : 1;               /* Reserved */
    Bit uuF1 : 1;               /* Reserved */
}
FlagRecSet;     /* 1 byte used for 8 flags in set */

typedef struct      /* File listing - *.DIR */
{
    Char Filename[13];      /* File name */
    Char Description[79];   /* Description */
    Word Nacc;              /* Number of times file downloaded */
    Byte Unused;            /* Reserved */
    Word Blocks;            /* Number of 128 byte blocks in file */
    Char Owner[37];         /* Uploader of file */
    Char Date[9];           /* Date file uploaded */
    Word DateN;             /* Date uploaded in days since Jan 1, 1985 */
    FlagRecSet Flag;        /* File status */
    Byte Points;            /* File points */
}
UlfRec;

/*---------------------------------------------------------------------------*/

#define NUMSHELLFILES       13  /* # currently defined internal shell files */

typedef struct
{
    DefaultYesNoType useswap;   /* Swap shell setting */
    struct                      /* Shell file flags */
    {
        Bit shellshowcall : 1;
        Bit shelllogcall : 1;
    }
    flags;
}
shellfilerec;

typedef shellfilerec                    /* Array of shell files */
        shellfilelist[NUMSHELLFILES];

#define NUMNEWUSERQUESTS    29  /* Number of current new user questions */

typedef struct
{
    Byte itemnum;       /* Item number to ask or 0=inactive */
    Boolean required;   /* Required/optional */
}
newuserquestrec;

typedef newuserquestrec                         /* Array of new   */
        newuserquestlist[NUMNEWUSERQUESTS];     /* user questions */

typedef Word Range[256];    /* Range of values for all security levels */

/*****************************************************/
/* Provide for full 4D awareness (And point support) */
/*****************************************************/

typedef struct      /* Fidonet Style Address (23 Bytes) */
{
    Word Zone;          /* Zone, 1   = N. America */
    Word Net;           /* Net,  120 = SE Michigan */
    Word Node;          /* Node, 116 = CRIMP BBS */
    Word Point;         /* Point, 99% of the time = 0 */
    Char Domain[16];    /* As in FIDONET */
}
AddressType;

/*---------------------------------------------------------------------------*/

typedef struct      /* System status - STATUS.DAT */
{
    Char AltPath[41];           /* Alternate file path */
    Char DictPath[41];          /* Dictionary path */

    Byte DefReadMsgMenu;        /* Wait screen read message menu */

    Boolean dynamicmsg;         /* Dynamic message numbering active */
    Boolean dynamicfile;        /* Dynamic file numbering active */
    Boolean waitscreendisable;  /* Wait screen activity disable */
    Boolean requiredvoting;     /* Require voting when user logs on */

    Byte automsglines;          /* Auto message number of lines */
    Byte uunewuserexpdays;      /* Reserved */
    Byte addwordsl;             /* Add word to dictionary SL */

    Char expvalkey;             /* User expired validation key (#13=None) */

    Byte expwarning;            /* # of days to give warning before expires */
    Byte modifymailflags;       /* Sl when allowed to modify mail flags */
    Byte netmailfilerequest;    /* SL for NetMail file requests */
    Byte netmailfileattach;     /* SL for NetMail file attach */

    Boolean ModemDebug;         /* Modem debug information written to log */
    Boolean UseXMS;             /* Use XMS memory for swap shell */
    Boolean ShowFilesOpen;      /* Show Files Open on Top Screen */
    Boolean LocalSysopWindow;   /* SysOp window when on locally */
    Boolean AllowSuperFast;     /* Allow SHIFT password override */
    Boolean WaitSend;           /* FOSSIL buffer inactive */
    Boolean OverlayEMS;         /* Attempt EMS of overlays */
    Boolean EMSOverXMS;         /* Use EMS over XMS memory for swap */
    Boolean DirectScreen;       /* Direct screen writes */
    Boolean UseEMS;             /* Use EMS memory for swap shell */
    Boolean useswap;            /* Use swap shell */
    Boolean UseFossil;          /* Use FOSSIL driver */
    Boolean SnowCheck;          /* Snow checking active */

    Byte BrowseDSL;             /* DSL to have U/D commands on */
                                /*   File Browse Menu          */

    Byte uusystatrec1[9];       /* Reserved */

    Char TempDlPath[41];        /* Temp File Download Path */

    Word MinKpost;              /* Minimum K-Bytes to post */
    Word MinKul;                /* Minimum K-Bytes to upload */

    Boolean AutoChatBufOpen;    /* Auto chat buffer open */

    Char nettype[21];           /* Multi-user network type */

    Byte uusystatrec2[15];      /* Reserved */

    Byte LogonPassword;         /* SL when SysOp PW #1 needed to logon */
    Byte ReadTextMsg;           /* SL when allowed to use /READ command */

    Boolean AlertChatOnly;      /* Alert active only when chat on */
    Boolean genericinfo;        /* Generic mode active */
    Boolean LogonPhone;         /* Logon requires phone number */

    Char DefMsgGroup[21];       /* Default msg section group mask */
    Char DefFileGroup[21];      /* Default file section group mask */

    Byte uusystatrec3[13];      /* Reserved */

    Char LastCaller[43];        /* Name and number of last caller */

    Char MenuFastKeys[21];      /* Menu fast keys (e.g. "/") */

    Char BoardPW[17];           /* New user password (Null=None) */
    Char BoardPhone[13];        /* Board phone number */

    Byte SysopColor;            /* Chat SysOp color */
    Byte UserColor;             /* Chat user color */

    ArFlagType PostCallFlag;    /* Post call ratio AR flag */

    Byte NoPostCallChk;         /* SL when post call ratio ignored */
    Byte ReinitTime;            /* Minutes to re-init modem when no calls */
    Byte StartMenu;             /* Starting menu for users */

    Boolean UseAutoMsg;         /* Display auto-message during logon */
    Boolean LogonOffHook;       /* Take phone off-hook on local logon */

    Byte NoPointChk;            /* DSL when file points ignored */

    Char LastDate[9];           /* Date last user logged on */

    AddressType Address;        /* Zone/Net/Node/Point/Domain */

    Boolean UserOn11x;          /* Use USERON.BBS version 1.1x */

    shellfilelist shellfile;    /* Shell file information */

    Byte uushellfile[10];       /* Reserved for shell files */

    newuserquestlist newuserquest; /* New user question information */

    Byte uunewuserquest[270];   /* Reserved */

    Byte ActiveModemRecNum;     /* Active Modem Record Number */

    Char MultiUserPath[41];     /* Multi-user path */

    Byte defusereditlist;       /* Default user editor list mode           */
                                /*   0=short, 1=normal, 2=extended, 3=info */

    Byte uusystatrec5[10];      /* Reserved */

    Char GfilesPath[41];        /* Main data files path */

    Boolean StoreBadLogon;      /* Store bad logon info in SysOp log */

    Byte MaxBdNum;              /* Maximum number of batch DL files */
    Byte MaxBuNum;              /* Maximum number of batch UL files */

    Char BoardName[49];         /* Board name */

    Byte SysopMenuSL;           /* SL required for SysOp Control-Q menu */
    ArFlagType SysopMenuAR;     /* AR flag required from Control-Q menu */

    Char SysopName[37];         /* SysOp name */

    Char SwapPath[41];          /* Swap shell path */

    Char ChatPW[17];            /* Chat password */

    Char LastTAGVersion[21];    /* Last version of TAG to run */

    Char nodelistpath[41];      /* Nodelist directory */

    Byte uusystatrec6[2308];    /* Reserved */

    Char SysopPW[3][17];        /* Array of SysOp passwords */

    Byte uusystatrec7[120];     /* Reserved */

    Real CallerNum;             /* Total number of calls to system */
    Real UlKtoday;              /* K-Bytes uploaded today */
    Real DlkToday;              /* K-Bytes downloaded today */
    Real uur1;                  /* Reserved */
    Real uur2;                  /* Reserved */
    Real uur3;                  /* Reserved */

    Word Users;                 /* Number of active users */
    Word ActiveToday;           /* Minutes active today */
    Word Callstoday;            /* Calls today */
    Word MsgPostToday;          /* Public messages posted today */
    Word EmailToday;            /* Private messages posted today */
    Word FbackToday;            /* Feedback sent to SysOp today */
    Word UlToday;               /* Number of uploads today */
    Word uuw1;                  /* Reserved */
    Word uuw2;                  /* Reserved */
    Word uuw3;                  /* Reserved */
    Word MaxUsers;              /* Maximum users allowed to be active */
    Word ErrorsToday;           /* Number of errors today */
    Word NusersToday;           /* Number of new users today */
    Word DlToday;               /* Number of downloads today */

    Integer NewUserMsgTo;       /* User number new user message sent to */
    Integer uui1;               /* Reserved */
    Integer SysopMailTo;        /* User number mail to "SYSOP" is sent to */
    Integer GuestUser;
    Integer FailedLogonMsgTo;   /* Guest user number (0=None) */
    Integer uuw5;               /* Reserved */
    Integer UsageLogDays;       /* Number of days to keep USAGE.LOG */
    Integer WaitMailUser;       /* Mail waiting on wait screen (0=none) */

    Byte UEditJumpSL;           /* SL required for SysOp Control-U menu */
    ArFlagType UEditJumpAR;     /* AR flag required from Control-U menu */

    Byte NoviceDisplay;         /* Number of calls to display novice msg */

    Byte NodeNumber;            /* Multi-user node number */

    Boolean UEditJumpPassword;  /* Use System pswd for Quick User Edit */
    Boolean ScanOnUploads;      /* System permits forced scan on uploads */

    Word MaxTimeInBank;         /* Maximum minutes in time bank */

    Boolean ShowGifRes;         /* Show GIF resolution */
    Boolean CheckUploadSpace;   /* Show upload drive space */
    Boolean SystemSecur;        /* Full keyboard security active */
    Boolean MultiUser;          /* Board in multi-user mode */

    Byte TBmaxDeposit;          /* Maximum daily time bank deposit */
    Byte TBmaxWithdraw;         /* Maximum daily time bank withdraw */
    Byte SysopLvl;              /* SL for SysOp */
    Byte CoSysopLvl;            /* SL for CoSysOp */
    Byte uub1;                  /* Reserved */
    Byte AddBbsLvl;             /* SL for adding boards to bbs listing */
    Byte EmailLvl;              /* SL for sending normal private mail */
    Byte uub2;                  /* Reserved */
    Byte uub3;                  /* Reserved */
    Byte SeeUnvalLvl;           /* DSL for seeing unvalidated files */
    Byte DlCoSysopLvl;          /* DSL for Download CoSysOp */
    Byte NoRatioChk;            /* DSL for no ratio */
    Byte ReadAnon;              /* SL to know see anonymous real name      */
    Byte ReplyAnon;             /* SL to reply to anonymous private mail   */
    Byte PublicAnonAny;         /* SL to post anonymous on any public base */
    Byte PrivateAnonAny;        /* SL to send private anonymous mail       */
    Byte MaxPublicCall;         /* Maximum public posts per call */
    Byte MaxPrivCall;           /* Maximum private messages per call */
    Byte MaxFbackCall;          /* Maximum feedback to SysOp per call */
    Byte uub4;                  /* Reserved */
    Byte SeePasswords;          /* SL to see user passwords remotely */
    Byte uub5;                  /* Reserved */
    Byte uub6;                  /* Reserved */
    Byte ComPort;               /* Communications port */
    Byte TimeOut;               /* Minutes for inactivity time-out */
    Byte TimeOutBell;           /* Minutes for inactivity bell */
    Byte Backlogdays;           /* Number of days to keep SYSOP.LOG's */
    Byte PrivilegeSL;           /* Privilege SL */
    Byte PrivilegeDSL;          /* Privilege DSL */
    Byte CDmask;                /* Carrier detect mask */
    Byte MaxLogonTries;         /* Maximum logon attempts per call */
    Byte uub7;                  /* Reserved */
    Byte uub8;                  /* Reserved */
    Byte UlTimePercent;         /* UL time percent refund */
    Byte MaxChats;              /* Maximum chat pages per call */
    Byte uub9;                  /* Reserved */
    Byte TagLineSL;             /* SL for tag line command */

    Boolean ClosedSystem;       /* System closed */
    Boolean TitlePause;         /* Allow [PAUSE] on welcome screen */
    Boolean LogonBulletin;      /* Logon to the bulletin section */
    Boolean BlankWait;          /* Blank the wait screen if no activity */
    Boolean Handles;            /* Allow handles */
    Boolean AutoANSIDetect;     /* Logon auto-detect ANSI */
    Boolean SecureSystem;       /* Keyboard security active */
    Boolean TimePerDay;         /* Time limits represent time per day */
    Boolean Mailer;             /* External mailer active */
    Boolean SysopFemale;        /* SysOp is female */
    Boolean scantosysoplog;     /* File scans are saved in SysOp log */

    Range TimeAllowed;          /* SL array of time per call/per day */
    Range UlDlNumRatio;         /* DSL array of number of file UL ratios */
    Range UlDlKratio;           /* DSL array of K-Byte UL ratios */
    Range CallsAllowed;         /* SL array of calls allowed per day */
    Range PostCall;             /* SL array of posts per 1/10 call */

    Byte uusystatrec8[8];       /* Reserved */
}
SystatRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Set of menu flags */
{
    Bit SLs : 1;        /* SL security check - When off DSL security check */
    Bit OrCheck : 1;    /* SL or AR - When off SL and AR */
    Bit Flag1 : 1;      /* Time/Help display (menu) -or- */
                        /* Hidden status (command)       */
    Bit Flag2 : 1;      /* Board display override (menu) -or- */
                        /* Link to next (command)             */
    Bit Flag3 : 1;      /* Menu name prompt (menu) -or- */
                        /* Unused (command)             */
}
MenuFlagSet;    /* 1 byte used for 8 flags in set */

typedef struct      /* Menus - MENUS.LST */
{
    Char LongD[61];     /* Menu description (menu) -or- */
                        /* Long command desc (command)  */
    Byte GSL;           /* General security level - Depends on SLS */
    ArFlagType ArLvl;   /* AR flag */
    MenuFlagSet Flags;  /* Menu flags */

    union   /* Menu or command - Variant section */
    {
        struct      /* Menu information */
        {
            Byte MenuNum;       /* Menu number */
            Char mPrompt[21];   /* Menu prompt unless "flag3" active */
            Char Password[16];  /* Menu password */
            Byte FallBack;      /* Fallback menu number */
            Char HelpFile[8];   /* Help file ID name */
            Byte StartHelp;     /* Starting help level 0=default */
            Byte Location;      /* Menu location                     */
                                /*   (0=Main, 1=File, 2=ReadMessage) */
        }
        vMenu;
        struct      /* Command information */
        {
            Byte Pkey;          /* Command PKey */
            Char Pdata[21];     /* Command PData */
            Char Shortd[16];    /* Command short description */
            Char CmdKey[13];    /* Command execution key */
        }
        vCommand;
    }
    Menu;
}
MenuRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Macro list - MACROS.LST */
{
    Integer UserN;      /* User number of macro owner */
    Char Key[4][161];   /* Text for each of the macros */
}
MacroRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Single protocols - SPROT.DAT */
{
    Char Key[13];           /* Execution key */
    Char Desc[61];          /* Description */
    Word MinBaud;           /* Minimum baud rate to use */
    Word MaxBaud;           /* Maximum baud rate to use */
    Byte DSL;               /* DSL required */
    Char TempLog[53];       /* Temp log path and name */
    Char UlLog[53];         /* UL log path and name */
    Char DlLog[53];         /* DL log path and name */
    Char UlString[71];      /* UL string for DOS call */
    Char DlString[71];      /* DL string for DOS call */
    Boolean GoodCode;       /* Result codes mean good transfer */
    Byte DlCode[6];         /* DL error level result codes */
    Byte ULcode[6];         /* DL error level result codes */
}
SprotocolRec;

typedef struct      /* Batch protocols - BPROT.DAT */
{
    Char Key[13];           /* Execution key */
    Char Desc[61];          /* Description */
    Word MinBaud;           /* Minimum baud rate to use */
    Word MaxBaud;           /* Maximum baud rate to use */
    Byte DSL;               /* DSL required */
    Char UlString[71];      /* UL string for DOS call */
    Char DlString[71];      /* DL string for DOS call */
    Char UlList[53];        /* UL file list file path and name */
    Char DlList[53];        /* DL file list file path and name */
    Char TempLog[53];       /* Temp log path and name */
    Char UlLog[53];         /* UL log path and name */
    Char DlLog[53];         /* DL log path and name */
    Byte MaxCmdLen;         /* Maximum command line length */
    Byte PosFn;             /* Position of filename in log */
    Byte PosStatus;         /* Position of status in log */
    Boolean GoodCode;       /* Result codes mean good transfer */
    Char DlCode[6][11];     /* DL status result codes */
    Char ULcode[6][11];     /* UL status result codes */
}
BprotocolRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Validation information - VALIDATE.DAT */
{
    Char Key;           /* Execution key */
    Char Desc[161];     /* Descrip sent to user after validation */
                        /* 76 max real length - Rest for color */
    Byte SL;            /* SL to set on validation */
    Byte DSL;           /* DSL to set on validation */
    Word Credit;        /* Credit in cents to set on validation */
    Word Points;        /* File points to set on validation */
    Word TimeBank;      /* Time bank minutes to set on validation */
    ArFlagset Ar;       /* AR flags to set on validation */
    FlagSet Flags;      /* Special flags to set on validation */
    Word UnusedWord;    /* Reserved */
}
ValidationRec;

/*---------------------------------------------------------------------------*/

typedef struct      /* Event flags */
{
    Bit UnknownEvent : 1;       /* 1-1. Unknown */
    Bit EventIsExternal : 1;    /* 1-2. External/Internal */
    Bit EventIsActive : 1;      /* 1-3. Active/InActive */
    Bit EventIsShell : 1;       /* 1-4. Shell/Error */
    Bit EventIsMonthly : 1;     /* 1-5. Monthly/Daily */
    Bit EventIsPermission : 1;  /* 1-6. Permission/Restriction */
    Bit EventIsChat : 1;        /* 1-7. Chat Event */
    Bit EventIsSoft : 1;        /* 1-8. Soft/Hard */

    Bit BaudIsActive : 1;       /* 2-1. Baud Rate Flag */
    Bit SLisActive : 1;         /* 2-2. SL Flag */
    Bit DSLisActive : 1;        /* 2-3. DSL Flag */
    Bit ARisActive : 1;         /* 2-4. ARflag required */
    Bit InRatioIsActive : 1;    /* 2-5. InRatioFlag */
    Bit TimeIsActive : 1;       /* 2-6. Time Flag */
    Bit SetARisActive : 1;      /* 2-7. Set AR flag */
    Bit ClearARisActive : 1;    /* 2-8. Clear AR Flag */

    Bit uuEvent24 : 1;          /* Byte 3 ... */
    Bit uuEvent23 : 1;
    Bit uuEvent22 : 1;
    Bit uuEvent21 : 1;
    Bit uuEvent20 : 1;
    Bit uuEvent19 : 1;
    Bit uuEvent18 : 1;
    Bit uuEvent17 : 1;

    Bit uuEvent16 : 1;          /* Byte 4 ... */
    Bit uuEvent15 : 1;
    Bit uuEvent14 : 1;
    Bit uuEvent13 : 1;
    Bit uuEvent12 : 1;
    Bit uuEvent11 : 1;
    Bit uuEvent10 : 1;
    Bit uuEvent9 : 1;

    Bit uuEvent81 : 1;          /* Byte 5 ... */
    Bit uuEvent7 : 1;
    Bit uuEvent6 : 1;
    Bit uuEvent5 : 1;
    Bit uuEvent4 : 1;
    Bit uuEvent3 : 1;
    Bit uuEvent2 : 1;
    Bit uuEvent1 : 1;
}
EventType;  /* 5 bytes used for 40 flags */

typedef Byte EventDaysType;     /* Set of event days     */
                                /* (bits 0-6 = Sun..Sat) */

/*****************************************/
/* The Record Structure of the EventFile */
/*****************************************/

typedef struct      /* Events - EVENTS.DAT */
{
    EventType EventFlags;       /* Kinds of Events Supported */
    Byte EventDayOfMonth;       /* If monthly, the Day of Month */
    EventDaysType EventDays;    /* If Daily, the Days Active */
    Word EventStartTime;        /* Start Time in Min from Mid. */
    Word EventFinishTime;       /* Finish Time */
    Char EventDesc[33];         /* Description of the Event */
    Char EventQualMsg[65];      /* Msg/Path if he qualifies */
    Char EventNotQualMsg[65];   /* Msg/Path if he doesn't */
    Byte EventPreTime;          /* Min. B4 event to rest. Call */
    Boolean EventOffHook;       /* Take phone Offhook ? */
    Char EventLastDate[9];      /* Last Date Executed */
    Byte EventErrorLevel;       /* For Ext Event ErrorLevel */
    Char EventShellPath[9];     /* File for Ext Event Shell */
    Word LoBaud;                /* Low baud rate limit */
    Word HiBaud;                /* High baud rate limit */
    Byte LoSL;                  /* Low SL limit */
    Byte HiSL;                  /* High SL limit */
    Byte LoDSL;                 /* Low DSL limit */
    Byte HiDSL;                 /* High DSL limit */
    Char ARflagRequired;        /* AR flag required */
    Word MaxTimeAllowed;        /* Max Time per user this event */
    Char SetARflag;             /* AR Flag to Set */
    Char ClearARflag;           /* AR Flag to Clear */
    Byte EventUnused[128];      /* Reserved */
}
EventRecordType;

/*---------------------------------------------------------------------------*/

#define MAXMODEMRESULTCODES 45  /* Maximum number of modem result codes */

typedef Byte modemresulttype;   /* Modem result type */

#define RESULTERROR             0       /* Command error */
#define RESULTOK                1       /* Command accepted */
#define RESULTRING              2       /* Phone ringing */
#define RESULTNOCARRIER         3       /* Connect attempt failed */
#define RESULTCONNECT           4       /* Connect succcessful */
#define RESULTWAITSCREEN        5       /* Go to wait screen */
#define RESULTLOCALLOGON        6       /* Logcal logon */
#define RESULTSHELLBATCH        7       /* Shell to batch file */
#define RESULTEXITERRORLEVEL    8       /* Exit system with error level */
#define RESULTEXITSYSTEM        9       /* Exit system with error level 255 */
#define RESULTNODIALTONE        10      /* Reserved */
#define RESULTRINGING           11      /* Reserved */
#define RESULTBUSY              12      /* Reserved */
#define RESULTNOANSWER          13      /* Reserved */
#define RESULTVOICE             14      /* Reserved */

typedef struct
{
    modemresulttype typeofresult;   /* Type of result */
    Char result[51];                /* Test of result */
    Longint connectrate;            /* Connect rate modem to modem */
    Longint realrate;               /* Real rate computer to modem */
    Longint controlcode;            /* Error level or startup code */
    Boolean fullduplex;             /* Full duplex operation? */
    Boolean errorcorrecting;        /* Error correcting modem? */
    Byte Unused[8];                 /* Reserved */
}
resultrec;

/**********************************************************/
/* Modem string mapping codes:                            */
/*                                                        */
/* Char.  Name             Action                         */
/* -----  ---------------  ------------------------------ */
/*  ^     Carat            Control code of next character */
/*  |     Pipe, Split Bar  Carriage return sent           */
/*  `     Accent Mark      1/20th second delay            */
/*  ~     Tilde            1/2 second delay               */
/*  ^-    Carat & Minus    Lower DTR line                 */
/*  ^+    Carat & Plus     Raise DTR line                 */
/**********************************************************/

typedef struct      /* Modem record - MODEM.DAT */
{
    Boolean uuunused;           /* Unused */
    Char modemdescription[65];  /* Description on modem */
    Byte characterdelay;        /* Miliseconds */
    Boolean ctsrts;             /* Hardware flow control active */
    Boolean samering;           /* Reserved */
    Boolean nocollide;          /* Reserved */
    Byte numberresults;         /* Number of modem result codes defined */
    resultrec result[MAXMODEMRESULTCODES]; /* Array of results */
    Char preinitialization[65]; /* Pre-initialization string */
    Char initialization[65];    /* Initialization string */
    Char answer[65];            /* Answer string */
    Char busy[65];              /* Busy string */
    Char hangupprimary[65];     /* Hangup primary string */
    Char hangupsecondary[65];   /* Hangup secondard string */
    Char afterhangup[65];       /* After hangup string */
    Char exitsystem[65];        /* Exit system string */
    Char predial[65];           /* Reserved */
    Char dialprefix[65];        /* Reserved */
    Char dialsuffix[65];        /* Reserved */
    Longint waitbaud;           /* Init modem speed */
    Boolean lockedbaud;         /* Is baud rate locked - Not used by T.A.G. */
    Byte ecefficiency;          /* Error correcting efficiency */
    Byte ncefficiency;          /* Normal connect efficiency */
    Byte Unused[249];           /* Reserved */
}
modemrec;

/*---------------------------------------------------------------------------*/

#define MAXSUBOPS   10      /* Maximum number of message section SubOps */

typedef Byte NoYesForcedType;   /* Message section type */

#define NO          0       /* Anonymous messages not allowed */
#define YES         1       /* Anonymous messages allowed */
#define FORCED      2       /* Messages forced anonymous */
#define ATUNUSED    3       /* Reserved */

/************************************/
/* Standard Attributes for Messages */
/************************************/

typedef struct
{
    Bit Msg_Private : 1;                    /* 1  fPrivate  */
                                            /*    RaPrivate */
    Bit Msg_Crash : 1;                      /* 2  fCrash */
                                            /*    Crash  */
    Bit Msg_Received : 1;                   /* 3  fReceived */
                                            /*    Received  */
    Bit Msg_Sent : 1;                       /* 4  fSent */
                                            /*    Sent  */
    Bit Msg_FileAttached : 1;               /* 5  fFileAttached */
                                            /*    FileAttach    */
    Bit Msg_KillSent : 1;                   /* 6  fKillSent */
                                            /*    KillSent  */
    Bit Msg_Local : 1;                      /* 7  fLocal       */
                                            /*    LocalMessage */
    Bit Msg_ReturnReceiptRequest : 1;       /* 8  fReportReceiptRequest */
                                            /*    RequestReceipt        */
    Bit Msg_IsReturnReceipt : 1;            /* 9  fIsReturnReceipt */
                                            /*    ReturnReceipt    */
    Bit Msg_AuditRequest : 1;               /* 10 fAuditRequest */
                                            /*    AuditRequest  */
    Bit Msg_Fido_InTransit : 1;             /* 11 fInTransit */
    Bit Msg_Fido_Orphan : 1;                /* 12 fOrphan */
    Bit Msg_Fido_HoldForPickup : 1;         /* 13 fHoldForPickup */
    Bit Msg_Fido_Unusedbit10 : 1;           /* 14 fUnusedbit10 */
    Bit Msg_Fido_FileRequest : 1;           /* 15 fFileRequest */
    Bit Msg_Fido_FileUpdateRequest : 1;     /* 16 fFileUpdateRequest */
    Bit Msg_Ra_Deleted : 1;                 /* 17 Deleted */
    Bit Msg_Ra_NetmailPendingExport : 1;    /* 18 NetmailPendingExport */
    Bit Msg_Ra_NetMailMessage : 1;          /* 19 NetMailMessage */
    Bit Msg_Ra_EchomailPendingExport : 1;   /* 20 EchomailPendingExport */
    Bit Msg_Ra_UnusedMsgbit7 : 1;           /* 21 UnusedMsgbit7 */
    Bit Msg_Ra_UnusedNetbit7 : 1;           /* 22 UnusedNetbit7 */
    Bit Msg_Unused_Attr1 : 1;               /* 23 Reserved */
    Bit Msg_Unused_Attr2 : 1;               /* 24 Reserved */
    Bit Msg_Unused_Attr3 : 1;               /* 25 Reserved */
    Bit Msg_Unused_Attr4 : 1;               /* 26 Reserved */
    Bit Msg_Unused_Attr5 : 1;               /* 27 Reserved */
    Bit Msg_Unused_Attr6 : 1;               /* 28 Reserved */
    Bit Msg_Unused_Attr7 : 1;               /* 29 Reserved */
    Bit Msg_Unused_Attr8 : 1;               /* 30 Reserved */
    Bit Msg_Unused_Attr9 : 1;               /* 31 Reserved */
    Bit Msg_Unused_Attr10 : 1;              /* 32 Reserved */
}
MessageAttrFlagSet;     /* 4 bytes used for 32 flags */

typedef Byte MBstyle;   /* Message section style flags */

#define UUMBBSTYLE      0   /* Was For Private Mail Board */
#define LOCALSTYLE      1   /* Local Board */
#define ECHOSTYLE       2   /* Echomail, Needs Origin */
#define NETMAILSTYLE    3   /* Netmail board (Only one I hope!) */
#define GROUPSTYLE      4   /* For Groupmail Support */

typedef Byte MBtype;    /* Message section type flags */

#define UUMBTYPE        0   /* Was For Netmail Board */
#define FIDOFORMAT      1   /* Fido 1.Msg Format */
#define RAFORMAT        2   /* Remote Access Format */

typedef struct      /* Message boards - MBOARDS.DAT */
{
    Char Name[65];                  /* Name of the Board */
    MBstyle Mstyle;                 /* Local/Echo/Netmail */
    MBtype Mtype;                   /* Message Board Type */
    Byte RaBoard;                   /* Board Number if RA/QBBS type */
    Char Path[65];                  /* Directory PathName */
    Char OriginLine[66];            /* Origin Line */
    ArFlagType AccessAR;            /* AR flag Required to Access */
    ArFlagType PostAR;              /* AR flag required to Post */
    Byte AccessSL;                  /* Security Level Required to Access */
    Byte PostSL;                    /* Security Level Required to Post */
    Word MsgCount;                  /* Count of Msgs on the Board */
    Word MaxMsgs;                   /* Max Number of Messages */
    Word uuMaxOld;                  /* Max Days for Messages */
    Char Password[17];              /* Password Required */
    NoYesForcedType Anon;           /* Anonymous Type */
    Boolean AllowAnsi;              /* Should we allow ANSI */
    NoYesForcedType AllowHandle;    /* Should we allow handles */

    /*********************************************************/
    /* Message Board SubOpts List  - Up to 10 - User Numbers */
    /*********************************************************/

    Integer SubOps[MAXSUBOPS+1];    /* SubOps - Item 0 = How many */

    Char EchoTag[33];               /* Echo Tag for Writing ECHOMAIL.BBS */
    Boolean UseOtherAddress;        /* Use something other than system */
    Byte OldOtherAddress[23];       /* Unused */
    Byte MenuNumber;                /* Default read message number */
                                    /*  (if 0, use system default) */
    Char PrePostFile[9];            /* Prepost file name */
    Byte MinMsgs;                   /* Minimum number of messages */
    Char QuoteStart[71];            /* Override starting quote */
    Char QuoteEnd[71];              /* Override ending quote */
    Byte OldDefaultAtt[2];          /* Unused */
    Byte GroupNumber;               /* What group the board belongs */
    AddressType OtherAddress;       /* The Address to use! */
    NoYesForcedType RestrictPrivate; /* Private mail status */
    MessageAttrFlagSet DefaultAttr; /* Default message flags */
    Byte Reserved[12];              /* Reserved */
}
MboardType;

/*---------------------------------------------------------------------------*/

typedef Char LastOnType[8][161];    /* Last Few Callers - LASTON.DAT */

/*---------------------------------------------------------------------------*/

#define MAXBITS     1024    /* Means a 128 byte bit set, bits 0 to 1023 */

typedef Byte bitSetType[MAXBITS / 8];   /* Board Flags - ?ZSCAN.DAT */

/*---------------------------------------------------------------------------*/

typedef struct      /* Who's online - $WHO.DAT */
{
    Boolean Active;
    Byte Node;              /* Node number for this rec     */
    Boolean Available;      /* Is he available for anything */
    Char Uname[37];         /* Users Name                   */
    Char CityState[31];     /* City and State               */
    Longint Baud;           /* Baud Rate                    */
    Byte Paging;            /* Paging Node Number           */
    Byte InPrivateChat;     /* Node in private chat with    */
    Boolean InGroupChat;    /* Is he in Group Chat          */
    Char Desc[65];          /* Long Description             */
}
WhoRecType;

/*---------------------------------------------------------------------------*/

typedef struct      /* USERON.BBS file version 1.00 */
{
    Char Name[36];          /* User name      */
    Byte Line;              /* Node number    */
    Word Baud;              /* Connect rate   */
    Char City[26];          /* City/State     */
    Boolean DoNotDisturb;   /* Do not disturb */
    Byte Status;            /* Status         */
}
UserOnType100;

/*---------------------------------------------------------------------------*/

typedef struct      /* USERON.BBS file version 1.1x */
{
    Char Name[36];          /* Real name      */
    Char Handle[36];        /* User name      */
    Byte Line;              /* Node number    */
    Word Baud;              /* Connect rate   */
    Char City[26];          /* City/State     */
    Boolean DoNotDisturb;   /* Do not disturb */
    Byte Status;            /* Status         */
    Byte Attribute;         /* Attribute      */
}
UserOnType11x;

/*---------------------------------------------------------------------------*/

#endif
