#help_index "Misc/TOS/God;God/TOS"

#define NIST_TIME_OFFSET                        (tos_nist_offset - local_time_offset / CDATE_FREQ)
#define NIST_TIME_TO_SWITCH             3

#define GSRC_NIST_BEACON                        0
#define GSRC_HOTBITS                            1
#define GSRC_ANU_NIST                           2
#define GSRC_GOOGLE                             3
#define GSRC_RANDOM_ORG                         4
#define GSRC_RANDOM_NUMBERS_INFO        5
#define GSRC_PASSWORD                           6
#define GSRC_GENERATE_DATA                      7
#define GSRC_VIRTUAL_NOTARY             8
#define GSRC_TIMER                                      9

#define GBP_SHORT               0
#define GBP_MEDIUM              1
#define GBP_LONG                2

class CRandExtDec5Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"5 Decimal Digits from Hex:%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CHexWordForm
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Hex Word Indices#0:%s\"$\n";
        U8              rnd1[512]                       format "$DA-P,A=\"Hex Word Indices#1:%s\"$\n";
        U8              rnd2[512]                       format "$DA-P,A=\"Hex Word Indices#2:%s\"$\n";
        U8              rnd3[512]                       format "$DA-P,A=\"Hex Word Indices#3:%s\"$\n";
        U8              rnd4[512]                       format "$DA-P,A=\"Hex Word Indices#4:%s\"$\n";
        U8              rnd5[512]                       format "$DA-P,A=\"Hex Word Indices#5:%s\"$\n";
        U8              rnd6[512]                       format "$DA-P,A=\"Hex Word Indices#6:%s\"$\n";
        U8              rnd7[512]                       format "$DA-P,A=\"Hex Word Indices#7:%s\"$\n";
        U8              rnd8[512]                       format "$DA-P,A=\"Hex Word Indices#8:%s\"$\n";
        U8              rnd9[512]                       format "$DA-P,A=\"Hex Word Indices#9:%s\"$\n";
        U8              rndA[512]                       format "$DA-P,A=\"Hex Word Indices#A:%s\"$\n";
        U8              rndB[512]                       format "$DA-P,A=\"Hex Word Indices#B:%s\"$\n";
        I64     cert;
};

class CNISTBeaconHexWordForm
{
        I64     timestamp                       format "$DA,A=\"TimeStamp:%d\"$\n";
        U8              rnd0[512]                       format "$DA-P,A=\"Hex Word Indices#0:%s\"$\n";
        U8              rnd1[512]                       format "$DA-P,A=\"Hex Word Indices#1:%s\"$\n";
        U8              rnd2[512]                       format "$DA-P,A=\"Hex Word Indices#2:%s\"$\n";
        U8              rnd3[512]                       format "$DA-P,A=\"Hex Word Indices#3:%s\"$\n";
        U8              rnd4[512]                       format "$DA-P,A=\"Hex Word Indices#4:%s\"$\n";
        U8              rnd5[512]                       format "$DA-P,A=\"Hex Word Indices#5:%s\"$\n";
        U8              rnd6[512]                       format "$DA-P,A=\"Hex Word Indices#6:%s\"$\n";
        U8              rnd7[512]                       format "$DA-P,A=\"Hex Word Indices#7:%s\"$\n";
        U8              rnd8[512]                       format "$DA-P,A=\"Hex Word Indices#8:%s\"$\n";
        U8              rnd9[512]                       format "$DA-P,A=\"Hex Word Indices#9:%s\"$\n";
        U8              rndA[512]                       format "$DA-P,A=\"Hex Word Indices#A:%s\"$\n";
        U8              rndB[512]                       format "$DA-P,A=\"Hex Word Indices#B:%s\"$\n";
        I64     cert;
};

class CRandHex5Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P-TRM,LEN=5,A=\"Line (5-Digit Hex):%5s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CRandHex8Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P-TRM,LEN=8,A=\"Line (8-Digit Hex):%8s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CMoviesForm
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Movie #1-100 (2 Decimal Digits from Hex):%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CPaintings100Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Painting #00-99 (2 Decimal Digits from Hex):%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CPaintings1000Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Painting #000-999 (3 Decimal Digits from Hex):%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CPoems100Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Poems #00-99 (2 Decimal Digits from Hex):%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CMetallicaForm
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Song #1-99 (2 Decimal Digits from Hex):%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert;
};

class CCertRandDec5Form
{
        I64     timestamp;
        U8              rnd0[512]                       format "$DA-P,A=\"Line (Dec):%s\"$\n";
        U8              rnd1[512];
        U8              rnd2[512];
        U8              rnd3[512];
        U8              rnd4[512];
        U8              rnd5[512];
        U8              rnd6[512];
        U8              rnd7[512];
        U8              rnd8[512];
        U8              rnd9[512];
        U8              rndA[512];
        U8              rndB[512];
        I64     cert                            format "$DA,A=\"Certificate:%d\"$\n";
};

class CGodVideoForm
{
        U8              title[STR_LEN]  format "$DA-P,A=\"Title:%s\"$\n";
        U8              serial[STR_LEN] format "$DA-P-TRM,LEN=11,A=\"SerialNum:%11s\"$\n";
        I64     min                     format "$DA,A=\"Minutes:%d\"$\n";
        I64     sec                     format "$DA,A=\"Seconds:%d\"$\n";
};

class CWebBibleForm
{
        U8              tag[STR_LEN]     format "$DA-P,A=\"Tag Text:%s\"$\n";
        U8              special[STR_LEN] format "$DA-P,A=\"Bible Passage:%s\"$\n";
        I64     min;
        I64     sec;
};

class CYouTubeForm
{
        U8              tag[STR_LEN]     format "$DA-P,A=\"Title:%s\"$\n";
        U8              special[STR_LEN] format "$DA-P-TRM,LEN=11,A=\"SerialNum:%11s\"$\n";
        I64     min                      format "$DA,A=\"Minutes:%d\"$\n";
        I64     sec                      format "$DA,A=\"Seconds:%d\"$\n";
};

class CImgurForm
{
        U8              tag[STR_LEN];
        U8              special[STR_LEN] format "$DA-P,A=\"SerialNum:%s\"$\n";
        I64     min                      format "$DA,A=\"Width    :%d\"$\n";
        I64     sec                      format "$DA,A=\"Height   :%d\"$\n";
};

class CWikipediaForm
{
        U8              tag[STR_LEN]     format "$DA-P,A=\"Tag Text:%s\"$\n";
        U8              special[STR_LEN] format "$DA-P,A=\"Index   :%s\"$\n";
        I64     min;
        I64     sec;
};

class CWebBookMarkForm
{
        U8              tag[STR_LEN]            format "$DA-P,A=\"Tag Text:%s\"$\n";
        U8              special[STR_LEN];
        I64     min;
        I64     sec;
};

DefineListLoad("ST_FAMLY_PHOTOS", "Family1_58-78\0Family2_78-86\0Family3_86-99\0Family4_99\0");

class CFamilyPhotoForm
{
        I64     volume                          format  "$LS,D=\"ST_FAMLY_PHOTOS\"$\n";
        I64     part                            format  "$DA,A=\"Part   :%d\"$\n";
        U8              picture[STR_LEN]        format "$DA-P,A=\"Picture:%s\"$\n";
        I64     width                           format  "$GREEN$640x427 or 640x960$FG$\n$DA,A=\"Width  :%d\"$\n";
        I64     height                          format  "$DA,A=\"Height :%d\"$\n";
};

class CBlogImgForm
{
        U8              picture[STR_LEN]        format "$DA-P,A=\"Picture:%s\"$\n";
        I64     width                           format "$DA,A=\"Width  :%d\"$\n";
        I64     height                          format "$DA,A=\"Height :%d\"$\n";
};

class CBlogVideoForm
{
        U8              video[STR_LEN]  format "$DA-P,A=\"Video:%s\"$\n";
        Bool    big                     format "$CB,\"Big\"$\n";
};

extern U0       FreshenBlog();
extern U0       GodBooksPassageU32(U32 rand_u32, U8 *files_find_mask, U8 *file_mask="*", I64 len=512, I64 verbosity=GBP_MEDIUM);
extern I64      GodHeaderIns(U8 *type=NULL);
extern U0       GodVideoDigits(U8 *title, U8 *webpage, U8 *rnd, I64 digits, U8 *filename);
extern U0       GodVideoU32(U32 rand_u32, U8 *filename);
extern U0       GodWebIdx(U8 *title, U8 *webpage, U8 *rnd, I64 digits, U8 *filename)
extern U0       GodWordBatch(CHexWordForm *gm, I64 radix, I64 digits);
extern U0       TOSBookLines(U8 *book_filename, I64 book_lines, U8 *st, I64 num_lines, I64 radix, Bool modulo, Bool plus_one);
extern U0       TOSGodDoodle(I64 god_src, CNISTBeaconHexWordForm *gm=NULL);