Fossil

Hex Artifact Content
Login

Artifact 4206ec505753337401f6bed49a3fb0f175e8b00b:


0000: 2f 2a 0a 2a 2a 20 43 6f 70 79 72 69 67 68 74 20  /*.** Copyright 
0010: 28 63 29 20 32 30 30 36 2c 32 30 30 37 20 44 2e  (c) 2006,2007 D.
0020: 20 52 69 63 68 61 72 64 20 48 69 70 70 0a 2a 2a   Richard Hipp.**
0030: 0a 2a 2a 20 54 68 69 73 20 70 72 6f 67 72 61 6d  .** This program
0040: 20 69 73 20 66 72 65 65 20 73 6f 66 74 77 61 72   is free softwar
0050: 65 3b 20 79 6f 75 20 63 61 6e 20 72 65 64 69 73  e; you can redis
0060: 74 72 69 62 75 74 65 20 69 74 20 61 6e 64 2f 6f  tribute it and/o
0070: 72 0a 2a 2a 20 6d 6f 64 69 66 79 20 69 74 20 75  r.** modify it u
0080: 6e 64 65 72 20 74 68 65 20 74 65 72 6d 73 20 6f  nder the terms o
0090: 66 20 74 68 65 20 53 69 6d 70 6c 69 66 69 65 64  f the Simplified
00a0: 20 42 53 44 20 4c 69 63 65 6e 73 65 20 28 61 6c   BSD License (al
00b0: 73 6f 0a 2a 2a 20 6b 6e 6f 77 6e 20 61 73 20 74  so.** known as t
00c0: 68 65 20 22 32 2d 43 6c 61 75 73 65 20 4c 69 63  he "2-Clause Lic
00d0: 65 6e 73 65 22 20 6f 72 20 22 46 72 65 65 42 53  ense" or "FreeBS
00e0: 44 20 4c 69 63 65 6e 73 65 22 2e 29 0a 0a 2a 2a  D License".)..**
00f0: 20 54 68 69 73 20 70 72 6f 67 72 61 6d 20 69 73   This program is
0100: 20 64 69 73 74 72 69 62 75 74 65 64 20 69 6e 20   distributed in 
0110: 74 68 65 20 68 6f 70 65 20 74 68 61 74 20 69 74  the hope that it
0120: 20 77 69 6c 6c 20 62 65 20 75 73 65 66 75 6c 2c   will be useful,
0130: 0a 2a 2a 20 62 75 74 20 77 69 74 68 6f 75 74 20  .** but without 
0140: 61 6e 79 20 77 61 72 72 61 6e 74 79 3b 20 77 69  any warranty; wi
0150: 74 68 6f 75 74 20 65 76 65 6e 20 74 68 65 20 69  thout even the i
0160: 6d 70 6c 69 65 64 20 77 61 72 72 61 6e 74 79 20  mplied warranty 
0170: 6f 66 0a 2a 2a 20 6d 65 72 63 68 61 6e 74 61 62  of.** merchantab
0180: 69 6c 69 74 79 20 6f 72 20 66 69 74 6e 65 73 73  ility or fitness
0190: 20 66 6f 72 20 61 20 70 61 72 74 69 63 75 6c 61   for a particula
01a0: 72 20 70 75 72 70 6f 73 65 2e 0a 2a 2a 0a 2a 2a  r purpose..**.**
01b0: 20 41 75 74 68 6f 72 20 63 6f 6e 74 61 63 74 20   Author contact 
01c0: 69 6e 66 6f 72 6d 61 74 69 6f 6e 3a 0a 2a 2a 20  information:.** 
01d0: 20 20 64 72 68 40 68 77 61 63 69 2e 63 6f 6d 0a    drh@hwaci.com.
01e0: 2a 2a 20 20 20 68 74 74 70 3a 2f 2f 77 77 77 2e  **   http://www.
01f0: 68 77 61 63 69 2e 63 6f 6d 2f 64 72 68 2f 0a 2a  hwaci.com/drh/.*
0200: 2a 0a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  *.**************
0210: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0220: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0230: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0240: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0250: 2a 0a 2a 2a 0a 2a 2a 20 54 68 69 73 20 66 69 6c  *.**.** This fil
0260: 65 20 63 6f 6e 74 61 69 6e 73 20 63 6f 64 65 20  e contains code 
0270: 74 6f 20 69 6d 70 6c 65 6d 65 6e 74 20 74 68 65  to implement the
0280: 20 62 61 73 69 63 20 77 65 62 20 70 61 67 65 20   basic web page 
0290: 6c 6f 6f 6b 20 61 6e 64 20 66 65 65 6c 2e 0a 2a  look and feel..*
02a0: 2a 0a 2a 2f 0a 23 69 6e 63 6c 75 64 65 20 22 56  *.*/.#include "V
02b0: 45 52 53 49 4f 4e 2e 68 22 0a 23 69 6e 63 6c 75  ERSION.h".#inclu
02c0: 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 0a 23 69  de "config.h".#i
02d0: 6e 63 6c 75 64 65 20 22 73 74 79 6c 65 2e 68 22  nclude "style.h"
02e0: 0a 0a 0a 2f 2a 0a 2a 2a 20 45 6c 65 6d 65 6e 74  .../*.** Element
02f0: 73 20 6f 66 20 74 68 65 20 73 75 62 6d 65 6e 75  s of the submenu
0300: 20 61 72 65 20 63 6f 6c 6c 65 63 74 65 64 20 69   are collected i
0310: 6e 74 6f 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e  nto the followin
0320: 67 0a 2a 2a 20 73 74 72 75 63 74 75 72 65 20 61  g.** structure a
0330: 6e 64 20 64 69 73 70 6c 61 79 65 64 20 62 65 6c  nd displayed bel
0340: 6f 77 20 74 68 65 20 6d 61 69 6e 20 6d 65 6e 75  ow the main menu
0350: 2e 0a 2a 2a 0a 2a 2a 20 50 6f 70 75 6c 61 74 65  ..**.** Populate
0360: 20 74 68 65 73 65 20 73 74 72 75 63 74 75 72 65   these structure
0370: 20 77 69 74 68 20 63 61 6c 6c 73 20 74 6f 0a 2a   with calls to.*
0380: 2a 0a 2a 2a 20 20 20 20 20 20 73 74 79 6c 65 5f  *.**      style_
0390: 73 75 62 6d 65 6e 75 5f 65 6c 65 6d 65 6e 74 28  submenu_element(
03a0: 29 0a 2a 2a 20 20 20 20 20 20 73 74 79 6c 65 5f  ).**      style_
03b0: 73 75 62 6d 65 6e 75 5f 65 6e 74 72 79 28 29 0a  submenu_entry().
03c0: 2a 2a 20 20 20 20 20 20 73 74 79 6c 65 5f 73 75  **      style_su
03d0: 62 6d 65 6e 75 5f 63 68 65 63 6b 62 6f 78 28 29  bmenu_checkbox()
03e0: 0a 2a 2a 20 20 20 20 20 20 73 74 79 6c 65 5f 73  .**      style_s
03f0: 75 62 6d 65 6e 75 5f 6d 75 6c 74 69 63 68 6f 69  ubmenu_multichoi
0400: 63 65 28 29 0a 2a 2a 0a 2a 2a 20 70 72 69 6f 72  ce().**.** prior
0410: 20 74 6f 20 63 61 6c 6c 69 6e 67 20 73 74 79 6c   to calling styl
0420: 65 5f 66 6f 6f 74 65 72 28 29 2e 20 20 54 68 65  e_footer().  The
0430: 20 73 74 79 6c 65 5f 66 6f 6f 74 65 72 28 29 20   style_footer() 
0440: 72 6f 75 74 69 6e 65 0a 2a 2a 20 77 69 6c 6c 20  routine.** will 
0450: 67 65 6e 65 72 61 74 65 20 74 68 65 20 61 70 70  generate the app
0460: 72 6f 70 72 69 61 74 65 20 48 54 4d 4c 20 74 65  ropriate HTML te
0470: 78 74 20 6a 75 73 74 20 62 65 6c 6f 77 20 74 68  xt just below th
0480: 65 20 6d 61 69 6e 0a 2a 2a 20 6d 65 6e 75 2e 0a  e main.** menu..
0490: 2a 2f 0a 73 74 61 74 69 63 20 73 74 72 75 63 74  */.static struct
04a0: 20 53 75 62 6d 65 6e 75 20 7b 0a 20 20 63 6f 6e   Submenu {.  con
04b0: 73 74 20 63 68 61 72 20 2a 7a 4c 61 62 65 6c 3b  st char *zLabel;
04c0: 20 20 20 20 20 20 20 20 2f 2a 20 42 75 74 74 6f          /* Butto
04d0: 6e 20 6c 61 62 65 6c 20 2a 2f 0a 20 20 63 6f 6e  n label */.  con
04e0: 73 74 20 63 68 61 72 20 2a 7a 54 69 74 6c 65 3b  st char *zTitle;
04f0: 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a  .  const char *z
0500: 4c 69 6e 6b 3b 20 20 20 20 20 20 20 20 20 2f 2a  Link;         /*
0510: 20 4a 75 6d 70 20 74 6f 20 74 68 69 73 20 6c 69   Jump to this li
0520: 6e 6b 20 77 68 65 6e 20 62 75 74 74 6f 6e 20 69  nk when button i
0530: 73 20 70 72 65 73 73 65 64 20 2a 2f 0a 7d 20 61  s pressed */.} a
0540: 53 75 62 6d 65 6e 75 5b 33 30 5d 3b 0a 73 74 61  Submenu[30];.sta
0550: 74 69 63 20 69 6e 74 20 6e 53 75 62 6d 65 6e 75  tic int nSubmenu
0560: 20 3d 20 30 3b 20 20 20 20 20 2f 2a 20 4e 75 6d   = 0;     /* Num
0570: 62 65 72 20 6f 66 20 62 75 74 74 6f 6e 73 20 2a  ber of buttons *
0580: 2f 0a 73 74 61 74 69 63 20 73 74 72 75 63 74 20  /.static struct 
0590: 53 75 62 6d 65 6e 75 43 74 72 6c 20 7b 0a 20 20  SubmenuCtrl {.  
05a0: 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4e 61 6d  const char *zNam
05b0: 65 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 46 6f  e;         /* Fo
05c0: 72 6d 20 71 75 65 72 79 20 70 61 72 61 6d 65 74  rm query paramet
05d0: 65 72 20 2a 2f 0a 20 20 63 6f 6e 73 74 20 63 68  er */.  const ch
05e0: 61 72 20 2a 7a 4c 61 62 65 6c 3b 20 20 20 20 20  ar *zLabel;     
05f0: 20 20 20 2f 2a 20 4c 61 62 65 6c 2e 20 20 4d 69     /* Label.  Mi
0600: 67 68 74 20 62 65 20 4e 55 4c 4c 20 66 6f 72 20  ght be NULL for 
0610: 46 46 5f 4d 55 4c 54 49 20 2a 2f 0a 20 20 75 6e  FF_MULTI */.  un
0620: 73 69 67 6e 65 64 20 63 68 61 72 20 65 54 79 70  signed char eTyp
0630: 65 3b 20 20 20 20 20 20 20 2f 2a 20 46 46 5f 45  e;       /* FF_E
0640: 4e 54 52 59 2c 20 46 46 5f 4d 55 4c 54 49 2c 20  NTRY, FF_MULTI, 
0650: 46 46 5f 42 49 4e 41 52 59 20 2a 2f 0a 20 20 75  FF_BINARY */.  u
0660: 6e 73 69 67 6e 65 64 20 63 68 61 72 20 69 73 44  nsigned char isD
0670: 69 73 61 62 6c 65 64 3b 20 20 2f 2a 20 54 72 75  isabled;  /* Tru
0680: 65 20 69 66 20 74 68 69 73 20 63 6f 6e 74 72 6f  e if this contro
0690: 6c 20 69 73 20 67 72 61 79 65 64 20 6f 75 74 20  l is grayed out 
06a0: 2a 2f 0a 20 20 73 68 6f 72 74 20 69 6e 74 20 69  */.  short int i
06b0: 53 69 7a 65 3b 20 20 20 20 20 20 20 20 20 20 20  Size;           
06c0: 2f 2a 20 57 69 64 74 68 20 66 6f 72 20 46 46 5f  /* Width for FF_
06d0: 45 4e 54 52 59 2e 20 20 43 6f 75 6e 74 20 66 6f  ENTRY.  Count fo
06e0: 72 20 46 46 5f 4d 55 4c 54 49 20 2a 2f 0a 20 20  r FF_MULTI */.  
06f0: 63 6f 6e 73 74 20 63 68 61 72 20 2a 2a 61 7a 43  const char **azC
0700: 68 6f 69 63 65 3b 20 20 20 20 20 2f 2a 20 76 61  hoice;     /* va
0710: 6c 75 65 2f 64 69 73 70 6c 61 79 20 70 61 69 72  lue/display pair
0720: 73 20 66 6f 72 20 46 46 5f 4d 55 4c 54 49 20 2a  s for FF_MULTI *
0730: 2f 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a  /.  const char *
0740: 7a 46 61 6c 73 65 3b 20 20 20 20 20 20 20 20 2f  zFalse;        /
0750: 2a 20 46 46 5f 42 49 4e 41 52 59 20 6c 61 62 65  * FF_BINARY labe
0760: 6c 20 77 68 65 6e 20 66 61 6c 73 65 20 2a 2f 0a  l when false */.
0770: 7d 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 32  } aSubmenuCtrl[2
0780: 30 5d 3b 0a 73 74 61 74 69 63 20 69 6e 74 20 6e  0];.static int n
0790: 53 75 62 6d 65 6e 75 43 74 72 6c 20 3d 20 30 3b  SubmenuCtrl = 0;
07a0: 0a 23 64 65 66 69 6e 65 20 46 46 5f 45 4e 54 52  .#define FF_ENTR
07b0: 59 20 20 31 0a 23 64 65 66 69 6e 65 20 46 46 5f  Y  1.#define FF_
07c0: 4d 55 4c 54 49 20 20 32 0a 23 64 65 66 69 6e 65  MULTI  2.#define
07d0: 20 46 46 5f 42 49 4e 41 52 59 20 33 0a 0a 2f 2a   FF_BINARY 3../*
07e0: 0a 2a 2a 20 52 65 6d 65 6d 62 65 72 20 74 68 61  .** Remember tha
07f0: 74 20 74 68 65 20 68 65 61 64 65 72 20 68 61 73  t the header has
0800: 20 62 65 65 6e 20 67 65 6e 65 72 61 74 65 64 2e   been generated.
0810: 20 20 54 68 65 20 66 6f 6f 74 65 72 20 69 73 20    The footer is 
0820: 6f 6d 69 74 74 65 64 0a 2a 2a 20 69 66 20 61 6e  omitted.** if an
0830: 20 65 72 72 6f 72 20 6f 63 63 75 72 73 20 62 65   error occurs be
0840: 66 6f 72 65 20 74 68 65 20 68 65 61 64 65 72 2e  fore the header.
0850: 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20 68  .*/.static int h
0860: 65 61 64 65 72 48 61 73 42 65 65 6e 47 65 6e 65  eaderHasBeenGene
0870: 72 61 74 65 64 20 3d 20 30 3b 0a 0a 2f 2a 0a 2a  rated = 0;../*.*
0880: 2a 20 72 65 6d 65 6d 62 65 72 2c 20 69 66 20 61  * remember, if a
0890: 20 73 69 64 65 62 6f 78 20 77 61 73 20 75 73 65   sidebox was use
08a0: 64 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20  d.*/.static int 
08b0: 73 69 64 65 62 6f 78 55 73 65 64 20 3d 20 30 3b  sideboxUsed = 0;
08c0: 0a 0a 2f 2a 0a 2a 2a 20 41 64 2d 75 6e 69 74 20  ../*.** Ad-unit 
08d0: 73 74 79 6c 65 73 2e 0a 2a 2f 0a 73 74 61 74 69  styles..*/.stati
08e0: 63 20 75 6e 73 69 67 6e 65 64 20 61 64 55 6e 69  c unsigned adUni
08f0: 74 46 6c 61 67 73 20 3d 20 30 3b 0a 0a 0a 2f 2a  tFlags = 0;.../*
0900: 0a 2a 2a 20 4c 69 73 74 20 6f 66 20 68 79 70 65  .** List of hype
0910: 72 6c 69 6e 6b 73 20 61 6e 64 20 66 6f 72 6d 73  rlinks and forms
0920: 20 74 68 61 74 20 6e 65 65 64 20 74 6f 20 62 65   that need to be
0930: 20 72 65 73 6f 6c 76 65 64 20 62 79 20 6a 61 76   resolved by jav
0940: 61 73 63 72 69 70 74 20 69 6e 0a 2a 2a 20 74 68  ascript in.** th
0950: 65 20 66 6f 6f 74 65 72 2e 0a 2a 2f 0a 63 68 61  e footer..*/.cha
0960: 72 20 2a 2a 61 48 72 65 66 20 3d 20 30 3b 0a 69  r **aHref = 0;.i
0970: 6e 74 20 6e 48 72 65 66 20 3d 20 30 3b 0a 69 6e  nt nHref = 0;.in
0980: 74 20 6e 48 72 65 66 41 6c 6c 6f 63 20 3d 20 30  t nHrefAlloc = 0
0990: 3b 0a 63 68 61 72 20 2a 2a 61 46 6f 72 6d 41 63  ;.char **aFormAc
09a0: 74 69 6f 6e 20 3d 20 30 3b 0a 69 6e 74 20 6e 46  tion = 0;.int nF
09b0: 6f 72 6d 41 63 74 69 6f 6e 20 3d 20 30 3b 0a 0a  ormAction = 0;..
09c0: 2f 2a 0a 2a 2a 20 47 65 6e 65 72 61 74 65 20 61  /*.** Generate a
09d0: 6e 64 20 72 65 74 75 72 6e 20 61 20 61 6e 63 68  nd return a anch
09e0: 6f 72 20 74 61 67 20 6c 69 6b 65 20 74 68 69 73  or tag like this
09f0: 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 20 20 20 3c  :.**.**        <
0a00: 61 20 68 72 65 66 3d 22 55 52 4c 22 3e 0a 2a 2a  a href="URL">.**
0a10: 20 20 6f 72 20 20 20 20 3c 61 20 69 64 3d 22 49    or    <a id="I
0a20: 44 22 3e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 66 6f  D">.**.** The fo
0a30: 72 6d 20 6f 66 20 74 68 65 20 61 6e 63 68 6f 72  rm of the anchor
0a40: 20 74 61 67 20 69 73 20 64 65 74 65 72 6d 69 6e   tag is determin
0a50: 65 64 20 62 79 20 74 68 65 20 67 2e 6a 61 76 61  ed by the g.java
0a60: 73 63 72 69 70 74 48 79 70 65 72 6c 69 6e 6b 0a  scriptHyperlink.
0a70: 2a 2a 20 76 61 72 69 61 62 6c 65 2e 20 20 54 68  ** variable.  Th
0a80: 65 20 68 72 65 66 3d 22 55 52 4c 22 20 66 6f 72  e href="URL" for
0a90: 6d 20 69 73 20 75 73 65 64 20 69 66 20 67 2e 6a  m is used if g.j
0aa0: 61 76 61 73 63 72 69 70 74 48 79 70 65 72 6c 69  avascriptHyperli
0ab0: 6e 6b 20 69 73 20 66 61 6c 73 65 2e 0a 2a 2a 20  nk is false..** 
0ac0: 49 66 20 67 2e 6a 61 76 61 73 63 72 69 70 74 48  If g.javascriptH
0ad0: 79 70 65 72 6c 69 6e 6b 20 69 73 20 74 72 75 65  yperlink is true
0ae0: 20 74 68 65 6e 20 74 68 65 0a 2a 2a 20 69 64 3d   then the.** id=
0af0: 22 49 44 22 20 66 6f 72 6d 20 69 73 20 75 73 65  "ID" form is use
0b00: 64 20 61 6e 64 20 6a 61 76 61 73 63 72 69 70 74  d and javascript
0b10: 20 69 73 20 67 65 6e 65 72 61 74 65 64 20 69 6e   is generated in
0b20: 20 74 68 65 20 66 6f 6f 74 65 72 20 74 6f 20 63   the footer to c
0b30: 61 75 73 65 0a 2a 2a 20 68 72 65 66 20 76 61 6c  ause.** href val
0b40: 75 65 73 20 74 6f 20 62 65 20 69 6e 73 65 72 74  ues to be insert
0b50: 65 64 20 61 66 74 65 72 20 74 68 65 20 70 61 67  ed after the pag
0b60: 65 20 68 61 73 20 6c 6f 61 64 65 64 2e 20 20 49  e has loaded.  I
0b70: 66 0a 2a 2a 20 67 2e 70 65 72 6d 2e 48 69 73 74  f.** g.perm.Hist
0b80: 6f 72 79 20 69 73 20 66 61 6c 73 65 2c 20 74 68  ory is false, th
0b90: 65 6e 20 74 68 65 20 3c 61 20 69 64 3d 22 49 44  en the <a id="ID
0ba0: 22 3e 20 66 6f 72 6d 20 69 73 20 73 74 69 6c 6c  "> form is still
0bb0: 0a 2a 2a 20 67 65 6e 65 72 61 74 65 64 20 62 75  .** generated bu
0bc0: 74 20 74 68 65 20 6a 61 76 61 73 63 72 69 70 74  t the javascript
0bd0: 20 69 73 20 6e 6f 74 20 67 65 6e 65 72 61 74 65   is not generate
0be0: 64 20 73 6f 20 74 68 65 20 6c 69 6e 6b 73 20 6e  d so the links n
0bf0: 65 76 65 72 0a 2a 2a 20 61 63 74 69 76 61 74 65  ever.** activate
0c00: 2e 0a 2a 2a 0a 2a 2a 20 49 66 20 74 68 65 20 75  ..**.** If the u
0c10: 73 65 72 20 6c 61 63 6b 73 20 74 68 65 20 48 79  ser lacks the Hy
0c20: 70 65 72 6c 69 6e 6b 20 28 68 29 20 70 72 6f 70  perlink (h) prop
0c30: 65 72 74 79 20 61 6e 64 20 74 68 65 20 22 61 75  erty and the "au
0c40: 74 6f 2d 68 79 70 65 72 6c 69 6e 6b 22 0a 2a 2a  to-hyperlink".**
0c50: 20 73 65 74 74 69 6e 67 20 69 73 20 74 72 75 65   setting is true
0c60: 2c 20 74 68 65 6e 20 67 2e 70 65 72 6d 2e 48 79  , then g.perm.Hy
0c70: 70 65 72 6c 69 6e 6b 20 69 73 20 63 68 61 6e 67  perlink is chang
0c80: 65 64 20 66 72 6f 6d 20 30 20 74 6f 20 31 20 61  ed from 0 to 1 a
0c90: 6e 64 0a 2a 2a 20 67 2e 6a 61 76 61 73 63 72 69  nd.** g.javascri
0ca0: 70 74 48 79 70 65 72 6c 69 6e 6b 20 69 73 20 73  ptHyperlink is s
0cb0: 65 74 20 74 6f 20 31 2e 20 20 54 68 65 20 67 2e  et to 1.  The g.
0cc0: 6a 61 76 61 73 63 72 69 70 74 48 79 70 65 72 6c  javascriptHyperl
0cd0: 69 6e 6b 20 64 65 66 61 75 6c 74 73 0a 2a 2a 20  ink defaults.** 
0ce0: 74 6f 20 30 20 61 6e 64 20 6f 6e 6c 79 20 63 68  to 0 and only ch
0cf0: 61 6e 67 65 73 20 74 6f 20 6f 6e 65 20 69 66 20  anges to one if 
0d00: 74 68 65 20 75 73 65 72 20 6c 61 63 6b 73 20 74  the user lacks t
0d10: 68 65 20 48 79 70 65 72 6c 69 6e 6b 20 28 68 29  he Hyperlink (h)
0d20: 20 70 72 6f 70 65 72 74 79 0a 2a 2a 20 61 6e 64   property.** and
0d30: 20 74 68 65 20 22 61 75 74 6f 2d 68 79 70 65 72   the "auto-hyper
0d40: 6c 69 6e 6b 22 20 73 65 74 74 69 6e 67 20 69 73  link" setting is
0d50: 20 65 6e 61 62 6c 65 64 2e 0a 2a 2a 0a 2a 2a 20   enabled..**.** 
0d60: 46 69 6c 6c 69 6e 67 20 69 6e 20 74 68 65 20 68  Filling in the h
0d70: 72 65 66 3d 22 55 52 4c 22 20 75 73 69 6e 67 20  ref="URL" using 
0d80: 6a 61 76 61 73 63 72 69 70 74 20 69 73 20 61 20  javascript is a 
0d90: 64 65 66 65 6e 73 65 20 61 67 61 69 6e 73 74 20  defense against 
0da0: 62 6f 74 73 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20  bots..**.** The 
0db0: 6e 61 6d 65 20 6f 66 20 74 68 69 73 20 72 6f 75  name of this rou
0dc0: 74 69 6e 65 20 69 73 20 64 65 6c 69 62 65 72 61  tine is delibera
0dd0: 74 65 6c 79 20 6b 65 70 74 20 73 68 6f 72 74 20  tely kept short 
0de0: 73 6f 20 74 68 61 74 20 63 61 6e 20 62 65 0a 2a  so that can be.*
0df0: 2a 20 65 61 73 69 6c 79 20 75 73 65 64 20 77 69  * easily used wi
0e00: 74 68 69 6e 20 40 2d 6c 69 6e 65 73 2e 20 20 45  thin @-lines.  E
0e10: 78 61 6d 70 6c 65 3a 0a 2a 2a 0a 2a 2a 20 20 20  xample:.**.**   
0e20: 20 20 20 40 20 25 7a 28 68 72 65 66 28 22 25 52     @ %z(href("%R
0e30: 2f 61 72 74 69 66 61 63 74 2f 25 73 22 2c 7a 55  /artifact/%s",zU
0e40: 75 69 64 29 29 25 68 28 7a 46 4e 29 3c 2f 61 3e  uid))%h(zFN)</a>
0e50: 0a 2a 2a 0a 2a 2a 20 4e 6f 74 65 20 25 7a 20 66  .**.** Note %z f
0e60: 6f 72 6d 61 74 2e 20 20 54 68 65 20 73 74 72 69  ormat.  The stri
0e70: 6e 67 20 72 65 74 75 72 6e 65 64 20 62 79 20 74  ng returned by t
0e80: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 69 73 20  his function is 
0e90: 61 6c 77 61 79 73 0a 2a 2a 20 6f 62 74 61 69 6e  always.** obtain
0ea0: 65 64 20 66 72 6f 6d 20 66 6f 73 73 69 6c 5f 6d  ed from fossil_m
0eb0: 61 6c 6c 6f 63 28 29 20 73 6f 20 72 65 6e 64 65  alloc() so rende
0ec0: 72 69 6e 67 20 69 74 20 77 69 74 68 20 25 7a 20  ring it with %z 
0ed0: 77 69 6c 6c 20 72 65 63 6c 61 69 6d 0a 2a 2a 20  will reclaim.** 
0ee0: 74 68 61 74 20 6d 65 6d 6f 72 79 20 73 70 61 63  that memory spac
0ef0: 65 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 72 65 20 61  e..**.** There a
0f00: 72 65 20 74 77 6f 20 76 65 72 73 69 6f 6e 73 20  re two versions 
0f10: 6f 66 20 74 68 69 73 20 72 6f 75 74 69 6e 65 3a  of this routine:
0f20: 20 68 72 65 66 28 29 20 64 6f 65 73 20 61 20 70   href() does a p
0f30: 6c 61 69 6e 20 68 79 70 65 72 6c 69 6e 6b 0a 2a  lain hyperlink.*
0f40: 2a 20 61 6e 64 20 78 68 72 65 66 28 29 20 61 64  * and xhref() ad
0f50: 64 73 20 65 78 74 72 61 20 61 74 74 72 69 62 75  ds extra attribu
0f60: 74 65 20 74 65 78 74 2e 0a 2a 2a 0a 2a 2a 20 67  te text..**.** g
0f70: 2e 70 65 72 6d 2e 48 79 70 65 72 6c 69 6e 6b 20  .perm.Hyperlink 
0f80: 69 73 20 74 72 75 65 20 69 66 20 74 68 65 20 75  is true if the u
0f90: 73 65 72 20 68 61 73 20 74 68 65 20 48 79 70 65  ser has the Hype
0fa0: 72 6c 69 6e 6b 20 28 68 29 20 70 72 6f 70 65 72  rlink (h) proper
0fb0: 74 79 2e 0a 2a 2a 20 4d 6f 73 74 20 6c 6f 67 67  ty..** Most logg
0fc0: 65 64 20 69 6e 20 75 73 65 72 73 20 73 68 6f 75  ed in users shou
0fd0: 6c 64 20 68 61 76 65 20 74 68 69 73 20 70 72 6f  ld have this pro
0fe0: 70 65 72 74 79 2c 20 73 69 6e 63 65 20 77 65 20  perty, since we 
0ff0: 63 61 6e 20 61 73 73 75 6d 65 0a 2a 2a 20 74 68  can assume.** th
1000: 61 74 20 61 20 6c 6f 67 67 65 64 20 69 6e 20 75  at a logged in u
1010: 73 65 72 20 69 73 20 6e 6f 74 20 61 20 62 6f 74  ser is not a bot
1020: 2e 20 20 4f 6e 6c 79 20 22 6e 6f 62 6f 64 79 22  .  Only "nobody"
1030: 20 6c 61 63 6b 73 20 67 2e 70 65 72 6d 2e 48 79   lacks g.perm.Hy
1040: 70 65 72 6c 69 6e 6b 2c 0a 2a 2a 20 74 79 70 69  perlink,.** typi
1050: 63 61 6c 6c 79 2e 0a 2a 2f 0a 63 68 61 72 20 2a  cally..*/.char *
1060: 78 68 72 65 66 28 63 6f 6e 73 74 20 63 68 61 72  xhref(const char
1070: 20 2a 7a 45 78 74 72 61 2c 20 63 6f 6e 73 74 20   *zExtra, const 
1080: 63 68 61 72 20 2a 7a 46 6f 72 6d 61 74 2c 20 2e  char *zFormat, .
1090: 2e 2e 29 7b 0a 20 20 63 68 61 72 20 2a 7a 55 72  ..){.  char *zUr
10a0: 6c 3b 0a 20 20 76 61 5f 6c 69 73 74 20 61 70 3b  l;.  va_list ap;
10b0: 0a 20 20 76 61 5f 73 74 61 72 74 28 61 70 2c 20  .  va_start(ap, 
10c0: 7a 46 6f 72 6d 61 74 29 3b 0a 20 20 7a 55 72 6c  zFormat);.  zUrl
10d0: 20 3d 20 76 6d 70 72 69 6e 74 66 28 7a 46 6f 72   = vmprintf(zFor
10e0: 6d 61 74 2c 20 61 70 29 3b 0a 20 20 76 61 5f 65  mat, ap);.  va_e
10f0: 6e 64 28 61 70 29 3b 0a 20 20 69 66 28 20 67 2e  nd(ap);.  if( g.
1100: 70 65 72 6d 2e 48 79 70 65 72 6c 69 6e 6b 20 26  perm.Hyperlink &
1110: 26 20 21 67 2e 6a 61 76 61 73 63 72 69 70 74 48  & !g.javascriptH
1120: 79 70 65 72 6c 69 6e 6b 20 29 7b 0a 20 20 20 20  yperlink ){.    
1130: 63 68 61 72 20 2a 7a 48 55 72 6c 20 3d 20 6d 70  char *zHUrl = mp
1140: 72 69 6e 74 66 28 22 3c 61 20 25 73 20 68 72 65  rintf("<a %s hre
1150: 66 3d 5c 22 25 68 5c 22 3e 22 2c 20 7a 45 78 74  f=\"%h\">", zExt
1160: 72 61 2c 20 7a 55 72 6c 29 3b 0a 20 20 20 20 66  ra, zUrl);.    f
1170: 6f 73 73 69 6c 5f 66 72 65 65 28 7a 55 72 6c 29  ossil_free(zUrl)
1180: 3b 0a 20 20 20 20 72 65 74 75 72 6e 20 7a 48 55  ;.    return zHU
1190: 72 6c 3b 0a 20 20 7d 0a 20 20 69 66 28 20 6e 48  rl;.  }.  if( nH
11a0: 72 65 66 3e 3d 6e 48 72 65 66 41 6c 6c 6f 63 20  ref>=nHrefAlloc 
11b0: 29 7b 0a 20 20 20 20 6e 48 72 65 66 41 6c 6c 6f  ){.    nHrefAllo
11c0: 63 20 3d 20 6e 48 72 65 66 41 6c 6c 6f 63 2a 32  c = nHrefAlloc*2
11d0: 20 2b 20 31 30 3b 0a 20 20 20 20 61 48 72 65 66   + 10;.    aHref
11e0: 20 3d 20 66 6f 73 73 69 6c 5f 72 65 61 6c 6c 6f   = fossil_reallo
11f0: 63 28 61 48 72 65 66 2c 20 6e 48 72 65 66 41 6c  c(aHref, nHrefAl
1200: 6c 6f 63 2a 73 69 7a 65 6f 66 28 61 48 72 65 66  loc*sizeof(aHref
1210: 5b 30 5d 29 29 3b 0a 20 20 7d 0a 20 20 61 48 72  [0]));.  }.  aHr
1220: 65 66 5b 6e 48 72 65 66 2b 2b 5d 20 3d 20 7a 55  ef[nHref++] = zU
1230: 72 6c 3b 0a 20 20 72 65 74 75 72 6e 20 6d 70 72  rl;.  return mpr
1240: 69 6e 74 66 28 22 3c 61 20 25 73 20 69 64 3d 27  intf("<a %s id='
1250: 61 25 64 27 20 68 72 65 66 3d 27 25 52 2f 68 6f  a%d' href='%R/ho
1260: 6e 65 79 70 6f 74 27 3e 22 2c 20 7a 45 78 74 72  neypot'>", zExtr
1270: 61 2c 20 6e 48 72 65 66 29 3b 0a 7d 0a 63 68 61  a, nHref);.}.cha
1280: 72 20 2a 68 72 65 66 28 63 6f 6e 73 74 20 63 68  r *href(const ch
1290: 61 72 20 2a 7a 46 6f 72 6d 61 74 2c 20 2e 2e 2e  ar *zFormat, ...
12a0: 29 7b 0a 20 20 63 68 61 72 20 2a 7a 55 72 6c 3b  ){.  char *zUrl;
12b0: 0a 20 20 76 61 5f 6c 69 73 74 20 61 70 3b 0a 20  .  va_list ap;. 
12c0: 20 76 61 5f 73 74 61 72 74 28 61 70 2c 20 7a 46   va_start(ap, zF
12d0: 6f 72 6d 61 74 29 3b 0a 20 20 7a 55 72 6c 20 3d  ormat);.  zUrl =
12e0: 20 76 6d 70 72 69 6e 74 66 28 7a 46 6f 72 6d 61   vmprintf(zForma
12f0: 74 2c 20 61 70 29 3b 0a 20 20 76 61 5f 65 6e 64  t, ap);.  va_end
1300: 28 61 70 29 3b 0a 20 20 69 66 28 20 67 2e 70 65  (ap);.  if( g.pe
1310: 72 6d 2e 48 79 70 65 72 6c 69 6e 6b 20 26 26 20  rm.Hyperlink && 
1320: 21 67 2e 6a 61 76 61 73 63 72 69 70 74 48 79 70  !g.javascriptHyp
1330: 65 72 6c 69 6e 6b 20 29 7b 0a 20 20 20 20 63 68  erlink ){.    ch
1340: 61 72 20 2a 7a 48 55 72 6c 20 3d 20 6d 70 72 69  ar *zHUrl = mpri
1350: 6e 74 66 28 22 3c 61 20 68 72 65 66 3d 5c 22 25  ntf("<a href=\"%
1360: 68 5c 22 3e 22 2c 20 7a 55 72 6c 29 3b 0a 20 20  h\">", zUrl);.  
1370: 20 20 66 6f 73 73 69 6c 5f 66 72 65 65 28 7a 55    fossil_free(zU
1380: 72 6c 29 3b 0a 20 20 20 20 72 65 74 75 72 6e 20  rl);.    return 
1390: 7a 48 55 72 6c 3b 0a 20 20 7d 0a 20 20 69 66 28  zHUrl;.  }.  if(
13a0: 20 6e 48 72 65 66 3e 3d 6e 48 72 65 66 41 6c 6c   nHref>=nHrefAll
13b0: 6f 63 20 29 7b 0a 20 20 20 20 6e 48 72 65 66 41  oc ){.    nHrefA
13c0: 6c 6c 6f 63 20 3d 20 6e 48 72 65 66 41 6c 6c 6f  lloc = nHrefAllo
13d0: 63 2a 32 20 2b 20 31 30 3b 0a 20 20 20 20 61 48  c*2 + 10;.    aH
13e0: 72 65 66 20 3d 20 66 6f 73 73 69 6c 5f 72 65 61  ref = fossil_rea
13f0: 6c 6c 6f 63 28 61 48 72 65 66 2c 20 6e 48 72 65  lloc(aHref, nHre
1400: 66 41 6c 6c 6f 63 2a 73 69 7a 65 6f 66 28 61 48  fAlloc*sizeof(aH
1410: 72 65 66 5b 30 5d 29 29 3b 0a 20 20 7d 0a 20 20  ref[0]));.  }.  
1420: 61 48 72 65 66 5b 6e 48 72 65 66 2b 2b 5d 20 3d  aHref[nHref++] =
1430: 20 7a 55 72 6c 3b 0a 20 20 72 65 74 75 72 6e 20   zUrl;.  return 
1440: 6d 70 72 69 6e 74 66 28 22 3c 61 20 69 64 3d 27  mprintf("<a id='
1450: 61 25 64 27 20 68 72 65 66 3d 27 25 52 2f 68 6f  a%d' href='%R/ho
1460: 6e 65 79 70 6f 74 27 3e 22 2c 20 6e 48 72 65 66  neypot'>", nHref
1470: 29 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 47 65 6e 65  );.}../*.** Gene
1480: 72 61 74 65 20 3c 66 6f 72 6d 20 6d 65 74 68 6f  rate <form metho
1490: 64 3d 22 70 6f 73 74 22 20 61 63 74 69 6f 6e 3d  d="post" action=
14a0: 41 52 47 3e 2e 20 20 54 68 65 20 41 52 47 20 76  ARG>.  The ARG v
14b0: 61 6c 75 65 20 69 73 20 69 6e 73 65 72 74 65 64  alue is inserted
14c0: 0a 2a 2a 20 62 79 20 6a 61 76 61 73 63 72 69 70  .** by javascrip
14d0: 74 2e 0a 2a 2f 0a 76 6f 69 64 20 66 6f 72 6d 5f  t..*/.void form_
14e0: 62 65 67 69 6e 28 63 6f 6e 73 74 20 63 68 61 72  begin(const char
14f0: 20 2a 7a 4f 74 68 65 72 41 72 67 73 2c 20 63 6f   *zOtherArgs, co
1500: 6e 73 74 20 63 68 61 72 20 2a 7a 41 63 74 69 6f  nst char *zActio
1510: 6e 2c 20 2e 2e 2e 29 7b 0a 20 20 63 68 61 72 20  n, ...){.  char 
1520: 2a 7a 4c 69 6e 6b 3b 0a 20 20 76 61 5f 6c 69 73  *zLink;.  va_lis
1530: 74 20 61 70 3b 0a 20 20 69 66 28 20 7a 4f 74 68  t ap;.  if( zOth
1540: 65 72 41 72 67 73 3d 3d 30 20 29 20 7a 4f 74 68  erArgs==0 ) zOth
1550: 65 72 41 72 67 73 20 3d 20 22 22 3b 0a 20 20 76  erArgs = "";.  v
1560: 61 5f 73 74 61 72 74 28 61 70 2c 20 7a 41 63 74  a_start(ap, zAct
1570: 69 6f 6e 29 3b 0a 20 20 7a 4c 69 6e 6b 20 3d 20  ion);.  zLink = 
1580: 76 6d 70 72 69 6e 74 66 28 7a 41 63 74 69 6f 6e  vmprintf(zAction
1590: 2c 20 61 70 29 3b 0a 20 20 76 61 5f 65 6e 64 28  , ap);.  va_end(
15a0: 61 70 29 3b 0a 20 20 69 66 28 20 67 2e 70 65 72  ap);.  if( g.per
15b0: 6d 2e 48 79 70 65 72 6c 69 6e 6b 20 26 26 20 21  m.Hyperlink && !
15c0: 67 2e 6a 61 76 61 73 63 72 69 70 74 48 79 70 65  g.javascriptHype
15d0: 72 6c 69 6e 6b 20 29 7b 0a 20 20 20 20 40 20 3c  rlink ){.    @ <
15e0: 66 6f 72 6d 20 6d 65 74 68 6f 64 3d 22 50 4f 53  form method="POS
15f0: 54 22 20 61 63 74 69 6f 6e 3d 22 25 7a 28 7a 4c  T" action="%z(zL
1600: 69 6e 6b 29 22 20 25 73 28 7a 4f 74 68 65 72 41  ink)" %s(zOtherA
1610: 72 67 73 29 3e 0a 20 20 7d 65 6c 73 65 7b 0a 20  rgs)>.  }else{. 
1620: 20 20 20 69 6e 74 20 6e 3b 0a 20 20 20 20 61 46     int n;.    aF
1630: 6f 72 6d 41 63 74 69 6f 6e 20 3d 20 66 6f 73 73  ormAction = foss
1640: 69 6c 5f 72 65 61 6c 6c 6f 63 28 61 46 6f 72 6d  il_realloc(aForm
1650: 41 63 74 69 6f 6e 2c 20 28 6e 46 6f 72 6d 41 63  Action, (nFormAc
1660: 74 69 6f 6e 2b 31 29 2a 73 69 7a 65 6f 66 28 63  tion+1)*sizeof(c
1670: 68 61 72 2a 29 29 3b 0a 20 20 20 20 61 46 6f 72  har*));.    aFor
1680: 6d 41 63 74 69 6f 6e 5b 6e 46 6f 72 6d 41 63 74  mAction[nFormAct
1690: 69 6f 6e 2b 2b 5d 20 3d 20 7a 4c 69 6e 6b 3b 0a  ion++] = zLink;.
16a0: 20 20 20 20 6e 20 3d 20 6e 46 6f 72 6d 41 63 74      n = nFormAct
16b0: 69 6f 6e 3b 0a 20 20 20 20 40 20 3c 66 6f 72 6d  ion;.    @ <form
16c0: 20 69 64 3d 22 66 6f 72 6d 25 64 28 6e 29 22 20   id="form%d(n)" 
16d0: 6d 65 74 68 6f 64 3d 22 50 4f 53 54 22 20 61 63  method="POST" ac
16e0: 74 69 6f 6e 3d 27 25 52 2f 6c 6f 67 69 6e 27 20  tion='%R/login' 
16f0: 25 73 28 7a 4f 74 68 65 72 41 72 67 73 29 3e 0a  %s(zOtherArgs)>.
1700: 20 20 7d 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 47 65 6e    }.}../*.** Gen
1710: 65 72 61 74 65 20 6a 61 76 61 73 63 72 69 70 74  erate javascript
1720: 20 74 68 61 74 20 77 69 6c 6c 20 73 65 74 20 74   that will set t
1730: 68 65 20 68 72 65 66 3d 20 61 74 74 72 69 62 75  he href= attribu
1740: 74 65 20 6f 6e 20 61 6c 6c 20 61 6e 63 68 6f 72  te on all anchor
1750: 73 2e 0a 2a 2f 0a 76 6f 69 64 20 73 74 79 6c 65  s..*/.void style
1760: 5f 72 65 73 6f 6c 76 65 5f 68 72 65 66 28 76 6f  _resolve_href(vo
1770: 69 64 29 7b 0a 20 20 69 6e 74 20 69 3b 0a 20 20  id){.  int i;.  
1780: 69 6e 74 20 6e 44 65 6c 61 79 20 3d 20 64 62 5f  int nDelay = db_
1790: 67 65 74 5f 69 6e 74 28 22 61 75 74 6f 2d 68 79  get_int("auto-hy
17a0: 70 65 72 6c 69 6e 6b 2d 64 65 6c 61 79 22 2c 31  perlink-delay",1
17b0: 30 29 3b 0a 20 20 69 66 28 20 21 67 2e 70 65 72  0);.  if( !g.per
17c0: 6d 2e 48 79 70 65 72 6c 69 6e 6b 20 29 20 72 65  m.Hyperlink ) re
17d0: 74 75 72 6e 3b 0a 20 20 69 66 28 20 6e 48 72 65  turn;.  if( nHre
17e0: 66 3d 3d 30 20 26 26 20 6e 46 6f 72 6d 41 63 74  f==0 && nFormAct
17f0: 69 6f 6e 3d 3d 30 20 29 20 72 65 74 75 72 6e 3b  ion==0 ) return;
1800: 0a 20 20 40 20 3c 73 63 72 69 70 74 3e 0a 20 20  .  @ <script>.  
1810: 40 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 41 6c  @ function setAl
1820: 6c 48 72 65 66 73 28 29 7b 0a 20 20 69 66 28 20  lHrefs(){.  if( 
1830: 67 2e 6a 61 76 61 73 63 72 69 70 74 48 79 70 65  g.javascriptHype
1840: 72 6c 69 6e 6b 20 29 7b 0a 20 20 20 20 66 6f 72  rlink ){.    for
1850: 28 69 3d 30 3b 20 69 3c 6e 48 72 65 66 3b 20 69  (i=0; i<nHref; i
1860: 2b 2b 29 7b 0a 20 20 20 20 20 20 40 20 67 65 62  ++){.      @ geb
1870: 69 28 22 61 25 64 28 69 2b 31 29 22 29 2e 68 72  i("a%d(i+1)").hr
1880: 65 66 3d 22 25 73 28 61 48 72 65 66 5b 69 5d 29  ef="%s(aHref[i])
1890: 22 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 66  ";.    }.  }.  f
18a0: 6f 72 28 69 3d 30 3b 20 69 3c 6e 46 6f 72 6d 41  or(i=0; i<nFormA
18b0: 63 74 69 6f 6e 3b 20 69 2b 2b 29 7b 0a 20 20 20  ction; i++){.   
18c0: 20 40 20 67 65 62 69 28 22 66 6f 72 6d 25 64 28   @ gebi("form%d(
18d0: 69 2b 31 29 22 29 2e 61 63 74 69 6f 6e 3d 22 25  i+1)").action="%
18e0: 73 28 61 46 6f 72 6d 41 63 74 69 6f 6e 5b 69 5d  s(aFormAction[i]
18f0: 29 22 3b 0a 20 20 7d 0a 20 20 40 20 7d 0a 20 20  )";.  }.  @ }.  
1900: 69 66 28 20 73 71 6c 69 74 65 33 5f 73 74 72 67  if( sqlite3_strg
1910: 6c 6f 62 28 22 2a 4f 70 65 72 61 20 4d 69 6e 69  lob("*Opera Mini
1920: 2f 5b 31 2d 39 5d 2a 22 2c 20 50 28 22 48 54 54  /[1-9]*", P("HTT
1930: 50 5f 55 53 45 52 5f 41 47 45 4e 54 22 29 29 3d  P_USER_AGENT"))=
1940: 3d 30 20 29 7b 0a 20 20 20 20 2f 2a 20 53 70 65  =0 ){.    /* Spe
1950: 63 69 61 6c 20 63 61 73 65 20 66 6f 72 20 4f 70  cial case for Op
1960: 65 72 61 20 4d 69 6e 69 2c 20 77 68 69 63 68 20  era Mini, which 
1970: 65 78 65 63 75 74 65 73 20 4a 53 20 73 65 72 76  executes JS serv
1980: 65 72 2d 73 69 64 65 20 2a 2f 0a 20 20 20 20 40  er-side */.    @
1990: 20 76 61 72 20 69 73 4f 70 65 72 61 4d 69 6e 69   var isOperaMini
19a0: 20 3d 20 4f 62 6a 65 63 74 2e 70 72 6f 74 6f 74   = Object.protot
19b0: 79 70 65 2e 74 6f 53 74 72 69 6e 67 2e 63 61 6c  ype.toString.cal
19c0: 6c 28 77 69 6e 64 6f 77 2e 6f 70 65 72 61 6d 69  l(window.operami
19d0: 6e 69 29 0a 20 20 20 20 40 20 20 20 20 20 20 20  ni).    @       
19e0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 3d 3d 20              === 
19f0: 22 5b 6f 62 6a 65 63 74 20 4f 70 65 72 61 4d 69  "[object OperaMi
1a00: 6e 69 5d 22 3b 0a 20 20 20 20 40 20 69 66 28 20  ni]";.    @ if( 
1a10: 69 73 4f 70 65 72 61 4d 69 6e 69 20 29 7b 0a 20  isOperaMini ){. 
1a20: 20 20 20 40 20 20 20 73 65 74 54 69 6d 65 6f 75     @   setTimeou
1a30: 74 28 22 73 65 74 41 6c 6c 48 72 65 66 73 28 29  t("setAllHrefs()
1a40: 3b 22 2c 25 64 28 6e 44 65 6c 61 79 29 29 3b 0a  ;",%d(nDelay));.
1a50: 20 20 20 20 40 20 7d 0a 20 20 7d 65 6c 73 65 20      @ }.  }else 
1a60: 69 66 28 20 64 62 5f 67 65 74 5f 62 6f 6f 6c 65  if( db_get_boole
1a70: 61 6e 28 22 61 75 74 6f 2d 68 79 70 65 72 6c 69  an("auto-hyperli
1a80: 6e 6b 2d 69 73 68 75 6d 61 6e 22 2c 30 29 20 26  nk-ishuman",0) &
1a90: 26 20 67 2e 69 73 48 75 6d 61 6e 20 29 7b 0a 20  & g.isHuman ){. 
1aa0: 20 20 20 2f 2a 20 41 63 74 69 76 65 20 68 79 70     /* Active hyp
1ab0: 65 72 6c 69 6e 6b 73 20 61 66 74 65 72 20 61 20  erlinks after a 
1ac0: 64 65 6c 61 79 20 2a 2f 0a 20 20 20 20 40 20 73  delay */.    @ s
1ad0: 65 74 54 69 6d 65 6f 75 74 28 22 73 65 74 41 6c  etTimeout("setAl
1ae0: 6c 48 72 65 66 73 28 29 3b 22 2c 25 64 28 6e 44  lHrefs();",%d(nD
1af0: 65 6c 61 79 29 29 3b 0a 20 20 7d 65 6c 73 65 20  elay));.  }else 
1b00: 69 66 28 20 64 62 5f 67 65 74 5f 62 6f 6f 6c 65  if( db_get_boole
1b10: 61 6e 28 22 61 75 74 6f 2d 68 79 70 65 72 6c 69  an("auto-hyperli
1b20: 6e 6b 2d 6d 6f 75 73 65 6f 76 65 72 22 2c 30 29  nk-mouseover",0)
1b30: 20 29 7b 0a 20 20 20 20 2f 2a 20 52 65 71 75 69   ){.    /* Requi
1b40: 72 65 20 6d 6f 75 73 65 20 6d 6f 76 65 6d 65 6e  re mouse movemen
1b50: 74 20 62 65 66 6f 72 65 20 73 74 61 72 74 69 6e  t before startin
1b60: 67 20 74 68 65 20 74 65 69 6d 20 74 68 61 74 20  g the teim that 
1b70: 77 69 6c 6c 0a 20 20 20 20 2a 2a 20 61 63 74 69  will.    ** acti
1b80: 76 61 74 69 6e 67 20 68 79 70 65 72 6c 69 6e 6b  vating hyperlink
1b90: 73 20 2a 2f 0a 20 20 20 20 40 20 64 6f 63 75 6d  s */.    @ docum
1ba0: 65 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42  ent.getElementsB
1bb0: 79 54 61 67 4e 61 6d 65 28 22 62 6f 64 79 22 29  yTagName("body")
1bc0: 5b 30 5d 2e 6f 6e 6d 6f 75 73 65 6d 6f 76 65 3d  [0].onmousemove=
1bd0: 66 75 6e 63 74 69 6f 6e 28 29 7b 0a 20 20 20 20  function(){.    
1be0: 40 20 20 20 73 65 74 54 69 6d 65 6f 75 74 28 22  @   setTimeout("
1bf0: 73 65 74 41 6c 6c 48 72 65 66 73 28 29 3b 22 2c  setAllHrefs();",
1c00: 25 64 28 6e 44 65 6c 61 79 29 29 3b 0a 20 20 20  %d(nDelay));.   
1c10: 20 40 20 20 20 74 68 69 73 2e 6f 6e 6d 6f 75 73   @   this.onmous
1c20: 65 6d 6f 76 65 20 3d 20 6e 75 6c 6c 3b 0a 20 20  emove = null;.  
1c30: 20 20 40 20 7d 0a 20 20 7d 65 6c 73 65 7b 0a 20    @ }.  }else{. 
1c40: 20 20 20 2f 2a 20 41 63 74 69 76 65 20 68 79 70     /* Active hyp
1c50: 65 72 6c 69 6e 6b 73 20 61 66 74 65 72 20 61 20  erlinks after a 
1c60: 64 65 6c 61 79 20 2a 2f 0a 20 20 20 20 40 20 73  delay */.    @ s
1c70: 65 74 54 69 6d 65 6f 75 74 28 22 73 65 74 41 6c  etTimeout("setAl
1c80: 6c 48 72 65 66 73 28 29 3b 22 2c 25 64 28 6e 44  lHrefs();",%d(nD
1c90: 65 6c 61 79 29 29 3b 0a 20 20 7d 0a 20 20 40 20  elay));.  }.  @ 
1ca0: 3c 2f 73 63 72 69 70 74 3e 0a 7d 0a 0a 2f 2a 0a  </script>.}../*.
1cb0: 2a 2a 20 41 64 64 20 61 20 6e 65 77 20 65 6c 65  ** Add a new ele
1cc0: 6d 65 6e 74 20 74 6f 20 74 68 65 20 73 75 62 6d  ment to the subm
1cd0: 65 6e 75 0a 2a 2f 0a 76 6f 69 64 20 73 74 79 6c  enu.*/.void styl
1ce0: 65 5f 73 75 62 6d 65 6e 75 5f 65 6c 65 6d 65 6e  e_submenu_elemen
1cf0: 74 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  t(.  const char 
1d00: 2a 7a 4c 61 62 65 6c 2c 0a 20 20 63 6f 6e 73 74  *zLabel,.  const
1d10: 20 63 68 61 72 20 2a 7a 54 69 74 6c 65 2c 0a 20   char *zTitle,. 
1d20: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4c 69   const char *zLi
1d30: 6e 6b 2c 0a 20 20 2e 2e 2e 0a 29 7b 0a 20 20 76  nk,.  ....){.  v
1d40: 61 5f 6c 69 73 74 20 61 70 3b 0a 20 20 61 73 73  a_list ap;.  ass
1d50: 65 72 74 28 20 6e 53 75 62 6d 65 6e 75 20 3c 20  ert( nSubmenu < 
1d60: 73 69 7a 65 6f 66 28 61 53 75 62 6d 65 6e 75 29  sizeof(aSubmenu)
1d70: 2f 73 69 7a 65 6f 66 28 61 53 75 62 6d 65 6e 75  /sizeof(aSubmenu
1d80: 5b 30 5d 29 20 29 3b 0a 20 20 61 53 75 62 6d 65  [0]) );.  aSubme
1d90: 6e 75 5b 6e 53 75 62 6d 65 6e 75 5d 2e 7a 4c 61  nu[nSubmenu].zLa
1da0: 62 65 6c 20 3d 20 7a 4c 61 62 65 6c 3b 0a 20 20  bel = zLabel;.  
1db0: 61 53 75 62 6d 65 6e 75 5b 6e 53 75 62 6d 65 6e  aSubmenu[nSubmen
1dc0: 75 5d 2e 7a 54 69 74 6c 65 20 3d 20 7a 54 69 74  u].zTitle = zTit
1dd0: 6c 65 20 3f 20 7a 54 69 74 6c 65 20 3a 20 7a 4c  le ? zTitle : zL
1de0: 61 62 65 6c 3b 0a 20 20 76 61 5f 73 74 61 72 74  abel;.  va_start
1df0: 28 61 70 2c 20 7a 4c 69 6e 6b 29 3b 0a 20 20 61  (ap, zLink);.  a
1e00: 53 75 62 6d 65 6e 75 5b 6e 53 75 62 6d 65 6e 75  Submenu[nSubmenu
1e10: 5d 2e 7a 4c 69 6e 6b 20 3d 20 76 6d 70 72 69 6e  ].zLink = vmprin
1e20: 74 66 28 7a 4c 69 6e 6b 2c 20 61 70 29 3b 0a 20  tf(zLink, ap);. 
1e30: 20 76 61 5f 65 6e 64 28 61 70 29 3b 0a 20 20 6e   va_end(ap);.  n
1e40: 53 75 62 6d 65 6e 75 2b 2b 3b 0a 7d 0a 76 6f 69  Submenu++;.}.voi
1e50: 64 20 73 74 79 6c 65 5f 73 75 62 6d 65 6e 75 5f  d style_submenu_
1e60: 65 6e 74 72 79 28 0a 20 20 63 6f 6e 73 74 20 63  entry(.  const c
1e70: 68 61 72 20 2a 7a 4e 61 6d 65 2c 20 20 20 20 20  har *zName,     
1e80: 20 20 2f 2a 20 51 75 65 72 79 20 70 61 72 61 6d    /* Query param
1e90: 65 74 65 72 20 6e 61 6d 65 20 2a 2f 0a 20 20 63  eter name */.  c
1ea0: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 4c 61 62 65  onst char *zLabe
1eb0: 6c 2c 20 20 20 20 20 20 2f 2a 20 4c 61 62 65 6c  l,      /* Label
1ec0: 20 62 65 66 6f 72 65 20 74 68 65 20 65 6e 74 72   before the entr
1ed0: 79 20 62 6f 78 20 2a 2f 0a 20 20 69 6e 74 20 69  y box */.  int i
1ee0: 53 69 7a 65 2c 20 20 20 20 20 20 20 20 20 20 20  Size,           
1ef0: 20 20 20 20 2f 2a 20 53 69 7a 65 20 6f 66 20 74      /* Size of t
1f00: 68 65 20 65 6e 74 72 79 20 62 6f 78 20 2a 2f 0a  he entry box */.
1f10: 20 20 69 6e 74 20 69 73 44 69 73 61 62 6c 65 64    int isDisabled
1f20: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 54 72             /* Tr
1f30: 75 65 20 69 66 20 64 69 73 61 62 6c 65 64 20 2a  ue if disabled *
1f40: 2f 0a 29 7b 0a 20 20 61 73 73 65 72 74 28 20 6e  /.){.  assert( n
1f50: 53 75 62 6d 65 6e 75 43 74 72 6c 20 3c 20 41 72  SubmenuCtrl < Ar
1f60: 72 61 79 53 69 7a 65 28 61 53 75 62 6d 65 6e 75  raySize(aSubmenu
1f70: 43 74 72 6c 29 20 29 3b 0a 20 20 61 53 75 62 6d  Ctrl) );.  aSubm
1f80: 65 6e 75 43 74 72 6c 5b 6e 53 75 62 6d 65 6e 75  enuCtrl[nSubmenu
1f90: 43 74 72 6c 5d 2e 7a 4e 61 6d 65 20 3d 20 7a 4e  Ctrl].zName = zN
1fa0: 61 6d 65 3b 0a 20 20 61 53 75 62 6d 65 6e 75 43  ame;.  aSubmenuC
1fb0: 74 72 6c 5b 6e 53 75 62 6d 65 6e 75 43 74 72 6c  trl[nSubmenuCtrl
1fc0: 5d 2e 7a 4c 61 62 65 6c 20 3d 20 7a 4c 61 62 65  ].zLabel = zLabe
1fd0: 6c 3b 0a 20 20 61 53 75 62 6d 65 6e 75 43 74 72  l;.  aSubmenuCtr
1fe0: 6c 5b 6e 53 75 62 6d 65 6e 75 43 74 72 6c 5d 2e  l[nSubmenuCtrl].
1ff0: 69 53 69 7a 65 20 3d 20 69 53 69 7a 65 3b 0a 20  iSize = iSize;. 
2000: 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 6e 53   aSubmenuCtrl[nS
2010: 75 62 6d 65 6e 75 43 74 72 6c 5d 2e 69 73 44 69  ubmenuCtrl].isDi
2020: 73 61 62 6c 65 64 20 3d 20 69 73 44 69 73 61 62  sabled = isDisab
2030: 6c 65 64 3b 0a 20 20 61 53 75 62 6d 65 6e 75 43  led;.  aSubmenuC
2040: 74 72 6c 5b 6e 53 75 62 6d 65 6e 75 43 74 72 6c  trl[nSubmenuCtrl
2050: 5d 2e 65 54 79 70 65 20 3d 20 46 46 5f 45 4e 54  ].eType = FF_ENT
2060: 52 59 3b 0a 20 20 6e 53 75 62 6d 65 6e 75 43 74  RY;.  nSubmenuCt
2070: 72 6c 2b 2b 3b 0a 7d 0a 76 6f 69 64 20 73 74 79  rl++;.}.void sty
2080: 6c 65 5f 73 75 62 6d 65 6e 75 5f 62 69 6e 61 72  le_submenu_binar
2090: 79 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72 20  y(.  const char 
20a0: 2a 7a 4e 61 6d 65 2c 20 20 20 20 20 20 20 2f 2a  *zName,       /*
20b0: 20 51 75 65 72 79 20 70 61 72 61 6d 65 74 65 72   Query parameter
20c0: 20 6e 61 6d 65 20 2a 2f 0a 20 20 63 6f 6e 73 74   name */.  const
20d0: 20 63 68 61 72 20 2a 7a 54 72 75 65 2c 20 20 20   char *zTrue,   
20e0: 20 20 20 20 2f 2a 20 4c 61 62 65 6c 20 74 6f 20      /* Label to 
20f0: 73 68 6f 77 20 77 68 65 6e 20 70 61 72 61 6d 65  show when parame
2100: 74 65 72 20 69 73 20 74 72 75 65 20 2a 2f 0a 20  ter is true */. 
2110: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46 61   const char *zFa
2120: 6c 73 65 2c 20 20 20 20 20 20 2f 2a 20 4c 61 62  lse,      /* Lab
2130: 65 6c 20 74 6f 20 73 68 6f 77 20 77 68 65 6e 20  el to show when 
2140: 74 68 65 20 70 61 72 61 6d 65 74 65 72 20 69 73  the parameter is
2150: 20 66 61 6c 73 65 20 2a 2f 0a 20 20 69 6e 74 20   false */.  int 
2160: 69 73 44 69 73 61 62 6c 65 64 20 20 20 20 20 20  isDisabled      
2170: 20 20 20 20 20 2f 2a 20 54 72 75 65 20 69 66 20       /* True if 
2180: 74 68 69 73 20 63 6f 6e 74 72 6f 6c 20 69 73 20  this control is 
2190: 64 69 73 61 62 6c 65 64 20 2a 2f 0a 29 7b 0a 20  disabled */.){. 
21a0: 20 61 73 73 65 72 74 28 20 6e 53 75 62 6d 65 6e   assert( nSubmen
21b0: 75 43 74 72 6c 20 3c 20 41 72 72 61 79 53 69 7a  uCtrl < ArraySiz
21c0: 65 28 61 53 75 62 6d 65 6e 75 43 74 72 6c 29 20  e(aSubmenuCtrl) 
21d0: 29 3b 0a 20 20 61 53 75 62 6d 65 6e 75 43 74 72  );.  aSubmenuCtr
21e0: 6c 5b 6e 53 75 62 6d 65 6e 75 43 74 72 6c 5d 2e  l[nSubmenuCtrl].
21f0: 7a 4e 61 6d 65 20 3d 20 7a 4e 61 6d 65 3b 0a 20  zName = zName;. 
2200: 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 6e 53   aSubmenuCtrl[nS
2210: 75 62 6d 65 6e 75 43 74 72 6c 5d 2e 7a 4c 61 62  ubmenuCtrl].zLab
2220: 65 6c 20 3d 20 7a 54 72 75 65 3b 0a 20 20 61 53  el = zTrue;.  aS
2230: 75 62 6d 65 6e 75 43 74 72 6c 5b 6e 53 75 62 6d  ubmenuCtrl[nSubm
2240: 65 6e 75 43 74 72 6c 5d 2e 7a 46 61 6c 73 65 20  enuCtrl].zFalse 
2250: 3d 20 7a 46 61 6c 73 65 3b 0a 20 20 61 53 75 62  = zFalse;.  aSub
2260: 6d 65 6e 75 43 74 72 6c 5b 6e 53 75 62 6d 65 6e  menuCtrl[nSubmen
2270: 75 43 74 72 6c 5d 2e 69 73 44 69 73 61 62 6c 65  uCtrl].isDisable
2280: 64 20 3d 20 69 73 44 69 73 61 62 6c 65 64 3b 0a  d = isDisabled;.
2290: 20 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 6e    aSubmenuCtrl[n
22a0: 53 75 62 6d 65 6e 75 43 74 72 6c 5d 2e 65 54 79  SubmenuCtrl].eTy
22b0: 70 65 20 3d 20 46 46 5f 42 49 4e 41 52 59 3b 0a  pe = FF_BINARY;.
22c0: 20 20 6e 53 75 62 6d 65 6e 75 43 74 72 6c 2b 2b    nSubmenuCtrl++
22d0: 3b 0a 7d 0a 76 6f 69 64 20 73 74 79 6c 65 5f 73  ;.}.void style_s
22e0: 75 62 6d 65 6e 75 5f 6d 75 6c 74 69 63 68 6f 69  ubmenu_multichoi
22f0: 63 65 28 0a 20 20 63 6f 6e 73 74 20 63 68 61 72  ce(.  const char
2300: 20 2a 7a 4e 61 6d 65 2c 20 20 20 20 20 20 20 2f   *zName,       /
2310: 2a 20 51 75 65 72 79 20 70 61 72 61 6d 65 74 65  * Query paramete
2320: 72 20 6e 61 6d 65 20 2a 2f 0a 20 20 69 6e 74 20  r name */.  int 
2330: 6e 43 68 6f 69 63 65 2c 20 20 20 20 20 20 20 20  nChoice,        
2340: 20 20 20 20 20 2f 2a 20 4e 75 6d 62 65 72 20 6f       /* Number o
2350: 66 20 6f 70 74 69 6f 6e 73 20 2a 2f 0a 20 20 63  f options */.  c
2360: 6f 6e 73 74 20 63 68 61 72 20 2a 2a 61 7a 43 68  onst char **azCh
2370: 6f 69 63 65 2c 20 20 20 2f 2a 20 76 61 6c 75 65  oice,   /* value
2380: 2f 64 69 73 70 6c 61 79 20 70 61 69 72 73 2e 20  /display pairs. 
2390: 20 32 2a 6e 43 68 6f 69 63 65 20 65 6e 74 72 69   2*nChoice entri
23a0: 65 73 20 2a 2f 0a 20 20 69 6e 74 20 69 73 44 69  es */.  int isDi
23b0: 73 61 62 6c 65 64 20 20 20 20 20 20 20 20 20 20  sabled          
23c0: 20 2f 2a 20 54 72 75 65 20 69 66 20 74 68 69 73   /* True if this
23d0: 20 63 6f 6e 74 72 6f 6c 20 69 73 20 64 69 73 61   control is disa
23e0: 62 6c 65 64 20 2a 2f 0a 29 7b 0a 20 20 61 73 73  bled */.){.  ass
23f0: 65 72 74 28 20 6e 53 75 62 6d 65 6e 75 43 74 72  ert( nSubmenuCtr
2400: 6c 20 3c 20 41 72 72 61 79 53 69 7a 65 28 61 53  l < ArraySize(aS
2410: 75 62 6d 65 6e 75 43 74 72 6c 29 20 29 3b 0a 20  ubmenuCtrl) );. 
2420: 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 6e 53   aSubmenuCtrl[nS
2430: 75 62 6d 65 6e 75 43 74 72 6c 5d 2e 7a 4e 61 6d  ubmenuCtrl].zNam
2440: 65 20 3d 20 7a 4e 61 6d 65 3b 0a 20 20 61 53 75  e = zName;.  aSu
2450: 62 6d 65 6e 75 43 74 72 6c 5b 6e 53 75 62 6d 65  bmenuCtrl[nSubme
2460: 6e 75 43 74 72 6c 5d 2e 69 53 69 7a 65 20 3d 20  nuCtrl].iSize = 
2470: 6e 43 68 6f 69 63 65 3b 0a 20 20 61 53 75 62 6d  nChoice;.  aSubm
2480: 65 6e 75 43 74 72 6c 5b 6e 53 75 62 6d 65 6e 75  enuCtrl[nSubmenu
2490: 43 74 72 6c 5d 2e 61 7a 43 68 6f 69 63 65 20 3d  Ctrl].azChoice =
24a0: 20 61 7a 43 68 6f 69 63 65 3b 0a 20 20 61 53 75   azChoice;.  aSu
24b0: 62 6d 65 6e 75 43 74 72 6c 5b 6e 53 75 62 6d 65  bmenuCtrl[nSubme
24c0: 6e 75 43 74 72 6c 5d 2e 69 73 44 69 73 61 62 6c  nuCtrl].isDisabl
24d0: 65 64 20 3d 20 69 73 44 69 73 61 62 6c 65 64 3b  ed = isDisabled;
24e0: 0a 20 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b  .  aSubmenuCtrl[
24f0: 6e 53 75 62 6d 65 6e 75 43 74 72 6c 5d 2e 65 54  nSubmenuCtrl].eT
2500: 79 70 65 20 3d 20 46 46 5f 4d 55 4c 54 49 3b 0a  ype = FF_MULTI;.
2510: 20 20 6e 53 75 62 6d 65 6e 75 43 74 72 6c 2b 2b    nSubmenuCtrl++
2520: 3b 0a 7d 0a 0a 0a 2f 2a 0a 2a 2a 20 43 6f 6d 70  ;.}.../*.** Comp
2530: 61 72 65 20 74 77 6f 20 73 75 62 6d 65 6e 75 20  are two submenu 
2540: 69 74 65 6d 73 20 66 6f 72 20 73 6f 72 74 69 6e  items for sortin
2550: 67 20 70 75 72 70 6f 73 65 73 0a 2a 2f 0a 73 74  g purposes.*/.st
2560: 61 74 69 63 20 69 6e 74 20 73 75 62 6d 65 6e 75  atic int submenu
2570: 43 6f 6d 70 61 72 65 28 63 6f 6e 73 74 20 76 6f  Compare(const vo
2580: 69 64 20 2a 61 2c 20 63 6f 6e 73 74 20 76 6f 69  id *a, const voi
2590: 64 20 2a 62 29 7b 0a 20 20 63 6f 6e 73 74 20 73  d *b){.  const s
25a0: 74 72 75 63 74 20 53 75 62 6d 65 6e 75 20 2a 41  truct Submenu *A
25b0: 20 3d 20 28 63 6f 6e 73 74 20 73 74 72 75 63 74   = (const struct
25c0: 20 53 75 62 6d 65 6e 75 2a 29 61 3b 0a 20 20 63   Submenu*)a;.  c
25d0: 6f 6e 73 74 20 73 74 72 75 63 74 20 53 75 62 6d  onst struct Subm
25e0: 65 6e 75 20 2a 42 20 3d 20 28 63 6f 6e 73 74 20  enu *B = (const 
25f0: 73 74 72 75 63 74 20 53 75 62 6d 65 6e 75 2a 29  struct Submenu*)
2600: 62 3b 0a 20 20 72 65 74 75 72 6e 20 66 6f 73 73  b;.  return foss
2610: 69 6c 5f 73 74 72 63 6d 70 28 41 2d 3e 7a 4c 61  il_strcmp(A->zLa
2620: 62 65 6c 2c 20 42 2d 3e 7a 4c 61 62 65 6c 29 3b  bel, B->zLabel);
2630: 0a 7d 0a 0a 2f 2a 20 55 73 65 20 74 68 69 73 20  .}../* Use this 
2640: 66 6f 72 20 74 68 65 20 24 63 75 72 72 65 6e 74  for the $current
2650: 5f 70 61 67 65 20 76 61 72 69 61 62 6c 65 20 69  _page variable i
2660: 66 20 69 74 20 69 73 20 6e 6f 74 20 4e 55 4c 4c  f it is not NULL
2670: 2e 20 20 49 66 20 69 74 20 69 73 0a 2a 2a 20 4e  .  If it is.** N
2680: 55 4c 4c 20 74 68 65 6e 20 75 73 65 20 67 2e 7a  ULL then use g.z
2690: 50 61 74 68 2e 0a 2a 2f 0a 73 74 61 74 69 63 20  Path..*/.static 
26a0: 63 68 61 72 20 2a 6c 6f 63 61 6c 5f 7a 43 75 72  char *local_zCur
26b0: 72 65 6e 74 50 61 67 65 20 3d 20 30 3b 0a 0a 2f  rentPage = 0;../
26c0: 2a 0a 2a 2a 20 53 65 74 20 74 68 65 20 64 65 73  *.** Set the des
26d0: 69 72 65 64 20 24 63 75 72 72 65 6e 74 5f 70 61  ired $current_pa
26e0: 67 65 20 74 6f 20 73 6f 6d 65 74 68 69 6e 67 20  ge to something 
26f0: 6f 74 68 65 72 20 74 68 61 6e 20 67 2e 7a 50 61  other than g.zPa
2700: 74 68 0a 2a 2f 0a 76 6f 69 64 20 73 74 79 6c 65  th.*/.void style
2710: 5f 73 65 74 5f 63 75 72 72 65 6e 74 5f 70 61 67  _set_current_pag
2720: 65 28 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 46  e(const char *zF
2730: 6f 72 6d 61 74 2c 20 2e 2e 2e 29 7b 0a 20 20 66  ormat, ...){.  f
2740: 6f 73 73 69 6c 5f 66 72 65 65 28 6c 6f 63 61 6c  ossil_free(local
2750: 5f 7a 43 75 72 72 65 6e 74 50 61 67 65 29 3b 0a  _zCurrentPage);.
2760: 20 20 69 66 28 20 7a 46 6f 72 6d 61 74 3d 3d 30    if( zFormat==0
2770: 20 29 7b 0a 20 20 20 20 6c 6f 63 61 6c 5f 7a 43   ){.    local_zC
2780: 75 72 72 65 6e 74 50 61 67 65 20 3d 20 30 3b 0a  urrentPage = 0;.
2790: 20 20 7d 65 6c 73 65 7b 0a 20 20 20 20 76 61 5f    }else{.    va_
27a0: 6c 69 73 74 20 61 70 3b 0a 20 20 20 20 76 61 5f  list ap;.    va_
27b0: 73 74 61 72 74 28 61 70 2c 20 7a 46 6f 72 6d 61  start(ap, zForma
27c0: 74 29 3b 0a 20 20 20 20 6c 6f 63 61 6c 5f 7a 43  t);.    local_zC
27d0: 75 72 72 65 6e 74 50 61 67 65 20 3d 20 76 6d 70  urrentPage = vmp
27e0: 72 69 6e 74 66 28 7a 46 6f 72 6d 61 74 2c 20 61  rintf(zFormat, a
27f0: 70 29 3b 0a 20 20 20 20 76 61 5f 65 6e 64 28 61  p);.    va_end(a
2800: 70 29 3b 0a 20 20 7d 0a 7d 0a 0a 2f 2a 0a 2a 2a  p);.  }.}../*.**
2810: 20 43 72 65 61 74 65 20 61 20 54 48 31 20 76 61   Create a TH1 va
2820: 72 69 61 62 6c 65 20 63 6f 6e 74 61 69 6e 69 6e  riable containin
2830: 67 20 74 68 65 20 55 52 4c 20 66 6f 72 20 74 68  g the URL for th
2840: 65 20 73 70 65 63 69 66 69 65 64 20 63 6f 6e 66  e specified conf
2850: 69 67 20 72 65 73 6f 75 72 63 65 2e 0a 2a 2a 20  ig resource..** 
2860: 54 68 65 20 72 65 73 75 6c 74 69 6e 67 20 76 61  The resulting va
2870: 72 69 61 62 6c 65 20 6e 61 6d 65 20 77 69 6c 6c  riable name will
2880: 20 62 65 20 6f 66 20 74 68 65 20 66 6f 72 6d 20   be of the form 
2890: 24 5b 7a 56 61 72 50 72 65 66 69 78 5d 5f 75 72  $[zVarPrefix]_ur
28a0: 6c 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69  l..*/.static voi
28b0: 64 20 75 72 6c 5f 76 61 72 28 0a 20 20 63 6f 6e  d url_var(.  con
28c0: 73 74 20 63 68 61 72 20 2a 7a 56 61 72 50 72 65  st char *zVarPre
28d0: 66 69 78 2c 0a 20 20 63 6f 6e 73 74 20 63 68 61  fix,.  const cha
28e0: 72 20 2a 7a 43 6f 6e 66 69 67 4e 61 6d 65 2c 0a  r *zConfigName,.
28f0: 20 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 50    const char *zP
2900: 61 67 65 4e 61 6d 65 0a 29 7b 0a 20 20 63 68 61  ageName.){.  cha
2910: 72 20 2a 7a 4d 74 69 6d 65 20 3d 20 64 62 5f 67  r *zMtime = db_g
2920: 65 74 5f 6d 74 69 6d 65 28 7a 43 6f 6e 66 69 67  et_mtime(zConfig
2930: 4e 61 6d 65 2c 20 30 2c 20 30 29 3b 0a 20 20 63  Name, 0, 0);.  c
2940: 68 61 72 20 2a 7a 55 72 6c 20 3d 20 6d 70 72 69  har *zUrl = mpri
2950: 6e 74 66 28 22 25 73 2f 25 73 2f 25 73 25 2e 35  ntf("%s/%s/%s%.5
2960: 73 22 2c 20 67 2e 7a 54 6f 70 2c 20 7a 50 61 67  s", g.zTop, zPag
2970: 65 4e 61 6d 65 2c 20 7a 4d 74 69 6d 65 2c 0a 20  eName, zMtime,. 
2980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2990: 20 20 20 20 20 20 4d 41 4e 49 46 45 53 54 5f 55        MANIFEST_U
29a0: 55 49 44 29 3b 0a 20 20 63 68 61 72 20 2a 7a 56  UID);.  char *zV
29b0: 61 72 4e 61 6d 65 20 3d 20 6d 70 72 69 6e 74 66  arName = mprintf
29c0: 28 22 25 73 5f 75 72 6c 22 2c 20 7a 56 61 72 50  ("%s_url", zVarP
29d0: 72 65 66 69 78 29 3b 0a 20 20 54 68 5f 53 74 6f  refix);.  Th_Sto
29e0: 72 65 28 7a 56 61 72 4e 61 6d 65 2c 20 7a 55 72  re(zVarName, zUr
29f0: 6c 29 3b 0a 20 20 66 72 65 65 28 7a 4d 74 69 6d  l);.  free(zMtim
2a00: 65 29 3b 0a 20 20 66 72 65 65 28 7a 55 72 6c 29  e);.  free(zUrl)
2a10: 3b 0a 20 20 66 72 65 65 28 7a 56 61 72 4e 61 6d  ;.  free(zVarNam
2a20: 65 29 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 43 72 65  e);.}../*.** Cre
2a30: 61 74 65 20 61 20 54 48 31 20 76 61 72 69 61 62  ate a TH1 variab
2a40: 6c 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 74 68  le containing th
2a50: 65 20 55 52 4c 20 66 6f 72 20 74 68 65 20 73 70  e URL for the sp
2a60: 65 63 69 66 69 65 64 20 63 6f 6e 66 69 67 20 69  ecified config i
2a70: 6d 61 67 65 2e 0a 2a 2a 20 54 68 65 20 72 65 73  mage..** The res
2a80: 75 6c 74 69 6e 67 20 76 61 72 69 61 62 6c 65 20  ulting variable 
2a90: 6e 61 6d 65 20 77 69 6c 6c 20 62 65 20 6f 66 20  name will be of 
2aa0: 74 68 65 20 66 6f 72 6d 20 24 5b 7a 49 6d 61 67  the form $[zImag
2ab0: 65 4e 61 6d 65 5d 5f 69 6d 61 67 65 5f 75 72 6c  eName]_image_url
2ac0: 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 76 6f 69 64  ..*/.static void
2ad0: 20 69 6d 61 67 65 5f 75 72 6c 5f 76 61 72 28 63   image_url_var(c
2ae0: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 49 6d 61 67  onst char *zImag
2af0: 65 4e 61 6d 65 29 7b 0a 20 20 63 68 61 72 20 2a  eName){.  char *
2b00: 7a 56 61 72 50 72 65 66 69 78 20 3d 20 6d 70 72  zVarPrefix = mpr
2b10: 69 6e 74 66 28 22 25 73 5f 69 6d 61 67 65 22 2c  intf("%s_image",
2b20: 20 7a 49 6d 61 67 65 4e 61 6d 65 29 3b 0a 20 20   zImageName);.  
2b30: 63 68 61 72 20 2a 7a 43 6f 6e 66 69 67 4e 61 6d  char *zConfigNam
2b40: 65 20 3d 20 6d 70 72 69 6e 74 66 28 22 25 73 2d  e = mprintf("%s-
2b50: 69 6d 61 67 65 22 2c 20 7a 49 6d 61 67 65 4e 61  image", zImageNa
2b60: 6d 65 29 3b 0a 20 20 75 72 6c 5f 76 61 72 28 7a  me);.  url_var(z
2b70: 56 61 72 50 72 65 66 69 78 2c 20 7a 43 6f 6e 66  VarPrefix, zConf
2b80: 69 67 4e 61 6d 65 2c 20 7a 49 6d 61 67 65 4e 61  igName, zImageNa
2b90: 6d 65 29 3b 0a 20 20 66 72 65 65 28 7a 56 61 72  me);.  free(zVar
2ba0: 50 72 65 66 69 78 29 3b 0a 20 20 66 72 65 65 28  Prefix);.  free(
2bb0: 7a 43 6f 6e 66 69 67 4e 61 6d 65 29 3b 0a 7d 0a  zConfigName);.}.
2bc0: 0a 2f 2a 0a 2a 2a 20 44 72 61 77 20 74 68 65 20  ./*.** Draw the 
2bd0: 68 65 61 64 65 72 2e 0a 2a 2f 0a 76 6f 69 64 20  header..*/.void 
2be0: 73 74 79 6c 65 5f 68 65 61 64 65 72 28 63 6f 6e  style_header(con
2bf0: 73 74 20 63 68 61 72 20 2a 7a 54 69 74 6c 65 46  st char *zTitleF
2c00: 6f 72 6d 61 74 2c 20 2e 2e 2e 29 7b 0a 20 20 76  ormat, ...){.  v
2c10: 61 5f 6c 69 73 74 20 61 70 3b 0a 20 20 63 68 61  a_list ap;.  cha
2c20: 72 20 2a 7a 54 69 74 6c 65 3b 0a 20 20 63 6f 6e  r *zTitle;.  con
2c30: 73 74 20 63 68 61 72 20 2a 7a 48 65 61 64 65 72  st char *zHeader
2c40: 20 3d 20 73 6b 69 6e 5f 67 65 74 28 22 68 65 61   = skin_get("hea
2c50: 64 65 72 22 29 3b 0a 20 20 6c 6f 67 69 6e 5f 63  der");.  login_c
2c60: 68 65 63 6b 5f 63 72 65 64 65 6e 74 69 61 6c 73  heck_credentials
2c70: 28 29 3b 0a 0a 20 20 76 61 5f 73 74 61 72 74 28  ();..  va_start(
2c80: 61 70 2c 20 7a 54 69 74 6c 65 46 6f 72 6d 61 74  ap, zTitleFormat
2c90: 29 3b 0a 20 20 7a 54 69 74 6c 65 20 3d 20 76 6d  );.  zTitle = vm
2ca0: 70 72 69 6e 74 66 28 7a 54 69 74 6c 65 46 6f 72  printf(zTitleFor
2cb0: 6d 61 74 2c 20 61 70 29 3b 0a 20 20 76 61 5f 65  mat, ap);.  va_e
2cc0: 6e 64 28 61 70 29 3b 0a 0a 20 20 63 67 69 5f 64  nd(ap);..  cgi_d
2cd0: 65 73 74 69 6e 61 74 69 6f 6e 28 43 47 49 5f 48  estination(CGI_H
2ce0: 45 41 44 45 52 29 3b 0a 0a 20 20 40 20 3c 21 44  EADER);..  @ <!D
2cf0: 4f 43 54 59 50 45 20 68 74 6d 6c 3e 0a 0a 20 20  OCTYPE html>..  
2d00: 69 66 28 20 67 2e 74 68 54 72 61 63 65 20 29 20  if( g.thTrace ) 
2d10: 54 68 5f 54 72 61 63 65 28 22 42 45 47 49 4e 5f  Th_Trace("BEGIN_
2d20: 48 45 41 44 45 52 3c 62 72 20 2f 3e 5c 6e 22 2c  HEADER<br />\n",
2d30: 20 2d 31 29 3b 0a 0a 20 20 2f 2a 20 47 65 6e 65   -1);..  /* Gene
2d40: 72 61 74 65 20 74 68 65 20 68 65 61 64 65 72 20  rate the header 
2d50: 75 70 20 74 68 72 6f 75 67 68 20 74 68 65 20 6d  up through the m
2d60: 61 69 6e 20 6d 65 6e 75 20 2a 2f 0a 20 20 54 68  ain menu */.  Th
2d70: 5f 53 74 6f 72 65 28 22 70 72 6f 6a 65 63 74 5f  _Store("project_
2d80: 6e 61 6d 65 22 2c 20 64 62 5f 67 65 74 28 22 70  name", db_get("p
2d90: 72 6f 6a 65 63 74 2d 6e 61 6d 65 22 2c 22 55 6e  roject-name","Un
2da0: 6e 61 6d 65 64 20 46 6f 73 73 69 6c 20 50 72 6f  named Fossil Pro
2db0: 6a 65 63 74 22 29 29 3b 0a 20 20 54 68 5f 53 74  ject"));.  Th_St
2dc0: 6f 72 65 28 22 74 69 74 6c 65 22 2c 20 7a 54 69  ore("title", zTi
2dd0: 74 6c 65 29 3b 0a 20 20 54 68 5f 53 74 6f 72 65  tle);.  Th_Store
2de0: 28 22 62 61 73 65 75 72 6c 22 2c 20 67 2e 7a 42  ("baseurl", g.zB
2df0: 61 73 65 55 52 4c 29 3b 0a 20 20 54 68 5f 53 74  aseURL);.  Th_St
2e00: 6f 72 65 28 22 73 65 63 75 72 65 75 72 6c 22 2c  ore("secureurl",
2e10: 20 6c 6f 67 69 6e 5f 77 61 6e 74 73 5f 68 74 74   login_wants_htt
2e20: 70 73 5f 72 65 64 69 72 65 63 74 28 29 3f 20 67  ps_redirect()? g
2e30: 2e 7a 48 74 74 70 73 55 52 4c 3a 20 67 2e 7a 42  .zHttpsURL: g.zB
2e40: 61 73 65 55 52 4c 29 3b 0a 20 20 54 68 5f 53 74  aseURL);.  Th_St
2e50: 6f 72 65 28 22 68 6f 6d 65 22 2c 20 67 2e 7a 54  ore("home", g.zT
2e60: 6f 70 29 3b 0a 20 20 54 68 5f 53 74 6f 72 65 28  op);.  Th_Store(
2e70: 22 69 6e 64 65 78 5f 70 61 67 65 22 2c 20 64 62  "index_page", db
2e80: 5f 67 65 74 28 22 69 6e 64 65 78 2d 70 61 67 65  _get("index-page
2e90: 22 2c 22 2f 68 6f 6d 65 22 29 29 3b 0a 20 20 69  ","/home"));.  i
2ea0: 66 28 20 6c 6f 63 61 6c 5f 7a 43 75 72 72 65 6e  f( local_zCurren
2eb0: 74 50 61 67 65 3d 3d 30 20 29 20 73 74 79 6c 65  tPage==0 ) style
2ec0: 5f 73 65 74 5f 63 75 72 72 65 6e 74 5f 70 61 67  _set_current_pag
2ed0: 65 28 22 25 54 22 2c 20 67 2e 7a 50 61 74 68 29  e("%T", g.zPath)
2ee0: 3b 0a 20 20 54 68 5f 53 74 6f 72 65 28 22 63 75  ;.  Th_Store("cu
2ef0: 72 72 65 6e 74 5f 70 61 67 65 22 2c 20 6c 6f 63  rrent_page", loc
2f00: 61 6c 5f 7a 43 75 72 72 65 6e 74 50 61 67 65 29  al_zCurrentPage)
2f10: 3b 0a 20 20 54 68 5f 53 74 6f 72 65 28 22 63 73  ;.  Th_Store("cs
2f20: 72 66 5f 74 6f 6b 65 6e 22 2c 20 67 2e 7a 43 73  rf_token", g.zCs
2f30: 72 66 54 6f 6b 65 6e 29 3b 0a 20 20 54 68 5f 53  rfToken);.  Th_S
2f40: 74 6f 72 65 28 22 72 65 6c 65 61 73 65 5f 76 65  tore("release_ve
2f50: 72 73 69 6f 6e 22 2c 20 52 45 4c 45 41 53 45 5f  rsion", RELEASE_
2f60: 56 45 52 53 49 4f 4e 29 3b 0a 20 20 54 68 5f 53  VERSION);.  Th_S
2f70: 74 6f 72 65 28 22 6d 61 6e 69 66 65 73 74 5f 76  tore("manifest_v
2f80: 65 72 73 69 6f 6e 22 2c 20 4d 41 4e 49 46 45 53  ersion", MANIFES
2f90: 54 5f 56 45 52 53 49 4f 4e 29 3b 0a 20 20 54 68  T_VERSION);.  Th
2fa0: 5f 53 74 6f 72 65 28 22 6d 61 6e 69 66 65 73 74  _Store("manifest
2fb0: 5f 64 61 74 65 22 2c 20 4d 41 4e 49 46 45 53 54  _date", MANIFEST
2fc0: 5f 44 41 54 45 29 3b 0a 20 20 54 68 5f 53 74 6f  _DATE);.  Th_Sto
2fd0: 72 65 28 22 63 6f 6d 70 69 6c 65 72 5f 6e 61 6d  re("compiler_nam
2fe0: 65 22 2c 20 43 4f 4d 50 49 4c 45 52 5f 4e 41 4d  e", COMPILER_NAM
2ff0: 45 29 3b 0a 20 20 75 72 6c 5f 76 61 72 28 22 73  E);.  url_var("s
3000: 74 79 6c 65 73 68 65 65 74 22 2c 20 22 63 73 73  tylesheet", "css
3010: 22 2c 20 22 73 74 79 6c 65 2e 63 73 73 22 29 3b  ", "style.css");
3020: 0a 20 20 69 6d 61 67 65 5f 75 72 6c 5f 76 61 72  .  image_url_var
3030: 28 22 6c 6f 67 6f 22 29 3b 0a 20 20 69 6d 61 67  ("logo");.  imag
3040: 65 5f 75 72 6c 5f 76 61 72 28 22 62 61 63 6b 67  e_url_var("backg
3050: 72 6f 75 6e 64 22 29 3b 0a 20 20 69 66 28 20 21  round");.  if( !
3060: 6c 6f 67 69 6e 5f 69 73 5f 6e 6f 62 6f 64 79 28  login_is_nobody(
3070: 29 20 29 7b 0a 20 20 20 20 54 68 5f 53 74 6f 72  ) ){.    Th_Stor
3080: 65 28 22 6c 6f 67 69 6e 22 2c 20 67 2e 7a 4c 6f  e("login", g.zLo
3090: 67 69 6e 29 3b 0a 20 20 7d 0a 20 20 69 66 28 20  gin);.  }.  if( 
30a0: 67 2e 74 68 54 72 61 63 65 20 29 20 54 68 5f 54  g.thTrace ) Th_T
30b0: 72 61 63 65 28 22 42 45 47 49 4e 5f 48 45 41 44  race("BEGIN_HEAD
30c0: 45 52 5f 53 43 52 49 50 54 3c 62 72 20 2f 3e 5c  ER_SCRIPT<br />\
30d0: 6e 22 2c 20 2d 31 29 3b 0a 20 20 54 68 5f 52 65  n", -1);.  Th_Re
30e0: 6e 64 65 72 28 7a 48 65 61 64 65 72 29 3b 0a 20  nder(zHeader);. 
30f0: 20 69 66 28 20 67 2e 74 68 54 72 61 63 65 20 29   if( g.thTrace )
3100: 20 54 68 5f 54 72 61 63 65 28 22 45 4e 44 5f 48   Th_Trace("END_H
3110: 45 41 44 45 52 3c 62 72 20 2f 3e 5c 6e 22 2c 20  EADER<br />\n", 
3120: 2d 31 29 3b 0a 20 20 54 68 5f 55 6e 73 74 6f 72  -1);.  Th_Unstor
3130: 65 28 22 74 69 74 6c 65 22 29 3b 20 20 20 2f 2a  e("title");   /*
3140: 20 41 76 6f 69 64 20 63 6f 6c 6c 69 73 69 6f 6e   Avoid collision
3150: 73 20 77 69 74 68 20 74 69 63 6b 65 74 20 66 69  s with ticket fi
3160: 65 6c 64 20 6e 61 6d 65 73 20 2a 2f 0a 20 20 63  eld names */.  c
3170: 67 69 5f 64 65 73 74 69 6e 61 74 69 6f 6e 28 43  gi_destination(C
3180: 47 49 5f 42 4f 44 59 29 3b 0a 20 20 67 2e 63 67  GI_BODY);.  g.cg
3190: 69 4f 75 74 70 75 74 20 3d 20 31 3b 0a 20 20 68  iOutput = 1;.  h
31a0: 65 61 64 65 72 48 61 73 42 65 65 6e 47 65 6e 65  eaderHasBeenGene
31b0: 72 61 74 65 64 20 3d 20 31 3b 0a 20 20 73 69 64  rated = 1;.  sid
31c0: 65 62 6f 78 55 73 65 64 20 3d 20 30 3b 0a 0a 20  eboxUsed = 0;.. 
31d0: 20 2f 2a 20 4d 61 6b 65 20 74 68 65 20 67 65 62   /* Make the geb
31e0: 69 28 78 29 20 66 75 6e 63 74 69 6f 6e 20 61 76  i(x) function av
31f0: 61 69 6c 61 62 6c 65 20 61 73 20 61 6e 20 61 6c  ailable as an al
3200: 6d 6f 73 74 2d 61 6c 69 61 73 20 66 6f 72 0a 20  most-alias for. 
3210: 20 2a 2a 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74   ** document.get
3220: 45 6c 65 6d 65 6e 74 42 79 49 64 28 78 29 20 28  ElementById(x) (
3230: 65 78 63 65 70 74 20 74 68 61 74 20 69 74 20 74  except that it t
3240: 68 72 6f 77 73 20 61 6e 20 65 72 72 6f 72 0a 20  hrows an error. 
3250: 20 2a 2a 20 69 66 20 74 68 65 20 65 6c 65 6d 65   ** if the eleme
3260: 6e 74 20 69 73 20 6e 6f 74 20 66 6f 75 6e 64 29  nt is not found)
3270: 2e 0a 20 20 2a 2a 0a 20 20 2a 2a 20 4d 61 69 6e  ..  **.  ** Main
3280: 74 65 6e 61 6e 63 65 20 6e 6f 74 65 3a 20 74 68  tenance note: th
3290: 69 73 20 66 75 6e 63 74 69 6f 6e 20 6d 75 73 74  is function must
32a0: 20 6f 66 20 63 6f 75 72 73 65 20 62 65 20 61 76   of course be av
32b0: 61 69 6c 61 62 6c 65 0a 20 20 2a 2a 20 62 65 66  ailable.  ** bef
32c0: 6f 72 65 20 69 74 20 69 73 20 63 61 6c 6c 65 64  ore it is called
32d0: 2e 20 49 74 20 22 73 68 6f 75 6c 64 22 20 67 6f  . It "should" go
32e0: 20 69 6e 20 74 68 65 20 48 45 41 44 20 73 6f 20   in the HEAD so 
32f0: 74 68 61 74 20 63 6c 69 65 6e 74 0a 20 20 2a 2a  that client.  **
3300: 20 48 45 41 44 20 63 6f 64 65 20 63 61 6e 20 6d   HEAD code can m
3310: 61 6b 65 20 75 73 65 20 6f 66 20 69 74 2c 20 62  ake use of it, b
3320: 75 74 20 62 65 63 61 75 73 65 20 74 68 65 20 63  ut because the c
3330: 6c 69 65 6e 74 20 63 61 6e 20 72 65 70 6c 61 63  lient can replac
3340: 65 0a 20 20 2a 2a 20 74 68 65 20 48 45 41 44 2c  e.  ** the HEAD,
3350: 20 61 6e 64 20 73 6f 6d 65 20 66 6f 73 73 69 6c   and some fossil
3360: 20 70 61 67 65 73 20 72 65 6c 79 20 6f 6e 20 67   pages rely on g
3370: 65 62 69 28 29 2c 20 77 65 20 70 75 74 20 69 74  ebi(), we put it
3380: 20 68 65 72 65 2e 0a 20 20 2a 2f 0a 20 20 40 20   here..  */.  @ 
3390: 3c 73 63 72 69 70 74 3e 0a 20 20 40 20 66 75 6e  <script>.  @ fun
33a0: 63 74 69 6f 6e 20 67 65 62 69 28 78 29 7b 0a 20  ction gebi(x){. 
33b0: 20 40 20 69 66 28 78 2e 73 75 62 73 74 72 28 30   @ if(x.substr(0
33c0: 2c 31 29 3d 3d 27 23 27 29 20 78 20 3d 20 78 2e  ,1)=='#') x = x.
33d0: 73 75 62 73 74 72 28 31 29 3b 0a 20 20 40 20 76  substr(1);.  @ v
33e0: 61 72 20 65 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  ar e = document.
33f0: 67 65 74 45 6c 65 6d 65 6e 74 42 79 49 64 28 78  getElementById(x
3400: 29 3b 0a 20 20 40 20 69 66 28 21 65 29 20 74 68  );.  @ if(!e) th
3410: 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 28 27 45  row new Error('E
3420: 78 70 65 63 74 69 6e 67 20 65 6c 65 6d 65 6e 74  xpecting element
3430: 20 77 69 74 68 20 49 44 20 27 2b 78 29 3b 0a 20   with ID '+x);. 
3440: 20 40 20 65 6c 73 65 20 72 65 74 75 72 6e 20 65   @ else return e
3450: 3b 7d 0a 20 20 40 20 3c 2f 73 63 72 69 70 74 3e  ;}.  @ </script>
3460: 0a 7d 0a 0a 23 69 66 20 49 4e 54 45 52 46 41 43  .}..#if INTERFAC
3470: 45 0a 2f 2a 20 41 6c 6c 6f 77 65 64 20 70 61 72  E./* Allowed par
3480: 61 6d 65 74 65 72 73 20 66 6f 72 20 73 74 79 6c  ameters for styl
3490: 65 5f 61 64 75 6e 69 74 28 29 20 2a 2f 0a 23 64  e_adunit() */.#d
34a0: 65 66 69 6e 65 20 41 44 55 4e 49 54 5f 4f 46 46  efine ADUNIT_OFF
34b0: 20 20 20 20 20 20 20 20 30 78 30 30 30 31 20 20          0x0001  
34c0: 20 20 20 20 20 2f 2a 20 44 6f 20 6e 6f 74 20 61       /* Do not a
34d0: 6c 6c 6f 77 20 61 64 73 20 6f 6e 20 74 68 69 73  llow ads on this
34e0: 20 70 61 67 65 20 2a 2f 0a 23 64 65 66 69 6e 65   page */.#define
34f0: 20 41 44 55 4e 49 54 5f 52 49 47 48 54 5f 4f 4b   ADUNIT_RIGHT_OK
3500: 20 20 20 30 78 30 30 30 32 20 20 20 20 20 20 20     0x0002       
3510: 2f 2a 20 52 69 67 68 74 2d 73 69 64 65 20 76 65  /* Right-side ve
3520: 72 74 69 63 61 6c 20 61 64 73 20 6f 6b 20 68 65  rtical ads ok he
3530: 72 65 20 2a 2f 0a 23 65 6e 64 69 66 0a 0a 2f 2a  re */.#endif../*
3540: 0a 2a 2a 20 56 61 72 69 6f 75 73 20 70 61 67 65  .** Various page
3550: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 73   implementations
3560: 20 63 61 6e 20 69 6e 76 6f 6b 65 20 74 68 69 73   can invoke this
3570: 20 69 6e 74 65 72 66 61 63 65 20 74 6f 20 6c 65   interface to le
3580: 74 20 74 68 65 0a 2a 2a 20 73 74 79 6c 65 20 6d  t the.** style m
3590: 61 6e 61 67 65 72 20 6b 6e 6f 77 20 77 68 61 74  anager know what
35a0: 20 6b 69 6e 64 73 20 6f 66 20 61 64 73 20 61 72   kinds of ads ar
35b0: 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 66 6f  e appropriate fo
35c0: 72 20 74 68 69 73 20 70 61 67 65 2e 0a 2a 2f 0a  r this page..*/.
35d0: 76 6f 69 64 20 73 74 79 6c 65 5f 61 64 75 6e 69  void style_aduni
35e0: 74 5f 63 6f 6e 66 69 67 28 75 6e 73 69 67 6e 65  t_config(unsigne
35f0: 64 20 69 6e 74 20 6d 46 6c 61 67 73 29 7b 0a 20  d int mFlags){. 
3600: 20 61 64 55 6e 69 74 46 6c 61 67 73 20 3d 20 6d   adUnitFlags = m
3610: 46 6c 61 67 73 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20  Flags;.}../*.** 
3620: 52 65 74 75 72 6e 20 74 68 65 20 74 65 78 74 20  Return the text 
3630: 6f 66 20 61 6e 20 61 64 2d 75 6e 69 74 2c 20 69  of an ad-unit, i
3640: 66 20 6f 6e 65 20 73 68 6f 75 6c 64 20 62 65 20  f one should be 
3650: 72 65 6e 64 65 72 65 64 2e 20 20 52 65 74 75 72  rendered.  Retur
3660: 6e 0a 2a 2a 20 4e 55 4c 4c 20 69 66 20 6e 6f 20  n.** NULL if no 
3670: 61 64 2d 75 6e 69 74 20 69 73 20 64 65 73 69 72  ad-unit is desir
3680: 65 64 2e 0a 2a 2a 0a 2a 2a 20 54 68 65 20 2a 70  ed..**.** The *p
3690: 41 64 46 6c 61 67 20 76 61 6c 75 65 20 6d 69 67  AdFlag value mig
36a0: 68 74 20 62 65 20 73 65 74 20 74 6f 20 41 44 55  ht be set to ADU
36b0: 4e 49 54 5f 52 49 47 48 54 5f 4f 4b 20 69 66 20  NIT_RIGHT_OK if 
36c0: 74 68 69 73 20 69 73 0a 2a 2a 20 61 20 72 69 67  this is.** a rig
36d0: 68 74 2d 68 61 6e 64 20 76 65 72 74 69 63 61 6c  ht-hand vertical
36e0: 20 61 64 2e 0a 2a 2f 0a 73 74 61 74 69 63 20 63   ad..*/.static c
36f0: 6f 6e 73 74 20 63 68 61 72 20 2a 73 74 79 6c 65  onst char *style
3700: 5f 61 64 75 6e 69 74 5f 74 65 78 74 28 75 6e 73  _adunit_text(uns
3710: 69 67 6e 65 64 20 69 6e 74 20 2a 70 41 64 46 6c  igned int *pAdFl
3720: 61 67 29 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61  ag){.  const cha
3730: 72 20 2a 7a 41 64 20 3d 20 30 3b 0a 20 20 2a 70  r *zAd = 0;.  *p
3740: 41 64 46 6c 61 67 20 3d 20 30 3b 0a 20 20 69 66  AdFlag = 0;.  if
3750: 28 20 61 64 55 6e 69 74 46 6c 61 67 73 20 26 20  ( adUnitFlags & 
3760: 41 44 55 4e 49 54 5f 4f 46 46 20 29 20 72 65 74  ADUNIT_OFF ) ret
3770: 75 72 6e 20 30 3b 20 20 2f 2a 20 44 69 73 61 6c  urn 0;  /* Disal
3780: 6c 6f 77 20 61 64 73 20 6f 6e 20 74 68 69 73 20  low ads on this 
3790: 70 61 67 65 20 2a 2f 0a 20 20 69 66 28 20 67 2e  page */.  if( g.
37a0: 70 65 72 6d 2e 41 64 6d 69 6e 20 26 26 20 64 62  perm.Admin && db
37b0: 5f 67 65 74 5f 62 6f 6f 6c 65 61 6e 28 22 61 64  _get_boolean("ad
37c0: 75 6e 69 74 2d 6f 6d 69 74 2d 69 66 2d 61 64 6d  unit-omit-if-adm
37d0: 69 6e 22 2c 30 29 20 29 7b 0a 20 20 20 20 72 65  in",0) ){.    re
37e0: 74 75 72 6e 20 30 3b 0a 20 20 7d 0a 20 20 69 66  turn 0;.  }.  if
37f0: 28 20 21 6c 6f 67 69 6e 5f 69 73 5f 6e 6f 62 6f  ( !login_is_nobo
3800: 64 79 28 29 0a 20 20 20 26 26 20 66 6f 73 73 69  dy().   && fossi
3810: 6c 5f 73 74 72 63 6d 70 28 67 2e 7a 4c 6f 67 69  l_strcmp(g.zLogi
3820: 6e 2c 22 61 6e 6f 6e 79 6d 6f 75 73 22 29 21 3d  n,"anonymous")!=
3830: 30 0a 20 20 20 26 26 20 64 62 5f 67 65 74 5f 62  0.   && db_get_b
3840: 6f 6f 6c 65 61 6e 28 22 61 64 75 6e 69 74 2d 6f  oolean("adunit-o
3850: 6d 69 74 2d 69 66 2d 75 73 65 72 22 2c 30 29 0a  mit-if-user",0).
3860: 20 20 29 7b 0a 20 20 20 20 72 65 74 75 72 6e 20    ){.    return 
3870: 30 3b 0a 20 20 7d 0a 20 20 69 66 28 20 28 61 64  0;.  }.  if( (ad
3880: 55 6e 69 74 46 6c 61 67 73 20 26 20 41 44 55 4e  UnitFlags & ADUN
3890: 49 54 5f 52 49 47 48 54 5f 4f 4b 29 21 3d 30 0a  IT_RIGHT_OK)!=0.
38a0: 20 20 20 26 26 20 21 66 6f 73 73 69 6c 5f 61 6c     && !fossil_al
38b0: 6c 5f 77 68 69 74 65 73 70 61 63 65 28 7a 41 64  l_whitespace(zAd
38c0: 20 3d 20 64 62 5f 67 65 74 28 22 61 64 75 6e 69   = db_get("aduni
38d0: 74 2d 72 69 67 68 74 22 2c 20 30 29 29 0a 20 20  t-right", 0)).  
38e0: 20 26 26 20 21 63 67 69 5f 62 6f 64 79 5f 63 6f   && !cgi_body_co
38f0: 6e 74 61 69 6e 73 28 22 3c 74 61 62 6c 65 22 29  ntains("<table")
3900: 0a 20 20 29 7b 0a 20 20 20 20 2a 70 41 64 46 6c  .  ){.    *pAdFl
3910: 61 67 20 3d 20 41 44 55 4e 49 54 5f 52 49 47 48  ag = ADUNIT_RIGH
3920: 54 5f 4f 4b 3b 0a 20 20 20 20 72 65 74 75 72 6e  T_OK;.    return
3930: 20 7a 41 64 3b 0a 20 20 7d 65 6c 73 65 20 69 66   zAd;.  }else if
3940: 28 20 21 66 6f 73 73 69 6c 5f 61 6c 6c 5f 77 68  ( !fossil_all_wh
3950: 69 74 65 73 70 61 63 65 28 7a 41 64 20 3d 20 64  itespace(zAd = d
3960: 62 5f 67 65 74 28 22 61 64 75 6e 69 74 22 2c 30  b_get("adunit",0
3970: 29 29 20 29 7b 0a 20 20 20 20 72 65 74 75 72 6e  )) ){.    return
3980: 20 7a 41 64 3b 0a 20 20 7d 0a 20 20 72 65 74 75   zAd;.  }.  retu
3990: 72 6e 20 30 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 44  rn 0;.}../*.** D
39a0: 72 61 77 20 74 68 65 20 66 6f 6f 74 65 72 20 61  raw the footer a
39b0: 74 20 74 68 65 20 62 6f 74 74 6f 6d 20 6f 66 20  t the bottom of 
39c0: 74 68 65 20 70 61 67 65 2e 0a 2a 2f 0a 76 6f 69  the page..*/.voi
39d0: 64 20 73 74 79 6c 65 5f 66 6f 6f 74 65 72 28 76  d style_footer(v
39e0: 6f 69 64 29 7b 0a 20 20 63 6f 6e 73 74 20 63 68  oid){.  const ch
39f0: 61 72 20 2a 7a 46 6f 6f 74 65 72 3b 0a 20 20 63  ar *zFooter;.  c
3a00: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 41 64 20 3d  onst char *zAd =
3a10: 20 30 3b 0a 20 20 75 6e 73 69 67 6e 65 64 20 69   0;.  unsigned i
3a20: 6e 74 20 6d 41 64 46 6c 61 67 73 20 3d 20 30 3b  nt mAdFlags = 0;
3a30: 0a 0a 20 20 69 66 28 20 21 68 65 61 64 65 72 48  ..  if( !headerH
3a40: 61 73 42 65 65 6e 47 65 6e 65 72 61 74 65 64 20  asBeenGenerated 
3a50: 29 20 72 65 74 75 72 6e 3b 0a 0a 20 20 2f 2a 20  ) return;..  /* 
3a60: 47 6f 20 62 61 63 6b 20 61 6e 64 20 70 75 74 20  Go back and put 
3a70: 74 68 65 20 73 75 62 6d 65 6e 75 20 61 74 20 74  the submenu at t
3a80: 68 65 20 74 6f 70 20 6f 66 20 74 68 65 20 70 61  he top of the pa
3a90: 67 65 2e 20 20 57 65 20 64 65 6c 61 79 20 74 68  ge.  We delay th
3aa0: 65 0a 20 20 2a 2a 20 63 72 65 61 74 69 6f 6e 20  e.  ** creation 
3ab0: 6f 66 20 74 68 65 20 73 75 62 6d 65 6e 75 20 75  of the submenu u
3ac0: 6e 74 69 6c 20 74 68 65 20 65 6e 64 20 73 6f 20  ntil the end so 
3ad0: 74 68 61 74 20 77 65 20 63 61 6e 20 61 64 64 20  that we can add 
3ae0: 65 6c 65 6d 65 6e 74 73 0a 20 20 2a 2a 20 74 6f  elements.  ** to
3af0: 20 74 68 65 20 73 75 62 6d 65 6e 75 20 77 68 69   the submenu whi
3b00: 6c 65 20 67 65 6e 65 72 61 74 69 6e 67 20 70 61  le generating pa
3b10: 67 65 20 74 65 78 74 2e 0a 20 20 2a 2f 0a 20 20  ge text..  */.  
3b20: 63 67 69 5f 64 65 73 74 69 6e 61 74 69 6f 6e 28  cgi_destination(
3b30: 43 47 49 5f 48 45 41 44 45 52 29 3b 0a 20 20 69  CGI_HEADER);.  i
3b40: 66 28 20 6e 53 75 62 6d 65 6e 75 2b 6e 53 75 62  f( nSubmenu+nSub
3b50: 6d 65 6e 75 43 74 72 6c 3e 30 20 29 7b 0a 20 20  menuCtrl>0 ){.  
3b60: 20 20 69 6e 74 20 69 3b 0a 20 20 20 20 69 66 28    int i;.    if(
3b70: 20 6e 53 75 62 6d 65 6e 75 43 74 72 6c 20 29 7b   nSubmenuCtrl ){
3b80: 0a 20 20 20 20 20 20 63 67 69 5f 70 72 69 6e 74  .      cgi_print
3b90: 66 28 22 3c 66 6f 72 6d 20 69 64 3d 27 66 30 31  f("<form id='f01
3ba0: 27 20 6d 65 74 68 6f 64 3d 27 47 45 54 27 20 61  ' method='GET' a
3bb0: 63 74 69 6f 6e 3d 27 25 52 2f 25 73 27 3e 22 2c  ction='%R/%s'>",
3bc0: 20 67 2e 7a 50 61 74 68 29 3b 0a 20 20 20 20 7d   g.zPath);.    }
3bd0: 0a 20 20 20 20 40 20 3c 64 69 76 20 63 6c 61 73  .    @ <div clas
3be0: 73 3d 22 73 75 62 6d 65 6e 75 22 3e 0a 20 20 20  s="submenu">.   
3bf0: 20 69 66 28 20 6e 53 75 62 6d 65 6e 75 3e 30 20   if( nSubmenu>0 
3c00: 29 7b 0a 20 20 20 20 20 20 71 73 6f 72 74 28 61  ){.      qsort(a
3c10: 53 75 62 6d 65 6e 75 2c 20 6e 53 75 62 6d 65 6e  Submenu, nSubmen
3c20: 75 2c 20 73 69 7a 65 6f 66 28 61 53 75 62 6d 65  u, sizeof(aSubme
3c30: 6e 75 5b 30 5d 29 2c 20 73 75 62 6d 65 6e 75 43  nu[0]), submenuC
3c40: 6f 6d 70 61 72 65 29 3b 0a 20 20 20 20 20 20 66  ompare);.      f
3c50: 6f 72 28 69 3d 30 3b 20 69 3c 6e 53 75 62 6d 65  or(i=0; i<nSubme
3c60: 6e 75 3b 20 69 2b 2b 29 7b 0a 20 20 20 20 20 20  nu; i++){.      
3c70: 20 20 73 74 72 75 63 74 20 53 75 62 6d 65 6e 75    struct Submenu
3c80: 20 2a 70 20 3d 20 26 61 53 75 62 6d 65 6e 75 5b   *p = &aSubmenu[
3c90: 69 5d 3b 0a 20 20 20 20 20 20 20 20 69 66 28 20  i];.        if( 
3ca0: 70 2d 3e 7a 4c 69 6e 6b 3d 3d 30 20 29 7b 0a 20  p->zLink==0 ){. 
3cb0: 20 20 20 20 20 20 20 20 20 40 20 3c 73 70 61 6e           @ <span
3cc0: 20 63 6c 61 73 73 3d 22 6c 61 62 65 6c 22 3e 25   class="label">%
3cd0: 68 28 70 2d 3e 7a 4c 61 62 65 6c 29 3c 2f 73 70  h(p->zLabel)</sp
3ce0: 61 6e 3e 0a 20 20 20 20 20 20 20 20 7d 65 6c 73  an>.        }els
3cf0: 65 7b 0a 20 20 20 20 20 20 20 20 20 20 40 20 3c  e{.          @ <
3d00: 61 20 63 6c 61 73 73 3d 22 6c 61 62 65 6c 22 20  a class="label" 
3d10: 68 72 65 66 3d 22 25 68 28 70 2d 3e 7a 4c 69 6e  href="%h(p->zLin
3d20: 6b 29 22 3e 25 68 28 70 2d 3e 7a 4c 61 62 65 6c  k)">%h(p->zLabel
3d30: 29 3c 2f 61 3e 0a 20 20 20 20 20 20 20 20 7d 0a  )</a>.        }.
3d40: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20        }.    }.  
3d50: 20 20 69 66 28 20 6e 53 75 62 6d 65 6e 75 43 74    if( nSubmenuCt
3d60: 72 6c 3e 30 20 29 7b 0a 20 20 20 20 20 20 66 6f  rl>0 ){.      fo
3d70: 72 28 69 3d 30 3b 20 69 3c 6e 53 75 62 6d 65 6e  r(i=0; i<nSubmen
3d80: 75 43 74 72 6c 3b 20 69 2b 2b 29 7b 0a 20 20 20  uCtrl; i++){.   
3d90: 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61 72 20       const char 
3da0: 2a 7a 51 50 4e 20 3d 20 61 53 75 62 6d 65 6e 75  *zQPN = aSubmenu
3db0: 43 74 72 6c 5b 69 5d 2e 7a 4e 61 6d 65 3b 0a 20  Ctrl[i].zName;. 
3dc0: 20 20 20 20 20 20 20 63 6f 6e 73 74 20 63 68 61         const cha
3dd0: 72 20 2a 7a 44 69 73 61 62 6c 65 64 20 3d 20 22  r *zDisabled = "
3de0: 20 64 69 73 61 62 6c 65 64 22 3b 0a 20 20 20 20   disabled";.    
3df0: 20 20 20 20 69 66 28 20 21 61 53 75 62 6d 65 6e      if( !aSubmen
3e00: 75 43 74 72 6c 5b 69 5d 2e 69 73 44 69 73 61 62  uCtrl[i].isDisab
3e10: 6c 65 64 20 29 7b 0a 20 20 20 20 20 20 20 20 20  led ){.         
3e20: 20 7a 44 69 73 61 62 6c 65 64 20 3d 20 22 22 3b   zDisabled = "";
3e30: 0a 20 20 20 20 20 20 20 20 20 20 63 67 69 5f 74  .          cgi_t
3e40: 61 67 5f 71 75 65 72 79 5f 70 61 72 61 6d 65 74  ag_query_paramet
3e50: 65 72 28 7a 51 50 4e 29 3b 0a 20 20 20 20 20 20  er(zQPN);.      
3e60: 20 20 7d 0a 20 20 20 20 20 20 20 20 73 77 69 74    }.        swit
3e70: 63 68 28 20 61 53 75 62 6d 65 6e 75 43 74 72 6c  ch( aSubmenuCtrl
3e80: 5b 69 5d 2e 65 54 79 70 65 20 29 7b 0a 20 20 20  [i].eType ){.   
3e90: 20 20 20 20 20 20 20 63 61 73 65 20 46 46 5f 45         case FF_E
3ea0: 4e 54 52 59 3a 20 7b 0a 20 20 20 20 20 20 20 20  NTRY: {.        
3eb0: 20 20 20 20 63 67 69 5f 70 72 69 6e 74 66 28 0a      cgi_printf(.
3ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
3ed0: 3c 73 70 61 6e 20 63 6c 61 73 73 3d 27 73 75 62  <span class='sub
3ee0: 6d 65 6e 75 63 74 72 6c 27 3e 22 0a 20 20 20 20  menuctrl'>".    
3ef0: 20 20 20 20 20 20 20 20 20 20 20 22 26 6e 62 73             "&nbs
3f00: 70 3b 25 68 3c 69 6e 70 75 74 20 74 79 70 65 3d  p;%h<input type=
3f10: 27 74 65 78 74 27 20 6e 61 6d 65 3d 27 25 73 27  'text' name='%s'
3f20: 20 73 69 7a 65 3d 27 25 64 27 20 6d 61 78 6c 65   size='%d' maxle
3f30: 6e 67 74 68 3d 27 25 64 27 22 0a 20 20 20 20 20  ngth='%d'".     
3f40: 20 20 20 20 20 20 20 20 20 20 22 20 76 61 6c 75            " valu
3f50: 65 3d 27 25 68 27 25 73 3e 3c 2f 73 70 61 6e 3e  e='%h'%s></span>
3f60: 5c 6e 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20  \n",.           
3f70: 20 20 20 20 61 53 75 62 6d 65 6e 75 43 74 72 6c      aSubmenuCtrl
3f80: 5b 69 5d 2e 7a 4c 61 62 65 6c 2c 0a 20 20 20 20  [i].zLabel,.    
3f90: 20 20 20 20 20 20 20 20 20 20 20 7a 51 50 4e 2c             zQPN,
3fa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3fb0: 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 69 5d 2e  aSubmenuCtrl[i].
3fc0: 69 53 69 7a 65 2c 20 61 53 75 62 6d 65 6e 75 43  iSize, aSubmenuC
3fd0: 74 72 6c 5b 69 5d 2e 69 53 69 7a 65 2c 0a 20 20  trl[i].iSize,.  
3fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 50 44 28               PD(
3ff0: 7a 51 50 4e 2c 22 22 29 2c 0a 20 20 20 20 20 20  zQPN,""),.      
4000: 20 20 20 20 20 20 20 20 20 7a 44 69 73 61 62 6c           zDisabl
4010: 65 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  ed.            )
4020: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  ;.            br
4030: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  eak;.          }
4040: 0a 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20  .          case 
4050: 46 46 5f 4d 55 4c 54 49 3a 20 7b 0a 20 20 20 20  FF_MULTI: {.    
4060: 20 20 20 20 20 20 20 20 69 6e 74 20 6a 3b 0a 20          int j;. 
4070: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 73 74             const
4080: 20 63 68 61 72 20 2a 7a 56 61 6c 20 3d 20 50 28   char *zVal = P(
4090: 7a 51 50 4e 29 3b 0a 20 20 20 20 20 20 20 20 20  zQPN);.         
40a0: 20 20 20 63 67 69 5f 70 72 69 6e 74 66 28 0a 20     cgi_printf(. 
40b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3c                "<
40c0: 73 65 6c 65 63 74 20 63 6c 61 73 73 3d 27 73 75  select class='su
40d0: 62 6d 65 6e 75 63 74 72 6c 27 20 73 69 7a 65 3d  bmenuctrl' size=
40e0: 27 31 27 20 6e 61 6d 65 3d 27 25 73 27 25 73 20  '1' name='%s'%s 
40f0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
4100: 20 22 6f 6e 63 68 61 6e 67 65 3d 27 67 65 62 69   "onchange='gebi
4110: 28 5c 22 66 30 31 5c 22 29 2e 73 75 62 6d 69 74  (\"f01\").submit
4120: 28 29 3b 27 3e 5c 6e 22 2c 0a 20 20 20 20 20 20  ();'>\n",.      
4130: 20 20 20 20 20 20 20 20 20 7a 51 50 4e 2c 20 7a           zQPN, z
4140: 44 69 73 61 62 6c 65 64 0a 20 20 20 20 20 20 20  Disabled.       
4150: 20 20 20 20 20 29 3b 0a 20 20 20 20 20 20 20 20       );.        
4160: 20 20 20 20 66 6f 72 28 6a 3d 30 3b 20 6a 3c 61      for(j=0; j<a
4170: 53 75 62 6d 65 6e 75 43 74 72 6c 5b 69 5d 2e 69  SubmenuCtrl[i].i
4180: 53 69 7a 65 2a 32 3b 20 6a 2b 3d 32 29 7b 0a 20  Size*2; j+=2){. 
4190: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
41a0: 73 74 20 63 68 61 72 20 2a 7a 51 50 56 20 3d 20  st char *zQPV = 
41b0: 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b 69 5d 2e  aSubmenuCtrl[i].
41c0: 61 7a 43 68 6f 69 63 65 5b 6a 5d 3b 0a 20 20 20  azChoice[j];.   
41d0: 20 20 20 20 20 20 20 20 20 20 20 63 67 69 5f 70             cgi_p
41e0: 72 69 6e 74 66 28 0a 20 20 20 20 20 20 20 20 20  rintf(.         
41f0: 20 20 20 20 20 20 20 22 3c 6f 70 74 69 6f 6e 20         "<option 
4200: 76 61 6c 75 65 3d 27 25 68 27 25 73 3e 25 68 3c  value='%h'%s>%h<
4210: 2f 6f 70 74 69 6f 6e 3e 5c 6e 22 2c 0a 20 20 20  /option>\n",.   
4220: 20 20 20 20 20 20 20 20 20 20 20 20 20 7a 51 50               zQP
4230: 56 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  V,.             
4240: 20 20 20 66 6f 73 73 69 6c 5f 73 74 72 63 6d 70     fossil_strcmp
4250: 28 7a 56 61 6c 2c 7a 51 50 56 29 3d 3d 30 20 3f  (zVal,zQPV)==0 ?
4260: 20 22 20 73 65 6c 65 63 74 65 64 22 20 3a 20 22   " selected" : "
4270: 22 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ",.             
4280: 20 20 20 61 53 75 62 6d 65 6e 75 43 74 72 6c 5b     aSubmenuCtrl[
4290: 69 5d 2e 61 7a 43 68 6f 69 63 65 5b 6a 2b 31 5d  i].azChoice[j+1]
42a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29  .              )
42b0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a  ;.            }.
42c0: 20 20 20 20 20 20 20 20 20 20 20 20 40 20 3c 2f              @ </
42d0: 73 65 6c 65 63 74 3e 0a 20 20 20 20 20 20 20 20  select>.        
42e0: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20      break;.     
42f0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20       }.         
4300: 20 63 61 73 65 20 46 46 5f 42 49 4e 41 52 59 3a   case FF_BINARY:
4310: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69   {.            i
4320: 6e 74 20 69 73 54 72 75 65 20 3d 20 50 42 28 7a  nt isTrue = PB(z
4330: 51 50 4e 29 3b 0a 20 20 20 20 20 20 20 20 20 20  QPN);.          
4340: 20 20 63 67 69 5f 70 72 69 6e 74 66 28 0a 20 20    cgi_printf(.  
4350: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 73               "<s
4360: 65 6c 65 63 74 20 63 6c 61 73 73 3d 27 73 75 62  elect class='sub
4370: 6d 65 6e 75 63 74 72 6c 27 20 73 69 7a 65 3d 27  menuctrl' size='
4380: 31 27 20 6e 61 6d 65 3d 27 25 73 27 25 73 20 22  1' name='%s'%s "
4390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
43a0: 22 6f 6e 63 68 61 6e 67 65 3d 27 67 65 62 69 28  "onchange='gebi(
43b0: 5c 22 66 30 31 5c 22 29 2e 73 75 62 6d 69 74 28  \"f01\").submit(
43c0: 29 3b 27 3e 5c 6e 22 2c 0a 20 20 20 20 20 20 20  );'>\n",.       
43d0: 20 20 20 20 20 20 20 20 7a 51 50 4e 2c 20 7a 44          zQPN, zD
43e0: 69 73 61 62 6c 65 64 0a 20 20 20 20 20 20 20 20  isabled.        
43f0: 20 20 20 20 29 3b 0a 20 20 20 20 20 20 20 20 20      );.         
4400: 20 20 20 63 67 69 5f 70 72 69 6e 74 66 28 0a 20     cgi_printf(. 
4410: 20 20 20 20 20 20 20 20 20 20 20 20 20 22 3c 6f               "<o
4420: 70 74 69 6f 6e 20 76 61 6c 75 65 3d 27 31 27 25  ption value='1'%
4430: 73 3e 25 68 3c 2f 6f 70 74 69 6f 6e 3e 5c 6e 22  s>%h</option>\n"
4440: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ,.              
4450: 69 73 54 72 75 65 20 3f 20 22 20 73 65 6c 65 63  isTrue ? " selec
4460: 74 65 64 22 3a 22 22 2c 20 61 53 75 62 6d 65 6e  ted":"", aSubmen
4470: 75 43 74 72 6c 5b 69 5d 2e 7a 4c 61 62 65 6c 0a  uCtrl[i].zLabel.
4480: 20 20 20 20 20 20 20 20 20 20 20 20 29 3b 0a 20              );. 
4490: 20 20 20 20 20 20 20 20 20 20 20 63 67 69 5f 70             cgi_p
44a0: 72 69 6e 74 66 28 0a 20 20 20 20 20 20 20 20 20  rintf(.         
44b0: 20 20 20 20 20 22 3c 6f 70 74 69 6f 6e 20 76 61       "<option va
44c0: 6c 75 65 3d 27 30 27 25 73 3e 25 68 3c 2f 6f 70  lue='0'%s>%h</op
44d0: 74 69 6f 6e 3e 5c 6e 22 2c 0a 20 20 20 20 20 20  tion>\n",.      
44e0: 20 20 20 20 20 20 20 20 28 21 69 73 54 72 75 65          (!isTrue
44f0: 29 20 3f 20 22 20 73 65 6c 65 63 74 65 64 22 3a  ) ? " selected":
4500: 22 22 2c 20 61 53 75 62 6d 65 6e 75 43 74 72 6c  "", aSubmenuCtrl
4510: 5b 69 5d 2e 7a 46 61 6c 73 65 0a 20 20 20 20 20  [i].zFalse.     
4520: 20 20 20 20 20 20 20 29 3b 0a 20 20 20 20 20 20         );.      
4530: 20 20 20 20 20 20 40 20 3c 2f 73 65 6c 65 63 74        @ </select
4540: 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 72  >.            br
4550: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 7d  eak;.          }
4560: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20  .        }.     
4570: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 40 20 3c   }.    }.    @ <
4580: 2f 64 69 76 3e 0a 20 20 20 20 69 66 28 20 6e 53  /div>.    if( nS
4590: 75 62 6d 65 6e 75 43 74 72 6c 20 29 7b 0a 20 20  ubmenuCtrl ){.  
45a0: 20 20 20 20 63 67 69 5f 71 75 65 72 79 5f 70 61      cgi_query_pa
45b0: 72 61 6d 65 74 65 72 73 5f 74 6f 5f 68 69 64 64  rameters_to_hidd
45c0: 65 6e 28 29 3b 0a 20 20 20 20 20 20 63 67 69 5f  en();.      cgi_
45d0: 74 61 67 5f 71 75 65 72 79 5f 70 61 72 61 6d 65  tag_query_parame
45e0: 74 65 72 28 30 29 3b 0a 20 20 20 20 20 20 40 20  ter(0);.      @ 
45f0: 3c 2f 66 6f 72 6d 3e 0a 20 20 20 20 7d 0a 20 20  </form>.    }.  
4600: 7d 0a 0a 20 20 7a 41 64 20 3d 20 73 74 79 6c 65  }..  zAd = style
4610: 5f 61 64 75 6e 69 74 5f 74 65 78 74 28 26 6d 41  _adunit_text(&mA
4620: 64 46 6c 61 67 73 29 3b 0a 20 20 69 66 28 20 28  dFlags);.  if( (
4630: 6d 41 64 46 6c 61 67 73 20 26 20 41 44 55 4e 49  mAdFlags & ADUNI
4640: 54 5f 52 49 47 48 54 5f 4f 4b 29 21 3d 30 20 20  T_RIGHT_OK)!=0  
4650: 29 7b 0a 20 20 20 20 40 20 3c 64 69 76 20 63 6c  ){.    @ <div cl
4660: 61 73 73 3d 22 63 6f 6e 74 65 6e 74 20 61 64 75  ass="content adu
4670: 6e 69 74 5f 72 69 67 68 74 5f 63 6f 6e 74 61 69  nit_right_contai
4680: 6e 65 72 22 3e 0a 20 20 20 20 40 20 3c 64 69 76  ner">.    @ <div
4690: 20 63 6c 61 73 73 3d 22 61 64 75 6e 69 74 5f 72   class="adunit_r
46a0: 69 67 68 74 22 3e 0a 20 20 20 20 63 67 69 5f 61  ight">.    cgi_a
46b0: 70 70 65 6e 64 5f 63 6f 6e 74 65 6e 74 28 7a 41  ppend_content(zA
46c0: 64 2c 20 2d 31 29 3b 0a 20 20 20 20 40 20 3c 2f  d, -1);.    @ </
46d0: 64 69 76 3e 0a 20 20 7d 65 6c 73 65 7b 0a 20 20  div>.  }else{.  
46e0: 20 20 69 66 28 20 7a 41 64 20 29 7b 0a 20 20 20    if( zAd ){.   
46f0: 20 20 20 40 20 3c 64 69 76 20 63 6c 61 73 73 3d     @ <div class=
4700: 22 61 64 75 6e 69 74 5f 62 61 6e 6e 65 72 22 3e  "adunit_banner">
4710: 0a 20 20 20 20 20 20 63 67 69 5f 61 70 70 65 6e  .      cgi_appen
4720: 64 5f 63 6f 6e 74 65 6e 74 28 7a 41 64 2c 20 2d  d_content(zAd, -
4730: 31 29 3b 0a 20 20 20 20 20 20 40 20 3c 2f 64 69  1);.      @ </di
4740: 76 3e 0a 20 20 20 20 7d 0a 20 20 20 20 40 20 3c  v>.    }.    @ <
4750: 64 69 76 20 63 6c 61 73 73 3d 22 63 6f 6e 74 65  div class="conte
4760: 6e 74 22 3e 0a 20 20 7d 0a 20 20 63 67 69 5f 64  nt">.  }.  cgi_d
4770: 65 73 74 69 6e 61 74 69 6f 6e 28 43 47 49 5f 42  estination(CGI_B
4780: 4f 44 59 29 3b 0a 0a 20 20 69 66 28 20 73 69 64  ODY);..  if( sid
4790: 65 62 6f 78 55 73 65 64 20 29 7b 0a 20 20 20 20  eboxUsed ){.    
47a0: 2f 2a 20 50 75 74 20 74 68 65 20 66 6f 6f 74 65  /* Put the foote
47b0: 72 20 61 74 20 74 68 65 20 62 6f 74 74 6f 6d 20  r at the bottom 
47c0: 6f 66 20 74 68 65 20 70 61 67 65 2e 0a 20 20 20  of the page..   
47d0: 20 2a 2a 20 74 68 65 20 61 64 64 69 74 69 6f 6e   ** the addition
47e0: 61 6c 20 63 6c 65 61 72 2f 62 6f 74 68 20 69 73  al clear/both is
47f0: 20 6e 65 65 64 65 64 20 74 6f 20 65 78 74 65 6e   needed to exten
4800: 64 20 74 68 65 20 63 6f 6e 74 65 6e 74 0a 20 20  d the content.  
4810: 20 20 2a 2a 20 70 61 72 74 20 74 6f 20 74 68 65    ** part to the
4820: 20 65 6e 64 20 6f 66 20 61 6e 20 6f 70 74 69 6f   end of an optio
4830: 6e 61 6c 20 73 69 64 65 62 6f 78 2e 0a 20 20 20  nal sidebox..   
4840: 20 2a 2f 0a 20 20 20 20 40 20 3c 64 69 76 20 63   */.    @ <div c
4850: 6c 61 73 73 3d 22 65 6e 64 43 6f 6e 74 65 6e 74  lass="endContent
4860: 22 3e 3c 2f 64 69 76 3e 0a 20 20 7d 0a 20 20 40  "></div>.  }.  @
4870: 20 3c 2f 64 69 76 3e 0a 0a 20 20 2f 2a 20 53 65   </div>..  /* Se
4880: 74 20 74 68 65 20 68 72 65 66 3d 20 66 69 65 6c  t the href= fiel
4890: 64 20 6f 6e 20 68 79 70 65 72 6c 69 6e 6b 73 2e  d on hyperlinks.
48a0: 20 20 44 6f 20 74 68 69 73 20 62 65 66 6f 72 65    Do this before
48b0: 20 74 68 65 20 66 6f 6f 74 65 72 20 73 69 6e 63   the footer sinc
48c0: 65 0a 20 20 2a 2a 20 74 68 65 20 66 6f 6f 74 65  e.  ** the foote
48d0: 72 20 77 69 6c 6c 20 62 65 20 67 65 6e 65 72 61  r will be genera
48e0: 74 69 6e 67 20 3c 2f 68 74 6d 6c 3e 20 2a 2f 0a  ting </html> */.
48f0: 20 20 73 74 79 6c 65 5f 72 65 73 6f 6c 76 65 5f    style_resolve_
4900: 68 72 65 66 28 29 3b 0a 0a 20 20 7a 46 6f 6f 74  href();..  zFoot
4910: 65 72 20 3d 20 73 6b 69 6e 5f 67 65 74 28 22 66  er = skin_get("f
4920: 6f 6f 74 65 72 22 29 3b 0a 20 20 69 66 28 20 67  ooter");.  if( g
4930: 2e 74 68 54 72 61 63 65 20 29 20 54 68 5f 54 72  .thTrace ) Th_Tr
4940: 61 63 65 28 22 42 45 47 49 4e 5f 46 4f 4f 54 45  ace("BEGIN_FOOTE
4950: 52 3c 62 72 20 2f 3e 5c 6e 22 2c 20 2d 31 29 3b  R<br />\n", -1);
4960: 0a 20 20 54 68 5f 52 65 6e 64 65 72 28 7a 46 6f  .  Th_Render(zFo
4970: 6f 74 65 72 29 3b 0a 20 20 69 66 28 20 67 2e 74  oter);.  if( g.t
4980: 68 54 72 61 63 65 20 29 20 54 68 5f 54 72 61 63  hTrace ) Th_Trac
4990: 65 28 22 45 4e 44 5f 46 4f 4f 54 45 52 3c 62 72  e("END_FOOTER<br
49a0: 20 2f 3e 5c 6e 22 2c 20 2d 31 29 3b 0a 0a 20 20   />\n", -1);..  
49b0: 2f 2a 20 52 65 6e 64 65 72 20 74 72 61 63 65 20  /* Render trace 
49c0: 6c 6f 67 20 69 66 20 54 48 31 20 74 72 61 63 69  log if TH1 traci
49d0: 6e 67 20 69 73 20 65 6e 61 62 6c 65 64 2e 20 2a  ng is enabled. *
49e0: 2f 0a 20 20 69 66 28 20 67 2e 74 68 54 72 61 63  /.  if( g.thTrac
49f0: 65 20 29 7b 0a 20 20 20 20 63 67 69 5f 61 70 70  e ){.    cgi_app
4a00: 65 6e 64 5f 63 6f 6e 74 65 6e 74 28 22 3c 73 70  end_content("<sp
4a10: 61 6e 20 63 6c 61 73 73 3d 5c 22 74 68 54 72 61  an class=\"thTra
4a20: 63 65 5c 22 3e 3c 68 72 20 2f 3e 5c 6e 22 2c 20  ce\"><hr />\n", 
4a30: 2d 31 29 3b 0a 20 20 20 20 63 67 69 5f 61 70 70  -1);.    cgi_app
4a40: 65 6e 64 5f 63 6f 6e 74 65 6e 74 28 62 6c 6f 62  end_content(blob
4a50: 5f 73 74 72 28 26 67 2e 74 68 4c 6f 67 29 2c 20  _str(&g.thLog), 
4a60: 62 6c 6f 62 5f 73 69 7a 65 28 26 67 2e 74 68 4c  blob_size(&g.thL
4a70: 6f 67 29 29 3b 0a 20 20 20 20 63 67 69 5f 61 70  og));.    cgi_ap
4a80: 70 65 6e 64 5f 63 6f 6e 74 65 6e 74 28 22 3c 2f  pend_content("</
4a90: 73 70 61 6e 3e 5c 6e 22 2c 20 2d 31 29 3b 0a 20  span>\n", -1);. 
4aa0: 20 7d 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 42 65 67 69   }.}../*.** Begi
4ab0: 6e 20 61 20 73 69 64 65 2d 62 6f 78 20 6f 6e 20  n a side-box on 
4ac0: 74 68 65 20 72 69 67 68 74 2d 68 61 6e 64 20 73  the right-hand s
4ad0: 69 64 65 20 6f 66 20 61 20 70 61 67 65 2e 20 20  ide of a page.  
4ae0: 54 68 65 20 74 69 74 6c 65 20 61 6e 64 0a 2a 2a  The title and.**
4af0: 20 74 68 65 20 77 69 64 74 68 20 6f 66 20 74 68   the width of th
4b00: 65 20 62 6f 78 20 61 72 65 20 67 69 76 65 6e 20  e box are given 
4b10: 61 73 20 61 72 67 75 6d 65 6e 74 73 2e 20 20 54  as arguments.  T
4b20: 68 65 20 77 69 64 74 68 20 69 73 20 75 73 75 61  he width is usua
4b30: 6c 6c 79 0a 2a 2a 20 61 20 70 65 72 63 65 6e 74  lly.** a percent
4b40: 61 67 65 20 6f 66 20 74 6f 74 61 6c 20 73 63 72  age of total scr
4b50: 65 65 6e 20 77 69 64 74 68 2e 0a 2a 2f 0a 76 6f  een width..*/.vo
4b60: 69 64 20 73 74 79 6c 65 5f 73 69 64 65 62 6f 78  id style_sidebox
4b70: 5f 62 65 67 69 6e 28 63 6f 6e 73 74 20 63 68 61  _begin(const cha
4b80: 72 20 2a 7a 54 69 74 6c 65 2c 20 63 6f 6e 73 74  r *zTitle, const
4b90: 20 63 68 61 72 20 2a 7a 57 69 64 74 68 29 7b 0a   char *zWidth){.
4ba0: 20 20 73 69 64 65 62 6f 78 55 73 65 64 20 3d 20    sideboxUsed = 
4bb0: 31 3b 0a 20 20 40 20 3c 64 69 76 20 63 6c 61 73  1;.  @ <div clas
4bc0: 73 3d 22 73 69 64 65 62 6f 78 22 20 73 74 79 6c  s="sidebox" styl
4bd0: 65 3d 22 77 69 64 74 68 3a 25 73 28 7a 57 69 64  e="width:%s(zWid
4be0: 74 68 29 22 3e 0a 20 20 40 20 3c 64 69 76 20 63  th)">.  @ <div c
4bf0: 6c 61 73 73 3d 22 73 69 64 65 62 6f 78 54 69 74  lass="sideboxTit
4c00: 6c 65 22 3e 25 68 28 7a 54 69 74 6c 65 29 3c 2f  le">%h(zTitle)</
4c10: 64 69 76 3e 0a 7d 0a 0a 2f 2a 20 45 6e 64 20 74  div>.}../* End t
4c20: 68 65 20 73 69 64 65 2d 62 6f 78 0a 2a 2f 0a 76  he side-box.*/.v
4c30: 6f 69 64 20 73 74 79 6c 65 5f 73 69 64 65 62 6f  oid style_sidebo
4c40: 78 5f 65 6e 64 28 76 6f 69 64 29 7b 0a 20 20 40  x_end(void){.  @
4c50: 20 3c 2f 64 69 76 3e 0a 7d 0a 0a 0a 2f 2a 20 54   </div>.}.../* T
4c60: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 74 61 62  he following tab
4c70: 6c 65 20 63 6f 6e 74 61 69 6e 73 20 62 69 74 73  le contains bits
4c80: 20 6f 66 20 64 65 66 61 75 6c 74 20 43 53 53 20   of default CSS 
4c90: 74 68 61 74 20 6d 75 73 74 0a 2a 2a 20 62 65 20  that must.** be 
4ca0: 69 6e 63 6c 75 64 65 64 20 69 66 20 74 68 65 79  included if they
4cb0: 20 61 72 65 20 6e 6f 74 20 66 6f 75 6e 64 20 69   are not found i
4cc0: 6e 20 74 68 65 20 61 70 70 6c 69 63 61 74 69 6f  n the applicatio
4cd0: 6e 2d 64 65 66 69 6e 65 64 0a 2a 2a 20 43 53 53  n-defined.** CSS
4ce0: 2e 0a 2a 2f 0a 63 6f 6e 73 74 20 73 74 72 75 63  ..*/.const struc
4cf0: 74 20 73 74 72 63 74 43 73 73 44 65 66 61 75 6c  t strctCssDefaul
4d00: 74 73 20 7b 0a 20 20 63 6f 6e 73 74 20 63 68 61  ts {.  const cha
4d10: 72 20 2a 65 6c 65 6d 65 6e 74 43 6c 61 73 73 3b  r *elementClass;
4d20: 20 20 2f 2a 20 4e 61 6d 65 20 6f 66 20 65 6c 65    /* Name of ele
4d30: 6d 65 6e 74 20 6e 65 65 64 65 64 20 2a 2f 0a 20  ment needed */. 
4d40: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 63 6f 6d   const char *com
4d50: 6d 65 6e 74 3b 20 20 20 20 20 20 20 2f 2a 20 43  ment;       /* C
4d60: 6f 6d 6d 65 6e 74 20 74 65 78 74 20 2a 2f 0a 20  omment text */. 
4d70: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 76 61 6c   const char *val
4d80: 75 65 3b 20 20 20 20 20 20 20 20 20 2f 2a 20 43  ue;         /* C
4d90: 53 53 20 74 65 78 74 20 2a 2f 0a 7d 20 63 73 73  SS text */.} css
4da0: 44 65 66 61 75 6c 74 4c 69 73 74 5b 5d 20 3d 20  DefaultList[] = 
4db0: 7b 0a 20 20 7b 20 22 64 69 76 2e 73 69 64 65 62  {.  { "div.sideb
4dc0: 6f 78 22 2c 0a 20 20 20 20 22 54 68 65 20 6e 6f  ox",.    "The no
4dd0: 6d 65 6e 63 6c 61 74 75 72 65 20 73 69 64 65 62  menclature sideb
4de0: 6f 78 20 66 6f 72 20 62 72 61 6e 63 68 65 73 2c  ox for branches,
4df0: 2e 2e 22 2c 0a 20 20 20 20 40 20 20 20 66 6c 6f  ..",.    @   flo
4e00: 61 74 3a 20 72 69 67 68 74 3b 0a 20 20 20 20 40  at: right;.    @
4e10: 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f     background-co
4e20: 6c 6f 72 3a 20 77 68 69 74 65 3b 0a 20 20 20 20  lor: white;.    
4e30: 40 20 20 20 62 6f 72 64 65 72 2d 77 69 64 74 68  @   border-width
4e40: 3a 20 6d 65 64 69 75 6d 3b 0a 20 20 20 20 40 20  : medium;.    @ 
4e50: 20 20 62 6f 72 64 65 72 2d 73 74 79 6c 65 3a 20    border-style: 
4e60: 64 6f 75 62 6c 65 3b 0a 20 20 20 20 40 20 20 20  double;.    @   
4e70: 6d 61 72 67 69 6e 3a 20 31 30 70 78 3b 0a 20 20  margin: 10px;.  
4e80: 7d 2c 0a 20 20 7b 20 22 64 69 76 2e 73 69 64 65  },.  { "div.side
4e90: 62 6f 78 54 69 74 6c 65 22 2c 0a 20 20 20 20 22  boxTitle",.    "
4ea0: 54 68 65 20 6e 6f 6d 65 6e 63 6c 61 74 75 72 65  The nomenclature
4eb0: 20 74 69 74 6c 65 20 69 6e 20 73 69 64 65 62 6f   title in sidebo
4ec0: 78 65 73 20 66 6f 72 20 62 72 61 6e 63 68 65 73  xes for branches
4ed0: 2c 2e 2e 22 2c 0a 20 20 20 20 40 20 20 20 64 69  ,..",.    @   di
4ee0: 73 70 6c 61 79 3a 20 69 6e 6c 69 6e 65 3b 0a 20  splay: inline;. 
4ef0: 20 20 20 40 20 20 20 66 6f 6e 74 2d 77 65 69 67     @   font-weig
4f00: 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a 20  ht: bold;.  },. 
4f10: 20 7b 20 22 64 69 76 2e 73 69 64 65 62 6f 78 44   { "div.sideboxD
4f20: 65 73 63 72 69 62 65 64 22 2c 0a 20 20 20 20 22  escribed",.    "
4f30: 54 68 65 20 64 65 66 69 6e 65 64 20 65 6c 65 6d  The defined elem
4f40: 65 6e 74 20 69 6e 20 73 69 64 65 62 6f 78 65 73  ent in sideboxes
4f50: 20 66 6f 72 20 62 72 61 6e 63 68 65 73 2c 2e 2e   for branches,..
4f60: 22 2c 0a 20 20 20 20 40 20 20 20 64 69 73 70 6c  ",.    @   displ
4f70: 61 79 3a 20 69 6e 6c 69 6e 65 3b 0a 20 20 20 20  ay: inline;.    
4f80: 40 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a  @   font-weight:
4f90: 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20   bold;.  },.  { 
4fa0: 22 73 70 61 6e 2e 64 69 73 61 62 6c 65 64 22 2c  "span.disabled",
4fb0: 0a 20 20 20 20 22 54 68 65 20 64 65 66 69 6e 65  .    "The define
4fc0: 64 20 65 6c 65 6d 65 6e 74 20 69 6e 20 73 69 64  d element in sid
4fd0: 65 62 6f 78 65 73 20 66 6f 72 20 62 72 61 6e 63  eboxes for branc
4fe0: 68 65 73 2c 2e 2e 22 2c 0a 20 20 20 20 40 20 20  hes,..",.    @  
4ff0: 20 63 6f 6c 6f 72 3a 20 72 65 64 3b 0a 20 20 7d   color: red;.  }
5000: 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 74 69 6d 65  ,.  { "span.time
5010: 6c 69 6e 65 44 69 73 61 62 6c 65 64 22 2c 0a 20  lineDisabled",. 
5020: 20 20 20 22 54 68 65 20 73 75 70 70 72 65 73 73     "The suppress
5030: 65 64 20 64 75 70 6c 69 63 61 74 65 73 20 6c 69  ed duplicates li
5040: 6e 65 73 20 69 6e 20 74 69 6d 65 6c 69 6e 65 2c  nes in timeline,
5050: 20 2e 2e 22 2c 0a 20 20 20 20 40 20 20 20 66 6f   ..",.    @   fo
5060: 6e 74 2d 73 74 79 6c 65 3a 20 69 74 61 6c 69 63  nt-style: italic
5070: 3b 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 73  ;.    @   font-s
5080: 69 7a 65 3a 20 73 6d 61 6c 6c 3b 0a 20 20 7d 2c  ize: small;.  },
5090: 0a 20 20 7b 20 22 74 61 62 6c 65 2e 74 69 6d 65  .  { "table.time
50a0: 6c 69 6e 65 54 61 62 6c 65 22 2c 0a 20 20 20 20  lineTable",.    
50b0: 22 74 68 65 20 66 6f 72 6d 61 74 20 66 6f 72 20  "the format for 
50c0: 74 68 65 20 74 69 6d 65 6c 69 6e 65 20 64 61 74  the timeline dat
50d0: 61 20 74 61 62 6c 65 22 2c 0a 20 20 20 20 40 20  a table",.    @ 
50e0: 20 20 62 6f 72 64 65 72 3a 20 30 3b 0a 20 20 20    border: 0;.   
50f0: 20 40 20 20 20 62 6f 72 64 65 72 2d 63 6f 6c 6c   @   border-coll
5100: 61 70 73 65 3a 20 63 6f 6c 6c 61 70 73 65 3b 0a  apse: collapse;.
5110: 20 20 7d 2c 0a 20 20 7b 20 22 74 64 2e 74 69 6d    },.  { "td.tim
5120: 65 6c 69 6e 65 54 61 62 6c 65 43 65 6c 6c 22 2c  elineTableCell",
5130: 0a 20 20 20 20 22 74 68 65 20 66 6f 72 6d 61 74  .    "the format
5140: 20 66 6f 72 20 74 68 65 20 74 69 6d 65 6c 69 6e   for the timelin
5150: 65 20 64 61 74 61 20 63 65 6c 6c 73 22 2c 0a 20  e data cells",. 
5160: 20 20 20 40 20 20 20 76 65 72 74 69 63 61 6c 2d     @   vertical-
5170: 61 6c 69 67 6e 3a 20 74 6f 70 3b 0a 20 20 20 20  align: top;.    
5180: 40 20 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20  @   text-align: 
5190: 6c 65 66 74 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  left;.  },.  { "
51a0: 74 72 2e 74 69 6d 65 6c 69 6e 65 43 75 72 72 65  tr.timelineCurre
51b0: 6e 74 20 74 64 2e 74 69 6d 65 6c 69 6e 65 54 61  nt td.timelineTa
51c0: 62 6c 65 43 65 6c 6c 22 2c 0a 20 20 20 20 22 74  bleCell",.    "t
51d0: 68 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68  he format for th
51e0: 65 20 74 69 6d 65 6c 69 6e 65 20 64 61 74 61 20  e timeline data 
51f0: 63 65 6c 6c 20 6f 66 20 74 68 65 20 63 75 72 72  cell of the curr
5200: 65 6e 74 20 63 68 65 63 6b 6f 75 74 22 2c 0a 20  ent checkout",. 
5210: 20 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a 20     @   padding: 
5220: 2e 31 65 6d 20 2e 32 65 6d 3b 0a 20 20 20 20 40  .1em .2em;.    @
5230: 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20 64     border: 1px d
5240: 61 73 68 65 64 20 23 34 34 36 39 37 39 3b 0a 20  ashed #446979;. 
5250: 20 7d 2c 0a 20 20 7b 20 22 74 72 2e 74 69 6d 65   },.  { "tr.time
5260: 6c 69 6e 65 53 65 6c 65 63 74 65 64 22 2c 0a 20  lineSelected",. 
5270: 20 20 20 22 54 68 65 20 72 6f 77 20 69 6e 20 74     "The row in t
5280: 68 65 20 74 69 6d 65 6c 69 6e 65 20 74 61 62 6c  he timeline tabl
5290: 65 20 74 68 61 74 20 63 6f 6e 74 61 69 6e 73 20  e that contains 
52a0: 74 68 65 20 65 6e 74 72 79 20 6f 66 20 69 6e 74  the entry of int
52b0: 65 72 65 73 74 22 2c 0a 20 20 20 20 40 20 20 20  erest",.    @   
52c0: 70 61 64 64 69 6e 67 3a 20 2e 31 65 6d 20 2e 32  padding: .1em .2
52d0: 65 6d 3b 0a 20 20 20 20 40 20 20 20 62 6f 72 64  em;.    @   bord
52e0: 65 72 3a 20 32 70 78 20 73 6f 6c 69 64 20 6c 69  er: 2px solid li
52f0: 67 68 74 67 72 61 79 3b 0a 20 20 20 20 40 20 20  ghtgray;.    @  
5300: 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f   background-colo
5310: 72 3a 20 23 66 66 63 3b 0a 20 20 20 20 40 20 20  r: #ffc;.    @  
5320: 20 62 6f 78 2d 73 68 61 64 6f 77 3a 20 34 70 78   box-shadow: 4px
5330: 20 34 70 78 20 32 70 78 20 23 38 38 38 3b 0a 20   4px 2px #888;. 
5340: 20 7d 2c 0a 20 20 7b 20 22 74 72 2e 74 69 6d 65   },.  { "tr.time
5350: 6c 69 6e 65 53 70 61 63 65 72 22 2c 0a 20 20 20  lineSpacer",.   
5360: 20 22 41 6e 20 65 78 74 72 61 20 72 6f 77 20 69   "An extra row i
5370: 6e 73 65 72 74 65 64 20 74 6f 20 67 69 76 65 20  nserted to give 
5380: 76 65 72 74 69 63 61 6c 20 73 70 61 63 65 20 62  vertical space b
5390: 65 74 77 65 65 6e 20 74 77 6f 20 72 6f 77 73 22  etween two rows"
53a0: 2c 0a 20 20 20 20 40 20 20 20 68 65 69 67 68 74  ,.    @   height
53b0: 3a 20 31 65 78 3b 0a 20 20 7d 2c 0a 20 20 7b 20  : 1ex;.  },.  { 
53c0: 22 73 70 61 6e 2e 74 69 6d 65 6c 69 6e 65 4c 65  "span.timelineLe
53d0: 61 66 22 2c 0a 20 20 20 20 22 74 68 65 20 66 6f  af",.    "the fo
53e0: 72 6d 61 74 20 66 6f 72 20 74 68 65 20 74 69 6d  rmat for the tim
53f0: 65 6c 69 6e 65 20 6c 65 61 66 20 6d 61 72 6b 73  eline leaf marks
5400: 22 2c 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d  ",.    @   font-
5410: 77 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20  weight: bold;.  
5420: 7d 2c 0a 20 20 7b 20 22 61 2e 74 69 6d 65 6c 69  },.  { "a.timeli
5430: 6e 65 48 69 73 74 4c 69 6e 6b 22 2c 0a 20 20 20  neHistLink",.   
5440: 20 22 74 68 65 20 66 6f 72 6d 61 74 20 66 6f 72   "the format for
5450: 20 74 68 65 20 74 69 6d 65 6c 69 6e 65 20 76 65   the timeline ve
5460: 72 73 69 6f 6e 20 6c 69 6e 6b 73 22 2c 0a 20 20  rsion links",.  
5470: 20 20 40 0a 20 20 7d 2c 0a 20 20 7b 20 22 73 70    @.  },.  { "sp
5480: 61 6e 2e 74 69 6d 65 6c 69 6e 65 48 69 73 74 44  an.timelineHistD
5490: 73 70 22 2c 0a 20 20 20 20 22 74 68 65 20 66 6f  sp",.    "the fo
54a0: 72 6d 61 74 20 66 6f 72 20 74 68 65 20 74 69 6d  rmat for the tim
54b0: 65 6c 69 6e 65 20 76 65 72 73 69 6f 6e 20 64 69  eline version di
54c0: 73 70 6c 61 79 28 6e 6f 20 68 69 73 74 6f 72 79  splay(no history
54d0: 20 70 65 72 6d 69 73 73 69 6f 6e 21 29 22 2c 0a   permission!)",.
54e0: 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 77 65 69      @   font-wei
54f0: 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a  ght: bold;.  },.
5500: 20 20 7b 20 22 74 64 2e 74 69 6d 65 6c 69 6e 65    { "td.timeline
5510: 54 69 6d 65 22 2c 0a 20 20 20 20 22 74 68 65 20  Time",.    "the 
5520: 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 74  format for the t
5530: 69 6d 65 6c 69 6e 65 20 74 69 6d 65 20 64 69 73  imeline time dis
5540: 70 6c 61 79 22 2c 0a 20 20 20 20 40 20 20 20 76  play",.    @   v
5550: 65 72 74 69 63 61 6c 2d 61 6c 69 67 6e 3a 20 74  ertical-align: t
5560: 6f 70 3b 0a 20 20 20 20 40 20 20 20 74 65 78 74  op;.    @   text
5570: 2d 61 6c 69 67 6e 3a 20 72 69 67 68 74 3b 0a 20  -align: right;. 
5580: 20 20 20 40 20 20 20 77 68 69 74 65 2d 73 70 61     @   white-spa
5590: 63 65 3a 20 6e 6f 77 72 61 70 3b 0a 20 20 7d 2c  ce: nowrap;.  },
55a0: 0a 20 20 7b 20 22 74 64 2e 74 69 6d 65 6c 69 6e  .  { "td.timelin
55b0: 65 47 72 61 70 68 22 2c 0a 20 20 20 20 22 74 68  eGraph",.    "th
55c0: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65  e format for the
55d0: 20 67 72 61 70 20 70 6c 61 63 65 68 6f 6c 64 65   grap placeholde
55e0: 72 20 63 65 6c 6c 73 20 69 6e 20 74 69 6d 65 6c  r cells in timel
55f0: 69 6e 65 73 22 2c 0a 20 20 20 20 40 20 77 69 64  ines",.    @ wid
5600: 74 68 3a 20 32 30 70 78 3b 0a 20 20 20 20 40 20  th: 20px;.    @ 
5610: 74 65 78 74 2d 61 6c 69 67 6e 3a 20 6c 65 66 74  text-align: left
5620: 3b 0a 20 20 20 20 40 20 76 65 72 74 69 63 61 6c  ;.    @ vertical
5630: 2d 61 6c 69 67 6e 3a 20 74 6f 70 3b 0a 20 20 7d  -align: top;.  }
5640: 2c 0a 20 20 7b 20 22 61 2e 74 61 67 4c 69 6e 6b  ,.  { "a.tagLink
5650: 22 2c 0a 20 20 20 20 22 74 68 65 20 66 6f 72 6d  ",.    "the form
5660: 61 74 20 66 6f 72 20 74 68 65 20 74 61 67 20 6c  at for the tag l
5670: 69 6e 6b 73 22 2c 0a 20 20 20 20 40 0a 20 20 7d  inks",.    @.  }
5680: 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 74 61 67 44  ,.  { "span.tagD
5690: 73 70 22 2c 0a 20 20 20 20 22 74 68 65 20 66 6f  sp",.    "the fo
56a0: 72 6d 61 74 20 66 6f 72 20 74 68 65 20 74 61 67  rmat for the tag
56b0: 20 64 69 73 70 6c 61 79 28 6e 6f 20 68 69 73 74   display(no hist
56c0: 6f 72 79 20 70 65 72 6d 69 73 73 69 6f 6e 21 29  ory permission!)
56d0: 22 2c 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d  ",.    @   font-
56e0: 77 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20  weight: bold;.  
56f0: 7d 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 77 69 6b  },.  { "span.wik
5700: 69 45 72 72 6f 72 22 2c 0a 20 20 20 20 22 74 68  iError",.    "th
5710: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 77 69 6b  e format for wik
5720: 69 20 65 72 72 6f 72 73 22 2c 0a 20 20 20 20 40  i errors",.    @
5730: 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20     font-weight: 
5740: 62 6f 6c 64 3b 0a 20 20 20 20 40 20 20 20 63 6f  bold;.    @   co
5750: 6c 6f 72 3a 20 72 65 64 3b 0a 20 20 7d 2c 0a 20  lor: red;.  },. 
5760: 20 7b 20 22 73 70 61 6e 2e 69 6e 66 6f 54 61 67   { "span.infoTag
5770: 43 61 6e 63 65 6c 6c 65 64 22 2c 0a 20 20 20 20  Cancelled",.    
5780: 22 74 68 65 20 66 6f 72 6d 61 74 20 66 6f 72 20  "the format for 
5790: 66 69 78 65 64 2f 63 61 6e 63 65 6c 65 64 20 74  fixed/canceled t
57a0: 61 67 73 2c 2e 2e 22 2c 0a 20 20 20 20 40 20 20  ags,..",.    @  
57b0: 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 6f   font-weight: bo
57c0: 6c 64 3b 0a 20 20 20 20 40 20 20 20 74 65 78 74  ld;.    @   text
57d0: 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 20 6c 69 6e  -decoration: lin
57e0: 65 2d 74 68 72 6f 75 67 68 3b 0a 20 20 7d 2c 0a  e-through;.  },.
57f0: 20 20 7b 20 22 73 70 61 6e 2e 69 6e 66 6f 54 61    { "span.infoTa
5800: 67 22 2c 0a 20 20 20 20 22 74 68 65 20 66 6f 72  g",.    "the for
5810: 6d 61 74 20 66 6f 72 20 74 61 67 73 2c 2e 2e 22  mat for tags,.."
5820: 2c 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 77  ,.    @   font-w
5830: 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d  eight: bold;.  }
5840: 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 77 69 6b 69  ,.  { "span.wiki
5850: 54 61 67 43 61 6e 63 65 6c 6c 65 64 22 2c 0a 20  TagCancelled",. 
5860: 20 20 20 22 74 68 65 20 66 6f 72 6d 61 74 20 66     "the format f
5870: 6f 72 20 66 69 78 65 64 2f 63 61 6e 63 65 6c 6c  or fixed/cancell
5880: 65 64 20 74 61 67 73 2c 2e 2e 20 6f 6e 20 77 69  ed tags,.. on wi
5890: 6b 69 20 70 61 67 65 73 22 2c 0a 20 20 20 20 40  ki pages",.    @
58a0: 20 20 20 74 65 78 74 2d 64 65 63 6f 72 61 74 69     text-decorati
58b0: 6f 6e 3a 20 6c 69 6e 65 2d 74 68 72 6f 75 67 68  on: line-through
58c0: 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 61 62 6c  ;.  },.  { "tabl
58d0: 65 2e 62 72 6f 77 73 65 72 22 2c 0a 20 20 20 20  e.browser",.    
58e0: 22 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20  "format for the 
58f0: 66 69 6c 65 20 64 69 73 70 6c 61 79 20 74 61 62  file display tab
5900: 6c 65 22 2c 0a 20 20 20 20 40 20 2f 2a 20 74 68  le",.    @ /* th
5910: 65 20 66 6f 72 6d 61 74 20 66 6f 72 20 77 69 6b  e format for wik
5920: 69 20 65 72 72 6f 72 73 20 2a 2f 0a 20 20 20 20  i errors */.    
5930: 40 20 20 20 77 69 64 74 68 3a 20 31 30 30 25 3b  @   width: 100%;
5940: 0a 20 20 20 20 40 20 20 20 62 6f 72 64 65 72 3a  .    @   border:
5950: 20 30 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 64   0;.  },.  { "td
5960: 2e 62 72 6f 77 73 65 72 22 2c 0a 20 20 20 20 22  .browser",.    "
5970: 66 6f 72 6d 61 74 20 66 6f 72 20 63 65 6c 6c 73  format for cells
5980: 20 69 6e 20 74 68 65 20 66 69 6c 65 20 62 72 6f   in the file bro
5990: 77 73 65 72 22 2c 0a 20 20 20 20 40 20 20 20 77  wser",.    @   w
59a0: 69 64 74 68 3a 20 32 34 25 3b 0a 20 20 20 20 40  idth: 24%;.    @
59b0: 20 20 20 76 65 72 74 69 63 61 6c 2d 61 6c 69 67     vertical-alig
59c0: 6e 3a 20 74 6f 70 3b 0a 20 20 7d 2c 0a 20 20 7b  n: top;.  },.  {
59d0: 20 22 2e 66 69 6c 65 74 72 65 65 22 2c 0a 20 20   ".filetree",.  
59e0: 20 20 22 74 72 65 65 2d 76 69 65 77 20 66 69 6c    "tree-view fil
59f0: 65 20 62 72 6f 77 73 65 72 22 2c 0a 20 20 20 20  e browser",.    
5a00: 40 20 20 20 6d 61 72 67 69 6e 3a 20 31 65 6d 20  @   margin: 1em 
5a10: 30 3b 0a 20 20 20 20 40 20 20 20 6c 69 6e 65 2d  0;.    @   line-
5a20: 68 65 69 67 68 74 3a 20 31 2e 35 3b 0a 20 20 7d  height: 1.5;.  }
5a30: 2c 0a 20 20 7b 0a 20 20 20 20 22 2e 66 69 6c 65  ,.  {.    ".file
5a40: 74 72 65 65 20 3e 20 75 6c 22 2c 0a 20 20 20 20  tree > ul",.    
5a50: 22 74 72 65 65 2d 76 69 65 77 20 74 6f 70 2d 6c  "tree-view top-l
5a60: 65 76 65 6c 20 6c 69 73 74 22 2c 0a 20 20 20 20  evel list",.    
5a70: 40 20 20 20 64 69 73 70 6c 61 79 3a 20 69 6e 6c  @   display: inl
5a80: 69 6e 65 2d 62 6c 6f 63 6b 3b 0a 20 20 7d 2c 0a  ine-block;.  },.
5a90: 20 20 7b 20 22 2e 66 69 6c 65 74 72 65 65 20 75    { ".filetree u
5aa0: 6c 22 2c 0a 20 20 20 20 22 74 72 65 65 2d 76 69  l",.    "tree-vi
5ab0: 65 77 20 6c 69 73 74 73 22 2c 0a 20 20 20 20 40  ew lists",.    @
5ac0: 20 20 20 6d 61 72 67 69 6e 3a 20 30 3b 0a 20 20     margin: 0;.  
5ad0: 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a 20 30    @   padding: 0
5ae0: 3b 0a 20 20 20 20 40 20 20 20 6c 69 73 74 2d 73  ;.    @   list-s
5af0: 74 79 6c 65 3a 20 6e 6f 6e 65 3b 0a 20 20 7d 2c  tyle: none;.  },
5b00: 0a 20 20 7b 20 22 2e 66 69 6c 65 74 72 65 65 20  .  { ".filetree 
5b10: 75 6c 2e 63 6f 6c 6c 61 70 73 65 64 22 2c 0a 20  ul.collapsed",. 
5b20: 20 20 20 22 74 72 65 65 2d 76 69 65 77 20 63 6f     "tree-view co
5b30: 6c 6c 61 70 73 65 64 20 6c 69 73 74 22 2c 0a 20  llapsed list",. 
5b40: 20 20 20 40 20 20 20 64 69 73 70 6c 61 79 3a 20     @   display: 
5b50: 6e 6f 6e 65 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  none;.  },.  { "
5b60: 2e 66 69 6c 65 74 72 65 65 20 75 6c 20 75 6c 22  .filetree ul ul"
5b70: 2c 0a 20 20 20 20 22 74 72 65 65 2d 76 69 65 77  ,.    "tree-view
5b80: 20 6c 69 73 74 73 20 62 65 6c 6f 77 20 74 68 65   lists below the
5b90: 20 72 6f 6f 74 22 2c 0a 20 20 20 20 40 20 20 20   root",.    @   
5ba0: 70 6f 73 69 74 69 6f 6e 3a 20 72 65 6c 61 74 69  position: relati
5bb0: 76 65 3b 0a 20 20 20 20 40 20 20 20 6d 61 72 67  ve;.    @   marg
5bc0: 69 6e 3a 20 30 20 30 20 30 20 32 31 70 78 3b 0a  in: 0 0 0 21px;.
5bd0: 20 20 7d 2c 0a 20 20 7b 20 22 2e 66 69 6c 65 74    },.  { ".filet
5be0: 72 65 65 20 6c 69 22 2c 0a 20 20 20 20 22 74 72  ree li",.    "tr
5bf0: 65 65 2d 76 69 65 77 20 6c 69 73 74 73 20 69 74  ee-view lists it
5c00: 65 6d 73 22 2c 0a 20 20 20 20 40 20 20 20 70 6f  ems",.    @   po
5c10: 73 69 74 69 6f 6e 3a 20 72 65 6c 61 74 69 76 65  sition: relative
5c20: 3b 0a 20 20 20 20 40 20 20 20 6d 61 72 67 69 6e  ;.    @   margin
5c30: 3a 20 30 3b 0a 20 20 20 20 40 20 20 20 70 61 64  : 0;.    @   pad
5c40: 64 69 6e 67 3a 20 30 3b 0a 20 20 7d 2c 0a 20 20  ding: 0;.  },.  
5c50: 7b 20 22 2e 66 69 6c 65 74 72 65 65 20 6c 69 20  { ".filetree li 
5c60: 6c 69 3a 62 65 66 6f 72 65 22 2c 0a 20 20 20 20  li:before",.    
5c70: 22 74 72 65 65 2d 76 69 65 77 20 6e 6f 64 65 20  "tree-view node 
5c80: 6c 69 6e 65 73 22 2c 0a 20 20 20 20 40 20 20 20  lines",.    @   
5c90: 63 6f 6e 74 65 6e 74 3a 20 27 27 3b 0a 20 20 20  content: '';.   
5ca0: 20 40 20 20 20 70 6f 73 69 74 69 6f 6e 3a 20 61   @   position: a
5cb0: 62 73 6f 6c 75 74 65 3b 0a 20 20 20 20 40 20 20  bsolute;.    @  
5cc0: 20 74 6f 70 3a 20 2d 2e 38 65 6d 3b 0a 20 20 20   top: -.8em;.   
5cd0: 20 40 20 20 20 6c 65 66 74 3a 20 2d 31 34 70 78   @   left: -14px
5ce0: 3b 0a 20 20 20 20 40 20 20 20 77 69 64 74 68 3a  ;.    @   width:
5cf0: 20 31 34 70 78 3b 0a 20 20 20 20 40 20 20 20 68   14px;.    @   h
5d00: 65 69 67 68 74 3a 20 31 2e 35 65 6d 3b 0a 20 20  eight: 1.5em;.  
5d10: 20 20 40 20 20 20 62 6f 72 64 65 72 2d 6c 65 66    @   border-lef
5d20: 74 3a 20 32 70 78 20 73 6f 6c 69 64 20 23 61 61  t: 2px solid #aa
5d30: 61 3b 0a 20 20 20 20 40 20 20 20 62 6f 72 64 65  a;.    @   borde
5d40: 72 2d 62 6f 74 74 6f 6d 3a 20 32 70 78 20 73 6f  r-bottom: 2px so
5d50: 6c 69 64 20 23 61 61 61 3b 0a 20 20 7d 2c 0a 20  lid #aaa;.  },. 
5d60: 20 7b 20 22 2e 66 69 6c 65 74 72 65 65 20 6c 69   { ".filetree li
5d70: 20 3e 20 75 6c 3a 62 65 66 6f 72 65 22 2c 0a 20   > ul:before",. 
5d80: 20 20 20 22 74 72 65 65 2d 76 69 65 77 20 64 69     "tree-view di
5d90: 72 65 63 74 6f 72 79 20 6c 69 6e 65 73 22 2c 0a  rectory lines",.
5da0: 20 20 20 20 40 20 20 20 63 6f 6e 74 65 6e 74 3a      @   content:
5db0: 20 27 27 3b 0a 20 20 20 20 40 20 20 20 70 6f 73   '';.    @   pos
5dc0: 69 74 69 6f 6e 3a 20 61 62 73 6f 6c 75 74 65 3b  ition: absolute;
5dd0: 0a 20 20 20 20 40 20 20 20 74 6f 70 3a 20 2d 31  .    @   top: -1
5de0: 2e 35 65 6d 3b 0a 20 20 20 20 40 20 20 20 62 6f  .5em;.    @   bo
5df0: 74 74 6f 6d 3a 20 30 3b 0a 20 20 20 20 40 20 20  ttom: 0;.    @  
5e00: 20 6c 65 66 74 3a 20 2d 33 35 70 78 3b 0a 20 20   left: -35px;.  
5e10: 20 20 40 20 20 20 62 6f 72 64 65 72 2d 6c 65 66    @   border-lef
5e20: 74 3a 20 32 70 78 20 73 6f 6c 69 64 20 23 61 61  t: 2px solid #aa
5e30: 61 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 66 69  a;.  },.  { ".fi
5e40: 6c 65 74 72 65 65 20 6c 69 2e 6c 61 73 74 20 3e  letree li.last >
5e50: 20 75 6c 3a 62 65 66 6f 72 65 22 2c 0a 20 20 20   ul:before",.   
5e60: 20 22 68 69 64 65 20 6c 69 6e 65 73 20 66 6f 72   "hide lines for
5e70: 20 6c 61 73 74 2d 63 68 69 6c 64 20 64 69 72 65   last-child dire
5e80: 63 74 6f 72 69 65 73 22 2c 0a 20 20 20 20 40 20  ctories",.    @ 
5e90: 20 20 64 69 73 70 6c 61 79 3a 20 6e 6f 6e 65 3b    display: none;
5ea0: 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 66 69 6c 65  .  },.  { ".file
5eb0: 74 72 65 65 20 61 22 2c 0a 20 20 20 20 22 74 72  tree a",.    "tr
5ec0: 65 65 2d 76 69 65 77 20 6c 69 6e 6b 73 22 2c 0a  ee-view links",.
5ed0: 20 20 20 20 22 20 20 70 6f 73 69 74 69 6f 6e 3a      "  position:
5ee0: 20 72 65 6c 61 74 69 76 65 3b 5c 6e 22 0a 20 20   relative;\n".  
5ef0: 20 20 22 20 20 7a 2d 69 6e 64 65 78 3a 20 31 3b    "  z-index: 1;
5f00: 5c 6e 22 0a 20 20 20 20 22 20 20 64 69 73 70 6c  \n".    "  displ
5f10: 61 79 3a 20 74 61 62 6c 65 2d 63 65 6c 6c 3b 5c  ay: table-cell;\
5f20: 6e 22 0a 20 20 20 20 22 20 20 6d 69 6e 2d 68 65  n".    "  min-he
5f30: 69 67 68 74 3a 20 31 36 70 78 3b 5c 6e 22 0a 20  ight: 16px;\n". 
5f40: 20 20 20 22 20 20 70 61 64 64 69 6e 67 2d 6c 65     "  padding-le
5f50: 66 74 3a 20 32 31 70 78 3b 5c 6e 22 0a 20 20 20  ft: 21px;\n".   
5f60: 20 22 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 69   "  background-i
5f70: 6d 61 67 65 3a 20 75 72 6c 28 64 61 74 61 3a 69  mage: url(data:i
5f80: 6d 61 67 65 2f 67 69 66 3b 62 61 73 65 36 34 2c  mage/gif;base64,
5f90: 52 30 6c 47 4f 44 6c 68 45 41 41 51 41 4a 45 41  R0lGODlhEAAQAJEA
5fa0: 41 50 22 0a 20 20 20 20 22 5c 5c 2f 5c 5c 2f 5c  AP".    "\\/\\/\
5fb0: 5c 2f 79 45 68 49 66 5c 5c 2f 5c 5c 2f 5c 5c 2f  \/yEhIf\\/\\/\\/
5fc0: 77 41 41 41 43 48 35 42 41 45 48 41 41 49 41 4c  wAAACH5BAEHAAIAL
5fd0: 41 41 41 41 41 41 51 41 42 41 41 41 41 49 76 6c  AAAAAAQABAAAAIvl
5fe0: 49 4b 70 78 71 63 66 6d 67 22 0a 20 20 20 20 22  IKpxqcfmg".    "
5ff0: 4f 55 76 6f 61 71 44 53 43 78 72 45 45 66 46 31  OUvoaqDSCxrEEfF1
6000: 34 47 71 46 58 49 6d 4a 5a 73 75 37 33 77 65 70  4GqFXImJZsu73wep
6010: 4a 7a 56 4d 4e 78 72 74 4e 54 6a 33 4e 41 54 4d  JzVMNxrtNTj3NATM
6020: 4b 68 70 77 41 41 4f 77 3d 3d 29 3b 5c 6e 22 0a  KhpwAAOw==);\n".
6030: 20 20 20 20 22 20 20 62 61 63 6b 67 72 6f 75 6e      "  backgroun
6040: 64 2d 70 6f 73 69 74 69 6f 6e 3a 20 63 65 6e 74  d-position: cent
6050: 65 72 20 6c 65 66 74 3b 5c 6e 22 0a 20 20 20 20  er left;\n".    
6060: 22 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 72 65  "  background-re
6070: 70 65 61 74 3a 20 6e 6f 2d 72 65 70 65 61 74 3b  peat: no-repeat;
6080: 5c 6e 22 0a 20 20 7d 2c 0a 20 20 7b 20 22 75 6c  \n".  },.  { "ul
6090: 2e 62 72 6f 77 73 65 72 22 2c 0a 20 20 20 20 22  .browser",.    "
60a0: 6c 69 73 74 20 6f 66 20 66 69 6c 65 73 20 69 6e  list of files in
60b0: 20 74 68 65 20 27 66 6c 61 74 2d 76 69 65 77 27   the 'flat-view'
60c0: 20 66 69 6c 65 20 62 72 6f 77 73 65 72 22 2c 0a   file browser",.
60d0: 20 20 20 20 40 20 20 20 6c 69 73 74 2d 73 74 79      @   list-sty
60e0: 6c 65 2d 74 79 70 65 3a 20 6e 6f 6e 65 3b 0a 20  le-type: none;. 
60f0: 20 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a 20     @   padding: 
6100: 31 30 70 78 3b 0a 20 20 20 20 40 20 20 20 6d 61  10px;.    @   ma
6110: 72 67 69 6e 3a 20 30 70 78 3b 0a 20 20 20 20 40  rgin: 0px;.    @
6120: 20 20 20 77 68 69 74 65 2d 73 70 61 63 65 3a 20     white-space: 
6130: 6e 6f 77 72 61 70 3b 0a 20 20 7d 2c 0a 20 20 7b  nowrap;.  },.  {
6140: 20 22 75 6c 2e 62 72 6f 77 73 65 72 20 6c 69 2e   "ul.browser li.
6150: 66 69 6c 65 22 2c 0a 20 20 20 20 22 4c 69 73 74  file",.    "List
6160: 20 65 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20   element in the 
6170: 27 66 6c 61 74 2d 76 69 65 77 27 20 66 69 6c 65  'flat-view' file
6180: 20 62 72 6f 77 73 65 72 20 66 6f 72 20 61 20 66   browser for a f
6190: 69 6c 65 22 2c 0a 20 20 20 20 22 20 20 62 61 63  ile",.    "  bac
61a0: 6b 67 72 6f 75 6e 64 2d 69 6d 61 67 65 3a 20 75  kground-image: u
61b0: 72 6c 28 64 61 74 61 3a 69 6d 61 67 65 2f 67 69  rl(data:image/gi
61c0: 66 3b 62 61 73 65 36 34 2c 52 30 6c 47 4f 44 6c  f;base64,R0lGODl
61d0: 68 45 41 41 51 41 4a 45 41 41 50 22 0a 20 20 20  hEAAQAJEAAP".   
61e0: 20 22 5c 5c 2f 5c 5c 2f 5c 5c 2f 79 45 68 49 66   "\\/\\/\\/yEhIf
61f0: 5c 5c 2f 5c 5c 2f 5c 5c 2f 77 41 41 41 43 48 35  \\/\\/\\/wAAACH5
6200: 42 41 45 48 41 41 49 41 4c 41 41 41 41 41 41 51  BAEHAAIALAAAAAAQ
6210: 41 42 41 41 41 41 49 76 6c 49 4b 70 78 71 63 66  ABAAAAIvlIKpxqcf
6220: 6d 22 20 0a 20 20 20 20 22 67 4f 55 76 6f 61 71  m" .    "gOUvoaq
6230: 44 53 43 78 72 45 45 66 46 31 34 47 71 46 58 49  DSCxrEEfF14GqFXI
6240: 6d 4a 5a 73 75 37 33 77 65 70 4a 7a 56 4d 4e 78  mJZsu73wepJzVMNx
6250: 72 74 4e 54 6a 33 4e 41 54 4d 4b 68 70 77 41 41  rtNTj3NATMKhpwAA
6260: 4f 77 3d 3d 29 3b 5c 6e 22 0a 20 20 20 20 22 20  Ow==);\n".    " 
6270: 20 62 61 63 6b 67 72 6f 75 6e 64 2d 72 65 70 65   background-repe
6280: 61 74 3a 20 6e 6f 2d 72 65 70 65 61 74 3b 5c 6e  at: no-repeat;\n
6290: 22 0a 20 20 20 20 22 20 20 62 61 63 6b 67 72 6f  ".    "  backgro
62a0: 75 6e 64 2d 70 6f 73 69 74 69 6f 6e 3a 20 30 70  und-position: 0p
62b0: 78 20 63 65 6e 74 65 72 3b 5c 6e 22 0a 20 20 20  x center;\n".   
62c0: 20 22 20 20 70 61 64 64 69 6e 67 2d 6c 65 66 74   "  padding-left
62d0: 3a 20 32 30 70 78 3b 5c 6e 22 0a 20 20 20 20 22  : 20px;\n".    "
62e0: 20 20 70 61 64 64 69 6e 67 2d 74 6f 70 3a 20 32    padding-top: 2
62f0: 70 78 3b 5c 6e 22 0a 20 20 7d 2c 0a 20 20 7b 20  px;\n".  },.  { 
6300: 22 75 6c 2e 62 72 6f 77 73 65 72 20 6c 69 2e 64  "ul.browser li.d
6310: 69 72 22 2c 0a 20 20 20 20 22 4c 69 73 74 20 65  ir",.    "List e
6320: 6c 65 6d 65 6e 74 20 69 6e 20 74 68 65 20 27 66  lement in the 'f
6330: 6c 61 74 2d 76 69 65 77 20 66 69 6c 65 20 62 72  lat-view file br
6340: 6f 77 73 65 72 20 66 6f 72 20 61 20 64 69 72 65  owser for a dire
6350: 63 74 6f 72 79 22 2c 0a 20 20 20 20 22 20 20 62  ctory",.    "  b
6360: 61 63 6b 67 72 6f 75 6e 64 2d 69 6d 61 67 65 3a  ackground-image:
6370: 20 75 72 6c 28 64 61 74 61 3a 69 6d 61 67 65 2f   url(data:image/
6380: 67 69 66 3b 62 61 73 65 36 34 2c 52 30 6c 47 4f  gif;base64,R0lGO
6390: 44 6c 68 45 41 41 51 41 4a 45 41 41 50 2f 57 56  DlhEAAQAJEAAP/WV
63a0: 43 49 69 22 0a 20 20 20 20 22 49 76 5c 5c 2f 5c  CIi".    "Iv\\/\
63b0: 5c 2f 5c 5c 2f 77 41 41 41 43 48 35 42 41 45 48  \/\\/wAAACH5BAEH
63c0: 41 41 49 41 4c 41 41 41 41 41 41 51 41 42 41 41  AAIALAAAAAAQABAA
63d0: 41 41 49 6e 6c 49 39 70 77 61 33 58 59 6e 69 43  AAInlI9pwa3XYniC
63e0: 67 51 74 6b 72 41 46 66 4c 58 6b 69 46 6f 31 6a  gQtkrAFfLXkiFo1j
63f0: 61 58 22 0a 20 20 20 20 22 70 6f 2b 6a 55 73 36  aX".    "po+jUs6
6400: 62 35 5a 2f 4b 34 73 69 44 75 35 52 50 55 46 41  b5Z/K4siDu5RPUFA
6410: 44 73 3d 29 3b 5c 6e 22 0a 20 20 20 20 22 20 20  Ds=);\n".    "  
6420: 62 61 63 6b 67 72 6f 75 6e 64 2d 72 65 70 65 61  background-repea
6430: 74 3a 20 6e 6f 2d 72 65 70 65 61 74 3b 5c 6e 22  t: no-repeat;\n"
6440: 0a 20 20 20 20 22 20 20 62 61 63 6b 67 72 6f 75  .    "  backgrou
6450: 6e 64 2d 70 6f 73 69 74 69 6f 6e 3a 20 30 70 78  nd-position: 0px
6460: 20 63 65 6e 74 65 72 3b 5c 6e 22 0a 20 20 20 20   center;\n".    
6470: 22 20 20 70 61 64 64 69 6e 67 2d 6c 65 66 74 3a  "  padding-left:
6480: 20 32 30 70 78 3b 5c 6e 22 0a 20 20 20 20 22 20   20px;\n".    " 
6490: 20 70 61 64 64 69 6e 67 2d 74 6f 70 3a 20 32 70   padding-top: 2p
64a0: 78 3b 5c 6e 22 0a 20 20 7d 2c 0a 20 20 7b 20 22  x;\n".  },.  { "
64b0: 64 69 76 2e 66 69 6c 65 74 72 65 65 6c 69 6e 65  div.filetreeline
64c0: 22 2c 0a 20 20 20 20 22 6c 69 6e 65 20 6f 66 20  ",.    "line of 
64d0: 61 20 66 69 6c 65 20 74 72 65 65 22 2c 0a 20 20  a file tree",.  
64e0: 20 20 40 20 20 20 64 69 73 70 6c 61 79 3a 20 74    @   display: t
64f0: 61 62 6c 65 3b 0a 20 20 20 20 40 20 20 20 77 69  able;.    @   wi
6500: 64 74 68 3a 20 31 30 30 25 3b 0a 20 20 20 20 40  dth: 100%;.    @
6510: 20 20 20 77 68 69 74 65 2d 73 70 61 63 65 3a 20     white-space: 
6520: 6e 6f 77 72 61 70 3b 0a 20 20 7d 2c 0a 20 20 7b  nowrap;.  },.  {
6530: 20 22 2e 66 69 6c 65 74 72 65 65 20 2e 64 69 72   ".filetree .dir
6540: 20 3e 20 64 69 76 2e 66 69 6c 65 74 72 65 65 6c   > div.filetreel
6550: 69 6e 65 20 3e 20 61 22 2c 0a 20 20 20 20 22 74  ine > a",.    "t
6560: 72 65 65 2d 76 69 65 77 20 64 69 72 65 63 74 6f  ree-view directo
6570: 72 79 20 6c 69 6e 6b 73 22 2c 0a 20 20 20 20 22  ry links",.    "
6580: 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 69 6d 61    background-ima
6590: 67 65 3a 20 75 72 6c 28 64 61 74 61 3a 69 6d 61  ge: url(data:ima
65a0: 67 65 2f 67 69 66 3b 62 61 73 65 36 34 2c 52 30  ge/gif;base64,R0
65b0: 6c 47 4f 44 6c 68 45 41 41 51 41 4a 45 41 41 50  lGODlhEAAQAJEAAP
65c0: 2f 57 56 43 49 69 22 0a 20 20 20 20 22 49 76 5c  /WVCIi".    "Iv\
65d0: 5c 2f 5c 5c 2f 5c 5c 2f 77 41 41 41 43 48 35 42  \/\\/\\/wAAACH5B
65e0: 41 45 48 41 41 49 41 4c 41 41 41 41 41 41 51 41  AEHAAIALAAAAAAQA
65f0: 42 41 41 41 41 49 6e 6c 49 39 70 77 61 33 58 59  BAAAAInlI9pwa3XY
6600: 6e 69 43 67 51 74 6b 72 41 46 66 4c 58 6b 69 46  niCgQtkrAFfLXkiF
6610: 6f 31 6a 61 58 70 22 0a 20 20 20 20 22 6f 2b 6a  o1jaXp".    "o+j
6620: 55 73 36 62 35 5a 2f 4b 34 73 69 44 75 35 52 50  Us6b5Z/K4siDu5RP
6630: 55 46 41 44 73 3d 29 3b 5c 6e 22 0a 20 20 7d 2c  UFADs=);\n".  },
6640: 0a 20 20 7b 20 22 64 69 76 2e 66 69 6c 65 74 72  .  { "div.filetr
6650: 65 65 61 67 65 22 2c 0a 20 20 20 20 22 4c 61 73  eeage",.    "Las
6660: 74 20 63 68 61 6e 67 65 20 66 6c 6f 61 74 69 6e  t change floatin
6670: 67 20 64 69 73 70 6c 61 79 20 6f 6e 20 74 68 65  g display on the
6680: 20 72 69 67 68 74 22 2c 0a 20 20 20 20 40 20 20   right",.    @  
6690: 64 69 73 70 6c 61 79 3a 20 74 61 62 6c 65 2d 63  display: table-c
66a0: 65 6c 6c 3b 0a 20 20 20 20 40 20 20 70 61 64 64  ell;.    @  padd
66b0: 69 6e 67 2d 6c 65 66 74 3a 20 33 65 6d 3b 0a 20  ing-left: 3em;. 
66c0: 20 20 20 40 20 20 74 65 78 74 2d 61 6c 69 67 6e     @  text-align
66d0: 3a 20 72 69 67 68 74 3b 0a 20 20 7d 2c 0a 20 20  : right;.  },.  
66e0: 7b 20 22 64 69 76 2e 66 69 6c 65 74 72 65 65 6c  { "div.filetreel
66f0: 69 6e 65 3a 68 6f 76 65 72 22 2c 0a 20 20 20 20  ine:hover",.    
6700: 22 48 69 67 68 6c 69 67 68 74 20 74 68 65 20 6c  "Highlight the l
6710: 69 6e 65 20 6f 66 20 61 20 66 69 6c 65 20 74 72  ine of a file tr
6720: 65 65 22 2c 0a 20 20 20 20 40 20 20 62 61 63 6b  ee",.    @  back
6730: 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 23 65  ground-color: #e
6740: 65 65 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 61  ee;.  },.  { "ta
6750: 62 6c 65 2e 6c 6f 67 69 6e 5f 6f 75 74 22 2c 0a  ble.login_out",.
6760: 20 20 20 20 22 74 61 62 6c 65 20 66 6f 72 6d 61      "table forma
6770: 74 20 66 6f 72 20 6c 6f 67 69 6e 2f 6f 75 74 20  t for login/out 
6780: 6c 61 62 65 6c 2f 69 6e 70 75 74 20 74 61 62 6c  label/input tabl
6790: 65 22 2c 0a 20 20 20 20 40 20 20 20 74 65 78 74  e",.    @   text
67a0: 2d 61 6c 69 67 6e 3a 20 6c 65 66 74 3b 0a 20 20  -align: left;.  
67b0: 20 20 40 20 20 20 6d 61 72 67 69 6e 2d 72 69 67    @   margin-rig
67c0: 68 74 3a 20 31 30 70 78 3b 0a 20 20 20 20 40 20  ht: 10px;.    @ 
67d0: 20 20 6d 61 72 67 69 6e 2d 6c 65 66 74 3a 20 31    margin-left: 1
67e0: 30 70 78 3b 0a 20 20 20 20 40 20 20 20 6d 61 72  0px;.    @   mar
67f0: 67 69 6e 2d 74 6f 70 3a 20 31 30 70 78 3b 0a 20  gin-top: 10px;. 
6800: 20 7d 2c 0a 20 20 7b 20 22 64 69 76 2e 63 61 70   },.  { "div.cap
6810: 74 63 68 61 22 2c 0a 20 20 20 20 22 63 61 70 74  tcha",.    "capt
6820: 63 68 61 20 64 69 73 70 6c 61 79 20 6f 70 74 69  cha display opti
6830: 6f 6e 73 22 2c 0a 20 20 20 20 40 20 20 20 74 65  ons",.    @   te
6840: 78 74 2d 61 6c 69 67 6e 3a 20 63 65 6e 74 65 72  xt-align: center
6850: 3b 0a 20 20 20 20 40 20 20 20 70 61 64 64 69 6e  ;.    @   paddin
6860: 67 3a 20 31 65 78 3b 0a 20 20 7d 2c 0a 20 20 7b  g: 1ex;.  },.  {
6870: 20 22 74 61 62 6c 65 2e 63 61 70 74 63 68 61 22   "table.captcha"
6880: 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f  ,.    "format fo
6890: 72 20 74 68 65 20 6c 61 79 6f 75 74 20 74 61 62  r the layout tab
68a0: 6c 65 2c 20 75 73 65 64 20 66 6f 72 20 74 68 65  le, used for the
68b0: 20 63 61 70 74 63 68 61 20 64 69 73 70 6c 61 79   captcha display
68c0: 22 2c 0a 20 20 20 20 40 20 20 20 6d 61 72 67 69  ",.    @   margi
68d0: 6e 3a 20 61 75 74 6f 3b 0a 20 20 20 20 40 20 20  n: auto;.    @  
68e0: 20 70 61 64 64 69 6e 67 3a 20 31 30 70 78 3b 0a   padding: 10px;.
68f0: 20 20 20 20 40 20 20 20 62 6f 72 64 65 72 2d 77      @   border-w
6900: 69 64 74 68 3a 20 34 70 78 3b 0a 20 20 20 20 40  idth: 4px;.    @
6910: 20 20 20 62 6f 72 64 65 72 2d 73 74 79 6c 65 3a     border-style:
6920: 20 64 6f 75 62 6c 65 3b 0a 20 20 20 20 40 20 20   double;.    @  
6930: 20 62 6f 72 64 65 72 2d 63 6f 6c 6f 72 3a 20 62   border-color: b
6940: 6c 61 63 6b 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  lack;.  },.  { "
6950: 74 64 2e 6c 6f 67 69 6e 5f 6f 75 74 5f 6c 61 62  td.login_out_lab
6960: 65 6c 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74  el",.    "format
6970: 20 66 6f 72 20 74 68 65 20 6c 61 62 65 6c 20 63   for the label c
6980: 65 6c 6c 73 20 69 6e 20 74 68 65 20 6c 6f 67 69  ells in the logi
6990: 6e 2f 6f 75 74 20 74 61 62 6c 65 22 2c 0a 20 20  n/out table",.  
69a0: 20 20 40 20 20 20 74 65 78 74 2d 61 6c 69 67 6e    @   text-align
69b0: 3a 20 63 65 6e 74 65 72 3b 0a 20 20 7d 2c 0a 20  : center;.  },. 
69c0: 20 7b 20 22 73 70 61 6e 2e 6c 6f 67 69 6e 45 72   { "span.loginEr
69d0: 72 6f 72 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61  ror",.    "forma
69e0: 74 20 66 6f 72 20 6c 6f 67 69 6e 20 65 72 72 6f  t for login erro
69f0: 72 20 6d 65 73 73 61 67 65 73 22 2c 0a 20 20 20  r messages",.   
6a00: 20 40 20 20 20 63 6f 6c 6f 72 3a 20 72 65 64 3b   @   color: red;
6a10: 0a 20 20 7d 2c 0a 20 20 7b 20 22 73 70 61 6e 2e  .  },.  { "span.
6a20: 6e 6f 74 65 22 2c 0a 20 20 20 20 22 66 6f 72 6d  note",.    "form
6a30: 61 74 20 66 6f 72 20 6c 65 61 64 69 6e 67 20 74  at for leading t
6a40: 65 78 74 20 66 6f 72 20 6e 6f 74 65 73 22 2c 0a  ext for notes",.
6a50: 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 77 65 69      @   font-wei
6a60: 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a  ght: bold;.  },.
6a70: 20 20 7b 20 22 73 70 61 6e 2e 74 65 78 74 61 72    { "span.textar
6a80: 65 61 4c 61 62 65 6c 22 2c 0a 20 20 20 20 22 66  eaLabel",.    "f
6a90: 6f 72 6d 61 74 20 66 6f 72 20 74 65 78 74 61 72  ormat for textar
6aa0: 65 61 20 6c 61 62 65 6c 73 22 2c 0a 20 20 20 20  ea labels",.    
6ab0: 40 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a  @   font-weight:
6ac0: 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20   bold;.  },.  { 
6ad0: 22 74 61 62 6c 65 2e 75 73 65 74 75 70 4c 61 79  "table.usetupLay
6ae0: 6f 75 74 54 61 62 6c 65 22 2c 0a 20 20 20 20 22  outTable",.    "
6af0: 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 65 20 75  format for the u
6b00: 73 65 72 20 73 65 74 75 70 20 6c 61 79 6f 75 74  ser setup layout
6b10: 20 74 61 62 6c 65 22 2c 0a 20 20 20 20 40 20 20   table",.    @  
6b20: 20 6f 75 74 6c 69 6e 65 2d 73 74 79 6c 65 3a 20   outline-style: 
6b30: 6e 6f 6e 65 3b 0a 20 20 20 20 40 20 20 20 70 61  none;.    @   pa
6b40: 64 64 69 6e 67 3a 20 30 3b 0a 20 20 20 20 40 20  dding: 0;.    @ 
6b50: 20 20 6d 61 72 67 69 6e 3a 20 32 35 70 78 3b 0a    margin: 25px;.
6b60: 20 20 7d 2c 0a 20 20 7b 20 22 74 64 2e 75 73 65    },.  { "td.use
6b70: 74 75 70 43 6f 6c 75 6d 6e 4c 61 79 6f 75 74 22  tupColumnLayout"
6b80: 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 6f 66  ,.    "format of
6b90: 20 74 68 65 20 63 6f 6c 75 6d 6e 73 20 6f 6e 20   the columns on 
6ba0: 74 68 65 20 75 73 65 72 20 73 65 74 75 70 20 6c  the user setup l
6bb0: 69 73 74 20 70 61 67 65 22 2c 0a 20 20 20 20 40  ist page",.    @
6bc0: 20 20 20 76 65 72 74 69 63 61 6c 2d 61 6c 69 67     vertical-alig
6bd0: 6e 3a 20 74 6f 70 0a 20 20 7d 2c 0a 20 20 7b 20  n: top.  },.  { 
6be0: 22 74 61 62 6c 65 2e 75 73 65 74 75 70 55 73 65  "table.usetupUse
6bf0: 72 4c 69 73 74 22 2c 0a 20 20 20 20 22 66 6f 72  rList",.    "for
6c00: 6d 61 74 20 66 6f 72 20 74 68 65 20 75 73 65 72  mat for the user
6c10: 20 6c 69 73 74 20 74 61 62 6c 65 20 6f 6e 20 74   list table on t
6c20: 68 65 20 75 73 65 72 20 73 65 74 75 70 20 70 61  he user setup pa
6c30: 67 65 22 2c 0a 20 20 20 20 40 20 20 20 6f 75 74  ge",.    @   out
6c40: 6c 69 6e 65 2d 73 74 79 6c 65 3a 20 64 6f 75 62  line-style: doub
6c50: 6c 65 3b 0a 20 20 20 20 40 20 20 20 6f 75 74 6c  le;.    @   outl
6c60: 69 6e 65 2d 77 69 64 74 68 3a 20 31 70 78 3b 0a  ine-width: 1px;.
6c70: 20 20 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a      @   padding:
6c80: 20 31 30 70 78 3b 0a 20 20 7d 2c 0a 20 20 7b 20   10px;.  },.  { 
6c90: 22 74 68 2e 75 73 65 74 75 70 4c 69 73 74 55 73  "th.usetupListUs
6ca0: 65 72 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74  er",.    "format
6cb0: 20 66 6f 72 20 74 61 62 6c 65 20 68 65 61 64 65   for table heade
6cc0: 72 20 75 73 65 72 20 69 6e 20 75 73 65 72 20 6c  r user in user l
6cd0: 69 73 74 20 6f 6e 20 75 73 65 72 20 73 65 74 75  ist on user setu
6ce0: 70 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20 20  p page",.    @  
6cf0: 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 72 69 67   text-align: rig
6d00: 68 74 3b 0a 20 20 20 20 40 20 20 20 70 61 64 64  ht;.    @   padd
6d10: 69 6e 67 2d 72 69 67 68 74 3a 20 32 30 70 78 3b  ing-right: 20px;
6d20: 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 68 2e 75 73  .  },.  { "th.us
6d30: 65 74 75 70 4c 69 73 74 43 61 70 22 2c 0a 20 20  etupListCap",.  
6d40: 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20 74 61    "format for ta
6d50: 62 6c 65 20 68 65 61 64 65 72 20 63 61 70 61 62  ble header capab
6d60: 69 6c 69 74 69 65 73 20 69 6e 20 75 73 65 72 20  ilities in user 
6d70: 6c 69 73 74 20 6f 6e 20 75 73 65 72 20 73 65 74  list on user set
6d80: 75 70 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20  up page",.    @ 
6d90: 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 65    text-align: ce
6da0: 6e 74 65 72 3b 0a 20 20 20 20 40 20 20 20 70 61  nter;.    @   pa
6db0: 64 64 69 6e 67 2d 72 69 67 68 74 3a 20 31 35 70  dding-right: 15p
6dc0: 78 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 68 2e  x;.  },.  { "th.
6dd0: 75 73 65 74 75 70 4c 69 73 74 43 6f 6e 22 2c 0a  usetupListCon",.
6de0: 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20      "format for 
6df0: 74 61 62 6c 65 20 68 65 61 64 65 72 20 63 6f 6e  table header con
6e00: 74 61 63 74 20 69 6e 66 6f 20 69 6e 20 75 73 65  tact info in use
6e10: 72 20 6c 69 73 74 20 6f 6e 20 75 73 65 72 20 73  r list on user s
6e20: 65 74 75 70 20 70 61 67 65 22 2c 0a 20 20 20 20  etup page",.    
6e30: 40 20 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20  @   text-align: 
6e40: 6c 65 66 74 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  left;.  },.  { "
6e50: 74 64 2e 75 73 65 74 75 70 4c 69 73 74 55 73 65  td.usetupListUse
6e60: 72 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74 20  r",.    "format 
6e70: 66 6f 72 20 74 61 62 6c 65 20 63 65 6c 6c 20 75  for table cell u
6e80: 73 65 72 20 69 6e 20 75 73 65 72 20 6c 69 73 74  ser in user list
6e90: 20 6f 6e 20 75 73 65 72 20 73 65 74 75 70 20 70   on user setup p
6ea0: 61 67 65 22 2c 0a 20 20 20 20 40 20 20 20 74 65  age",.    @   te
6eb0: 78 74 2d 61 6c 69 67 6e 3a 20 72 69 67 68 74 3b  xt-align: right;
6ec0: 0a 20 20 20 20 40 20 20 20 70 61 64 64 69 6e 67  .    @   padding
6ed0: 2d 72 69 67 68 74 3a 20 32 30 70 78 3b 0a 20 20  -right: 20px;.  
6ee0: 20 20 40 20 20 20 77 68 69 74 65 2d 73 70 61 63    @   white-spac
6ef0: 65 3a 6e 6f 77 72 61 70 3b 0a 20 20 7d 2c 0a 20  e:nowrap;.  },. 
6f00: 20 7b 20 22 74 64 2e 75 73 65 74 75 70 4c 69 73   { "td.usetupLis
6f10: 74 43 61 70 22 2c 0a 20 20 20 20 22 66 6f 72 6d  tCap",.    "form
6f20: 61 74 20 66 6f 72 20 74 61 62 6c 65 20 63 65 6c  at for table cel
6f30: 6c 20 63 61 70 61 62 69 6c 69 74 69 65 73 20 69  l capabilities i
6f40: 6e 20 75 73 65 72 20 6c 69 73 74 20 6f 6e 20 75  n user list on u
6f50: 73 65 72 20 73 65 74 75 70 20 70 61 67 65 22 2c  ser setup page",
6f60: 0a 20 20 20 20 40 20 20 20 74 65 78 74 2d 61 6c  .    @   text-al
6f70: 69 67 6e 3a 20 63 65 6e 74 65 72 3b 0a 20 20 20  ign: center;.   
6f80: 20 40 20 20 20 70 61 64 64 69 6e 67 2d 72 69 67   @   padding-rig
6f90: 68 74 3a 20 31 35 70 78 3b 0a 20 20 7d 2c 0a 20  ht: 15px;.  },. 
6fa0: 20 7b 20 22 74 64 2e 75 73 65 74 75 70 4c 69 73   { "td.usetupLis
6fb0: 74 43 6f 6e 22 2c 0a 20 20 20 20 22 66 6f 72 6d  tCon",.    "form
6fc0: 61 74 20 66 6f 72 20 74 61 62 6c 65 20 63 65 6c  at for table cel
6fd0: 6c 20 63 6f 6e 74 61 63 74 20 69 6e 66 6f 20 69  l contact info i
6fe0: 6e 20 75 73 65 72 20 6c 69 73 74 20 6f 6e 20 75  n user list on u
6ff0: 73 65 72 20 73 65 74 75 70 20 70 61 67 65 22 2c  ser setup page",
7000: 0a 20 20 20 20 40 20 20 20 74 65 78 74 2d 61 6c  .    @   text-al
7010: 69 67 6e 3a 20 6c 65 66 74 0a 20 20 7d 2c 0a 20  ign: left.  },. 
7020: 20 7b 20 22 64 69 76 2e 75 65 64 69 74 43 61 70   { "div.ueditCap
7030: 42 6f 78 22 2c 0a 20 20 20 20 22 6c 61 79 6f 75  Box",.    "layou
7040: 74 20 64 65 66 69 6e 69 74 69 6f 6e 20 66 6f 72  t definition for
7050: 20 74 68 65 20 63 61 70 61 62 69 6c 69 74 69 65   the capabilitie
7060: 73 20 62 6f 78 20 6f 6e 20 74 68 65 20 75 73 65  s box on the use
7070: 72 20 65 64 69 74 20 64 65 74 61 69 6c 20 70 61  r edit detail pa
7080: 67 65 22 2c 0a 20 20 20 20 40 20 20 20 66 6c 6f  ge",.    @   flo
7090: 61 74 3a 20 6c 65 66 74 3b 0a 20 20 20 20 40 20  at: left;.    @ 
70a0: 20 20 6d 61 72 67 69 6e 2d 72 69 67 68 74 3a 20    margin-right: 
70b0: 32 30 70 78 3b 0a 20 20 20 20 40 20 20 20 6d 61  20px;.    @   ma
70c0: 72 67 69 6e 2d 62 6f 74 74 6f 6d 3a 20 32 30 70  rgin-bottom: 20p
70d0: 78 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 64 2e  x;.  },.  { "td.
70e0: 75 73 65 74 75 70 45 64 69 74 4c 61 62 65 6c 22  usetupEditLabel"
70f0: 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 6f 66  ,.    "format of
7100: 20 74 68 65 20 6c 61 62 65 6c 20 63 65 6c 6c 73   the label cells
7110: 20 69 6e 20 74 68 65 20 64 65 74 61 69 6c 65 64   in the detailed
7120: 20 75 73 65 72 20 65 64 69 74 20 70 61 67 65 22   user edit page"
7130: 2c 0a 20 20 20 20 40 20 20 20 74 65 78 74 2d 61  ,.    @   text-a
7140: 6c 69 67 6e 3a 20 72 69 67 68 74 3b 0a 20 20 20  lign: right;.   
7150: 20 40 20 20 20 76 65 72 74 69 63 61 6c 2d 61 6c   @   vertical-al
7160: 69 67 6e 3a 20 74 6f 70 3b 0a 20 20 20 20 40 20  ign: top;.    @ 
7170: 20 20 77 68 69 74 65 2d 73 70 61 63 65 3a 20 6e    white-space: n
7180: 6f 77 72 61 70 3b 0a 20 20 7d 2c 0a 20 20 7b 20  owrap;.  },.  { 
7190: 22 73 70 61 6e 2e 75 65 64 69 74 49 6e 68 65 72  "span.ueditInher
71a0: 69 74 4e 6f 62 6f 64 79 22 2c 0a 20 20 20 20 22  itNobody",.    "
71b0: 63 6f 6c 6f 72 20 66 6f 72 20 63 61 70 61 62 69  color for capabi
71c0: 6c 69 74 69 65 73 2c 20 69 6e 68 65 72 69 74 65  lities, inherite
71d0: 64 20 62 79 20 6e 6f 62 6f 64 79 22 2c 0a 20 20  d by nobody",.  
71e0: 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 67 72 65    @   color: gre
71f0: 65 6e 3b 0a 20 20 20 20 40 20 20 20 70 61 64 64  en;.    @   padd
7200: 69 6e 67 3a 20 2e 32 65 6d 3b 0a 20 20 7d 2c 0a  ing: .2em;.  },.
7210: 20 20 7b 20 22 73 70 61 6e 2e 75 65 64 69 74 49    { "span.ueditI
7220: 6e 68 65 72 69 74 44 65 76 65 6c 6f 70 65 72 22  nheritDeveloper"
7230: 2c 0a 20 20 20 20 22 63 6f 6c 6f 72 20 66 6f 72  ,.    "color for
7240: 20 63 61 70 61 62 69 6c 69 74 69 65 73 2c 20 69   capabilities, i
7250: 6e 68 65 72 69 74 65 64 20 62 79 20 64 65 76 65  nherited by deve
7260: 6c 6f 70 65 72 22 2c 0a 20 20 20 20 40 20 20 20  loper",.    @   
7270: 63 6f 6c 6f 72 3a 20 72 65 64 3b 0a 20 20 20 20  color: red;.    
7280: 40 20 20 20 70 61 64 64 69 6e 67 3a 20 2e 32 65  @   padding: .2e
7290: 6d 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 73 70 61  m;.  },.  { "spa
72a0: 6e 2e 75 65 64 69 74 49 6e 68 65 72 69 74 52 65  n.ueditInheritRe
72b0: 61 64 65 72 22 2c 0a 20 20 20 20 22 63 6f 6c 6f  ader",.    "colo
72c0: 72 20 66 6f 72 20 63 61 70 61 62 69 6c 69 74 69  r for capabiliti
72d0: 65 73 2c 20 69 6e 68 65 72 69 74 65 64 20 62 79  es, inherited by
72e0: 20 72 65 61 64 65 72 22 2c 0a 20 20 20 20 40 20   reader",.    @ 
72f0: 20 20 63 6f 6c 6f 72 3a 20 62 6c 61 63 6b 3b 0a    color: black;.
7300: 20 20 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a      @   padding:
7310: 20 2e 32 65 6d 3b 0a 20 20 7d 2c 0a 20 20 7b 20   .2em;.  },.  { 
7320: 22 73 70 61 6e 2e 75 65 64 69 74 49 6e 68 65 72  "span.ueditInher
7330: 69 74 41 6e 6f 6e 79 6d 6f 75 73 22 2c 0a 20 20  itAnonymous",.  
7340: 20 20 22 63 6f 6c 6f 72 20 66 6f 72 20 63 61 70    "color for cap
7350: 61 62 69 6c 69 74 69 65 73 2c 20 69 6e 68 65 72  abilities, inher
7360: 69 74 65 64 20 62 79 20 61 6e 6f 6e 79 6d 6f 75  ited by anonymou
7370: 73 22 2c 0a 20 20 20 20 40 20 20 20 63 6f 6c 6f  s",.    @   colo
7380: 72 3a 20 62 6c 75 65 3b 0a 20 20 20 20 40 20 20  r: blue;.    @  
7390: 20 70 61 64 64 69 6e 67 3a 20 2e 32 65 6d 3b 0a   padding: .2em;.
73a0: 20 20 7d 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 63    },.  { "span.c
73b0: 61 70 61 62 69 6c 69 74 79 22 2c 0a 20 20 20 20  apability",.    
73c0: 22 66 6f 72 6d 61 74 20 66 6f 72 20 63 61 70 61  "format for capa
73d0: 62 69 6c 69 74 69 65 73 2c 20 6d 65 6e 74 69 6f  bilities, mentio
73e0: 6e 65 64 20 6f 6e 20 74 68 65 20 75 73 65 72 20  ned on the user 
73f0: 65 64 69 74 20 70 61 67 65 22 2c 0a 20 20 20 20  edit page",.    
7400: 40 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a  @   font-weight:
7410: 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20   bold;.  },.  { 
7420: 22 73 70 61 6e 2e 75 73 65 72 74 79 70 65 22 2c  "span.usertype",
7430: 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72  .    "format for
7440: 20 64 69 66 66 65 72 65 6e 74 20 75 73 65 72 20   different user 
7450: 74 79 70 65 73 2c 20 6d 65 6e 74 69 6f 6e 65 64  types, mentioned
7460: 20 6f 6e 20 74 68 65 20 75 73 65 72 20 65 64 69   on the user edi
7470: 74 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20 20  t page",.    @  
7480: 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 6f   font-weight: bo
7490: 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 73 70  ld;.  },.  { "sp
74a0: 61 6e 2e 75 73 65 72 74 79 70 65 3a 62 65 66 6f  an.usertype:befo
74b0: 72 65 22 2c 0a 20 20 20 20 22 6c 65 61 64 69 6e  re",.    "leadin
74c0: 67 20 74 65 78 74 20 66 6f 72 20 75 73 65 72 20  g text for user 
74d0: 74 79 70 65 73 2c 20 6d 65 6e 74 69 6f 6e 65 64  types, mentioned
74e0: 20 6f 6e 20 74 68 65 20 75 73 65 72 20 65 64 69   on the user edi
74f0: 74 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20 20  t page",.    @  
7500: 20 63 6f 6e 74 65 6e 74 3a 22 27 22 3b 0a 20 20   content:"'";.  
7510: 7d 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 75 73 65  },.  { "span.use
7520: 72 74 79 70 65 3a 61 66 74 65 72 22 2c 0a 20 20  rtype:after",.  
7530: 20 20 22 74 72 61 69 6c 69 6e 67 20 74 65 78 74    "trailing text
7540: 20 66 6f 72 20 75 73 65 72 20 74 79 70 65 73 2c   for user types,
7550: 20 6d 65 6e 74 69 6f 6e 65 64 20 6f 6e 20 74 68   mentioned on th
7560: 65 20 75 73 65 72 20 65 64 69 74 20 70 61 67 65  e user edit page
7570: 22 2c 0a 20 20 20 20 40 20 20 20 63 6f 6e 74 65  ",.    @   conte
7580: 6e 74 3a 22 27 22 3b 0a 20 20 7d 2c 0a 20 20 7b  nt:"'";.  },.  {
7590: 20 22 64 69 76 2e 73 65 6c 65 63 74 65 64 54 65   "div.selectedTe
75a0: 78 74 22 2c 0a 20 20 20 20 22 73 65 6c 65 63 74  xt",.    "select
75b0: 65 64 20 6c 69 6e 65 73 20 6f 66 20 74 65 78 74  ed lines of text
75c0: 20 77 69 74 68 69 6e 20 61 20 6c 69 6e 65 6e 75   within a linenu
75d0: 6d 62 65 72 65 64 20 61 72 74 69 66 61 63 74 20  mbered artifact 
75e0: 64 69 73 70 6c 61 79 22 2c 0a 20 20 20 20 40 20  display",.    @ 
75f0: 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62    font-weight: b
7600: 6f 6c 64 3b 0a 20 20 20 20 40 20 20 20 63 6f 6c  old;.    @   col
7610: 6f 72 3a 20 62 6c 75 65 3b 0a 20 20 20 20 40 20  or: blue;.    @ 
7620: 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c    background-col
7630: 6f 72 3a 20 23 64 35 64 35 66 66 3b 0a 20 20 20  or: #d5d5ff;.   
7640: 20 40 20 20 20 62 6f 72 64 65 72 3a 20 31 70 78   @   border: 1px
7650: 20 62 6c 75 65 20 73 6f 6c 69 64 3b 0a 20 20 7d   blue solid;.  }
7660: 2c 0a 20 20 7b 20 22 70 2e 6d 69 73 73 69 6e 67  ,.  { "p.missing
7670: 50 72 69 76 22 2c 0a 20 20 20 20 22 66 6f 72 6d  Priv",.    "form
7680: 61 74 20 66 6f 72 20 6d 69 73 73 69 6e 67 20 70  at for missing p
7690: 72 69 76 69 6c 65 67 65 73 20 6e 6f 74 65 20 6f  rivileges note o
76a0: 6e 20 75 73 65 72 20 73 65 74 75 70 20 70 61 67  n user setup pag
76b0: 65 22 2c 0a 20 20 20 20 40 20 20 63 6f 6c 6f 72  e",.    @  color
76c0: 3a 20 62 6c 75 65 3b 0a 20 20 7d 2c 0a 20 20 7b  : blue;.  },.  {
76d0: 20 22 73 70 61 6e 2e 77 69 6b 69 72 75 6c 65 48   "span.wikiruleH
76e0: 65 61 64 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61  ead",.    "forma
76f0: 74 20 66 6f 72 20 6c 65 61 64 69 6e 67 20 74 65  t for leading te
7700: 78 74 20 69 6e 20 77 69 6b 69 72 75 6c 65 73 20  xt in wikirules 
7710: 64 65 66 69 6e 69 74 69 6f 6e 73 22 2c 0a 20 20  definitions",.  
7720: 20 20 40 20 20 20 66 6f 6e 74 2d 77 65 69 67 68    @   font-weigh
7730: 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20  t: bold;.  },.  
7740: 7b 20 22 74 64 2e 74 6b 74 44 73 70 4c 61 62 65  { "td.tktDspLabe
7750: 6c 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74 20  l",.    "format 
7760: 66 6f 72 20 6c 61 62 65 6c 73 20 6f 6e 20 74 69  for labels on ti
7770: 63 6b 65 74 20 64 69 73 70 6c 61 79 20 70 61 67  cket display pag
7780: 65 22 2c 0a 20 20 20 20 40 20 20 20 74 65 78 74  e",.    @   text
7790: 2d 61 6c 69 67 6e 3a 20 72 69 67 68 74 3b 0a 20  -align: right;. 
77a0: 20 7d 2c 0a 20 20 7b 20 22 74 64 2e 74 6b 74 44   },.  { "td.tktD
77b0: 73 70 56 61 6c 75 65 22 2c 0a 20 20 20 20 22 66  spValue",.    "f
77c0: 6f 72 6d 61 74 20 66 6f 72 20 76 61 6c 75 65 73  ormat for values
77d0: 20 6f 6e 20 74 69 63 6b 65 74 20 64 69 73 70 6c   on ticket displ
77e0: 61 79 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20  ay page",.    @ 
77f0: 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 6c 65    text-align: le
7800: 66 74 3b 0a 20 20 20 20 40 20 20 20 76 65 72 74  ft;.    @   vert
7810: 69 63 61 6c 2d 61 6c 69 67 6e 3a 20 74 6f 70 3b  ical-align: top;
7820: 0a 20 20 20 20 40 20 20 20 62 61 63 6b 67 72 6f  .    @   backgro
7830: 75 6e 64 2d 63 6f 6c 6f 72 3a 20 23 64 30 64 30  und-color: #d0d0
7840: 64 30 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 73 70  d0;.  },.  { "sp
7850: 61 6e 2e 74 6b 74 45 72 72 6f 72 22 2c 0a 20 20  an.tktError",.  
7860: 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20 74 69    "format for ti
7870: 63 6b 65 74 20 65 72 72 6f 72 20 6d 65 73 73 61  cket error messa
7880: 67 65 73 22 2c 0a 20 20 20 20 40 20 20 20 63 6f  ges",.    @   co
7890: 6c 6f 72 3a 20 72 65 64 3b 0a 20 20 20 20 40 20  lor: red;.    @ 
78a0: 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62    font-weight: b
78b0: 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74  old;.  },.  { "t
78c0: 61 62 6c 65 2e 72 70 74 65 64 69 74 65 78 22 2c  able.rpteditex",
78d0: 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72  .    "format for
78e0: 20 65 78 61 6d 70 6c 65 20 74 61 62 6c 65 73 20   example tables 
78f0: 6f 6e 20 74 68 65 20 72 65 70 6f 72 74 20 65 64  on the report ed
7900: 69 74 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20  it page",.    @ 
7910: 20 20 66 6c 6f 61 74 3a 20 72 69 67 68 74 3b 0a    float: right;.
7920: 20 20 20 20 40 20 20 20 6d 61 72 67 69 6e 3a 20      @   margin: 
7930: 30 3b 0a 20 20 20 20 40 20 20 20 70 61 64 64 69  0;.    @   paddi
7940: 6e 67 3a 20 30 3b 0a 20 20 20 20 40 20 20 20 77  ng: 0;.    @   w
7950: 69 64 74 68 3a 20 31 32 35 70 78 3b 0a 20 20 20  idth: 125px;.   
7960: 20 40 20 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a   @   text-align:
7970: 20 63 65 6e 74 65 72 3b 0a 20 20 20 20 40 20 20   center;.    @  
7980: 20 62 6f 72 64 65 72 2d 63 6f 6c 6c 61 70 73 65   border-collapse
7990: 3a 20 63 6f 6c 6c 61 70 73 65 3b 0a 20 20 20 20  : collapse;.    
79a0: 40 20 20 20 62 6f 72 64 65 72 2d 73 70 61 63 69  @   border-spaci
79b0: 6e 67 3a 20 30 3b 0a 20 20 7d 2c 0a 20 20 7b 20  ng: 0;.  },.  { 
79c0: 22 74 61 62 6c 65 2e 72 65 70 6f 72 74 22 2c 0a  "table.report",.
79d0: 20 20 20 20 22 54 69 63 6b 65 74 20 72 65 70 6f      "Ticket repo
79e0: 72 74 20 74 61 62 6c 65 20 66 6f 72 6d 61 74 74  rt table formatt
79f0: 69 6e 67 22 2c 0a 20 20 20 20 40 20 20 20 62 6f  ing",.    @   bo
7a00: 72 64 65 72 2d 63 6f 6c 6c 61 70 73 65 3a 63 6f  rder-collapse:co
7a10: 6c 6c 61 70 73 65 3b 0a 20 20 20 20 40 20 20 20  llapse;.    @   
7a20: 62 6f 72 64 65 72 3a 20 31 70 78 20 73 6f 6c 69  border: 1px soli
7a30: 64 20 23 39 39 39 3b 0a 20 20 20 20 40 20 20 20  d #999;.    @   
7a40: 6d 61 72 67 69 6e 3a 20 31 65 6d 20 30 20 31 65  margin: 1em 0 1e
7a50: 6d 20 30 3b 0a 20 20 20 20 40 20 20 20 63 75 72  m 0;.    @   cur
7a60: 73 6f 72 3a 20 70 6f 69 6e 74 65 72 3b 0a 20 20  sor: pointer;.  
7a70: 7d 2c 0a 20 20 7b 20 22 74 64 2e 72 70 74 65 64  },.  { "td.rpted
7a80: 69 74 65 78 22 2c 0a 20 20 20 20 22 66 6f 72 6d  itex",.    "form
7a90: 61 74 20 66 6f 72 20 65 78 61 6d 70 6c 65 20 74  at for example t
7aa0: 61 62 6c 65 20 63 65 6c 6c 73 20 6f 6e 20 74 68  able cells on th
7ab0: 65 20 72 65 70 6f 72 74 20 65 64 69 74 20 70 61  e report edit pa
7ac0: 67 65 22 2c 0a 20 20 20 20 40 20 20 20 62 6f 72  ge",.    @   bor
7ad0: 64 65 72 2d 77 69 64 74 68 3a 20 74 68 69 6e 3b  der-width: thin;
7ae0: 0a 20 20 20 20 40 20 20 20 62 6f 72 64 65 72 2d  .    @   border-
7af0: 63 6f 6c 6f 72 3a 20 23 30 30 30 30 30 30 3b 0a  color: #000000;.
7b00: 20 20 20 20 40 20 20 20 62 6f 72 64 65 72 2d 73      @   border-s
7b10: 74 79 6c 65 3a 20 73 6f 6c 69 64 3b 0a 20 20 7d  tyle: solid;.  }
7b20: 2c 0a 20 20 7b 20 22 69 6e 70 75 74 2e 63 68 65  ,.  { "input.che
7b30: 63 6b 69 6e 55 73 65 72 43 6f 6c 6f 72 22 2c 0a  ckinUserColor",.
7b40: 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20      "format for 
7b50: 75 73 65 72 20 63 6f 6c 6f 72 20 69 6e 70 75 74  user color input
7b60: 20 6f 6e 20 63 68 65 63 6b 2d 69 6e 20 65 64 69   on check-in edi
7b70: 74 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20 2f  t page",.    @ /
7b80: 2a 20 6e 6f 20 73 70 65 63 69 61 6c 20 64 65 66  * no special def
7b90: 69 6e 69 74 69 6f 6e 73 2c 20 63 6c 61 73 73 20  initions, class 
7ba0: 64 65 66 69 6e 65 64 2c 20 74 6f 20 65 6e 61 62  defined, to enab
7bb0: 6c 65 20 63 6f 6c 6f 72 20 70 69 63 6b 65 72 73  le color pickers
7bc0: 2c 20 66 2e 65 2e 3a 0a 20 20 20 20 40 20 2a 2a  , f.e.:.    @ **
7bd0: 20 20 61 64 64 20 74 68 65 20 63 6f 6c 6f 72 20    add the color 
7be0: 70 69 63 6b 65 72 20 66 6f 75 6e 64 20 61 74 20  picker found at 
7bf0: 68 74 74 70 3a 6a 73 63 6f 6c 6f 72 2e 63 6f 6d  http:jscolor.com
7c00: 20 20 61 73 20 6a 61 76 61 20 73 63 72 69 70 74    as java script
7c10: 20 69 6e 63 6c 75 64 65 0a 20 20 20 20 40 20 2a   include.    @ *
7c20: 2a 20 20 74 6f 20 74 68 65 20 68 65 61 64 65 72  *  to the header
7c30: 20 61 6e 64 20 63 6f 6e 66 69 67 75 72 65 20 74   and configure t
7c40: 68 65 20 6a 61 76 61 20 73 63 72 69 70 74 20 66  he java script f
7c50: 69 6c 65 20 77 69 74 68 0a 20 20 20 20 40 20 2a  ile with.    @ *
7c60: 2a 20 20 20 31 2e 20 75 73 65 20 61 73 20 62 69  *   1. use as bi
7c70: 6e 64 43 6c 61 73 73 20 3a 63 68 65 63 6b 69 6e  ndClass :checkin
7c80: 55 73 65 72 43 6f 6c 6f 72 0a 20 20 20 20 40 20  UserColor.    @ 
7c90: 2a 2a 20 20 20 32 2e 20 63 68 61 6e 67 65 20 74  **   2. change t
7ca0: 68 65 20 64 65 66 61 75 6c 74 20 68 61 73 68 20  he default hash 
7cb0: 61 64 64 69 6e 67 20 62 65 68 61 76 69 6f 75 72  adding behaviour
7cc0: 20 74 6f 20 4f 4e 0a 20 20 20 20 40 20 2a 2a 20   to ON.    @ ** 
7cd0: 6f 72 20 63 68 61 6e 67 65 20 74 68 65 20 63 6c  or change the cl
7ce0: 61 73 73 20 64 65 66 69 74 69 6f 6e 20 6f 66 20  ass defition of 
7cf0: 65 6c 65 6d 65 6e 74 20 69 64 65 6e 74 69 66 69  element identifi
7d00: 65 64 20 62 79 20 69 64 3d 22 63 6c 72 63 75 73  ed by id="clrcus
7d10: 74 22 0a 20 20 20 20 40 20 2a 2a 20 74 6f 20 61  t".    @ ** to a
7d20: 20 73 74 61 6e 64 61 72 64 20 6a 73 63 6f 6c 6f   standard jscolo
7d30: 72 20 64 65 66 69 6e 69 74 69 6f 6e 20 77 69 74  r definition wit
7d40: 68 20 6a 61 76 61 20 73 63 72 69 70 74 20 69 6e  h java script in
7d50: 20 74 68 65 20 66 6f 6f 74 65 72 2e 20 2a 2f 0a   the footer. */.
7d60: 20 20 7d 2c 0a 20 20 7b 20 22 64 69 76 2e 65 6e    },.  { "div.en
7d70: 64 43 6f 6e 74 65 6e 74 22 2c 0a 20 20 20 20 22  dContent",.    "
7d80: 66 6f 72 6d 61 74 20 66 6f 72 20 65 6e 64 20 6f  format for end o
7d90: 66 20 63 6f 6e 74 65 6e 74 20 61 72 65 61 2c 20  f content area, 
7da0: 74 6f 20 62 65 20 75 73 65 64 20 74 6f 20 63 6c  to be used to cl
7db0: 65 61 72 20 70 61 67 65 20 66 6c 6f 77 2e 22 2c  ear page flow.",
7dc0: 0a 20 20 20 20 40 20 20 20 63 6c 65 61 72 3a 20  .    @   clear: 
7dd0: 62 6f 74 68 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  both;.  },.  { "
7de0: 70 2e 67 65 6e 65 72 61 6c 45 72 72 6f 72 22 2c  p.generalError",
7df0: 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72  .    "format for
7e00: 20 67 65 6e 65 72 61 6c 20 65 72 72 6f 72 73 22   general errors"
7e10: 2c 0a 20 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a  ,.    @   color:
7e20: 20 72 65 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22   red;.  },.  { "
7e30: 70 2e 74 6b 74 73 65 74 75 70 45 72 72 6f 72 22  p.tktsetupError"
7e40: 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f  ,.    "format fo
7e50: 72 20 74 6b 74 73 65 74 75 70 20 65 72 72 6f 72  r tktsetup error
7e60: 73 22 2c 0a 20 20 20 20 40 20 20 20 63 6f 6c 6f  s",.    @   colo
7e70: 72 3a 20 72 65 64 3b 0a 20 20 20 20 40 20 20 20  r: red;.    @   
7e80: 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 6f 6c  font-weight: bol
7e90: 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 70 2e 78  d;.  },.  { "p.x
7ea0: 66 65 72 73 65 74 75 70 45 72 72 6f 72 22 2c 0a  fersetupError",.
7eb0: 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20      "format for 
7ec0: 78 66 65 72 73 65 74 75 70 20 65 72 72 6f 72 73  xfersetup errors
7ed0: 22 2c 0a 20 20 20 20 40 20 20 20 63 6f 6c 6f 72  ",.    @   color
7ee0: 3a 20 72 65 64 3b 0a 20 20 20 20 40 20 20 20 66  : red;.    @   f
7ef0: 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 6f 6c 64  ont-weight: bold
7f00: 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 70 2e 74 68  ;.  },.  { "p.th
7f10: 6d 61 69 6e 45 72 72 6f 72 22 2c 0a 20 20 20 20  mainError",.    
7f20: 22 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 20 73  "format for th s
7f30: 63 72 69 70 74 20 65 72 72 6f 72 73 22 2c 0a 20  cript errors",. 
7f40: 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 72 65     @   color: re
7f50: 64 3b 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d  d;.    @   font-
7f60: 77 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20  weight: bold;.  
7f70: 7d 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 74 68 54  },.  { "span.thT
7f80: 72 61 63 65 22 2c 0a 20 20 20 20 22 66 6f 72 6d  race",.    "form
7f90: 61 74 20 66 6f 72 20 74 68 20 73 63 72 69 70 74  at for th script
7fa0: 20 74 72 61 63 65 20 6d 65 73 73 61 67 65 73 22   trace messages"
7fb0: 2c 0a 20 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a  ,.    @   color:
7fc0: 20 72 65 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22   red;.  },.  { "
7fd0: 70 2e 72 65 70 6f 72 74 45 72 72 6f 72 22 2c 0a  p.reportError",.
7fe0: 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20      "format for 
7ff0: 72 65 70 6f 72 74 20 63 6f 6e 66 69 67 75 72 61  report configura
8000: 74 69 6f 6e 20 65 72 72 6f 72 73 22 2c 0a 20 20  tion errors",.  
8010: 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 72 65 64    @   color: red
8020: 3b 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 77  ;.    @   font-w
8030: 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d  eight: bold;.  }
8040: 2c 0a 20 20 7b 20 22 62 6c 6f 63 6b 71 75 6f 74  ,.  { "blockquot
8050: 65 2e 72 65 70 6f 72 74 45 72 72 6f 72 22 2c 0a  e.reportError",.
8060: 20 20 20 20 22 66 6f 72 6d 61 74 20 66 6f 72 20      "format for 
8070: 72 65 70 6f 72 74 20 63 6f 6e 66 69 67 75 72 61  report configura
8080: 74 69 6f 6e 20 65 72 72 6f 72 73 22 2c 0a 20 20  tion errors",.  
8090: 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 72 65 64    @   color: red
80a0: 3b 0a 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 77  ;.    @   font-w
80b0: 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0a 20 20 7d  eight: bold;.  }
80c0: 2c 0a 20 20 7b 20 22 70 2e 6e 6f 4d 6f 72 65 53  ,.  { "p.noMoreS
80d0: 68 75 6e 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61  hun",.    "forma
80e0: 74 20 66 6f 72 20 61 72 74 69 66 61 63 74 20 6c  t for artifact l
80f0: 69 6e 65 73 2c 20 6e 6f 20 6c 6f 6e 67 65 72 20  ines, no longer 
8100: 73 68 75 6e 6e 65 64 22 2c 0a 20 20 20 20 40 20  shunned",.    @ 
8110: 20 20 63 6f 6c 6f 72 3a 20 62 6c 75 65 3b 0a 20    color: blue;. 
8120: 20 7d 2c 0a 20 20 7b 20 22 70 2e 73 68 75 6e 6e   },.  { "p.shunn
8130: 65 64 22 2c 0a 20 20 20 20 22 66 6f 72 6d 61 74  ed",.    "format
8140: 20 66 6f 72 20 61 72 74 69 66 61 63 74 20 6c 69   for artifact li
8150: 6e 65 73 20 62 65 65 69 6e 67 20 73 68 75 6e 6e  nes beeing shunn
8160: 65 64 22 2c 0a 20 20 20 20 40 20 20 20 63 6f 6c  ed",.    @   col
8170: 6f 72 3a 20 62 6c 75 65 3b 0a 20 20 7d 2c 0a 20  or: blue;.  },. 
8180: 20 7b 20 22 73 70 61 6e 2e 62 72 6f 6b 65 6e 6c   { "span.brokenl
8190: 69 6e 6b 22 2c 0a 20 20 20 20 22 61 20 62 72 6f  ink",.    "a bro
81a0: 6b 65 6e 20 68 79 70 65 72 6c 69 6e 6b 22 2c 0a  ken hyperlink",.
81b0: 20 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 72      @   color: r
81c0: 65 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 75 6c  ed;.  },.  { "ul
81d0: 2e 66 69 6c 65 6c 69 73 74 22 2c 0a 20 20 20 20  .filelist",.    
81e0: 22 4c 69 73 74 20 6f 66 20 66 69 6c 65 73 20 69  "List of files i
81f0: 6e 20 61 20 74 69 6d 65 6c 69 6e 65 22 2c 0a 20  n a timeline",. 
8200: 20 20 20 40 20 20 20 6d 61 72 67 69 6e 2d 74 6f     @   margin-to
8210: 70 3a 20 33 70 78 3b 0a 20 20 20 20 40 20 20 20  p: 3px;.    @   
8220: 6c 69 6e 65 2d 68 65 69 67 68 74 3a 20 31 30 30  line-height: 100
8230: 25 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 61 62  %;.  },.  { "tab
8240: 6c 65 2e 73 62 73 64 69 66 66 63 6f 6c 73 22 2c  le.sbsdiffcols",
8250: 0a 20 20 20 20 22 73 69 64 65 2d 62 79 2d 73 69  .    "side-by-si
8260: 64 65 20 64 69 66 66 20 64 69 73 70 6c 61 79 20  de diff display 
8270: 28 63 6f 6c 75 6d 6e 2d 62 61 73 65 64 29 22 2c  (column-based)",
8280: 0a 20 20 20 20 40 20 20 20 77 69 64 74 68 3a 20  .    @   width: 
8290: 39 30 25 3b 0a 20 20 20 20 40 20 20 20 62 6f 72  90%;.    @   bor
82a0: 64 65 72 2d 73 70 61 63 69 6e 67 3a 20 30 3b 0a  der-spacing: 0;.
82b0: 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 73 69 7a      @   font-siz
82c0: 65 3a 20 78 78 2d 73 6d 61 6c 6c 3b 0a 20 20 7d  e: xx-small;.  }
82d0: 2c 0a 20 20 7b 20 22 74 61 62 6c 65 2e 73 62 73  ,.  { "table.sbs
82e0: 64 69 66 66 63 6f 6c 73 20 74 64 22 2c 0a 20 20  diffcols td",.  
82f0: 20 20 22 73 62 73 20 64 69 66 66 20 74 61 62 6c    "sbs diff tabl
8300: 65 20 63 65 6c 6c 22 2c 0a 20 20 20 20 40 20 20  e cell",.    @  
8310: 20 70 61 64 64 69 6e 67 3a 20 30 3b 0a 20 20 20   padding: 0;.   
8320: 20 40 20 20 20 76 65 72 74 69 63 61 6c 2d 61 6c   @   vertical-al
8330: 69 67 6e 3a 20 74 6f 70 3b 0a 20 20 7d 2c 0a 20  ign: top;.  },. 
8340: 20 7b 20 22 74 61 62 6c 65 2e 73 62 73 64 69 66   { "table.sbsdif
8350: 66 63 6f 6c 73 20 70 72 65 22 2c 0a 20 20 20 20  fcols pre",.    
8360: 22 73 62 73 20 64 69 66 66 20 70 72 65 20 62 6c  "sbs diff pre bl
8370: 6f 63 6b 22 2c 0a 20 20 20 20 40 20 20 20 6d 61  ock",.    @   ma
8380: 72 67 69 6e 3a 20 30 3b 0a 20 20 20 20 40 20 20  rgin: 0;.    @  
8390: 20 70 61 64 64 69 6e 67 3a 20 30 3b 0a 20 20 20   padding: 0;.   
83a0: 20 40 20 20 20 62 6f 72 64 65 72 3a 20 30 3b 0a   @   border: 0;.
83b0: 20 20 20 20 40 20 20 20 66 6f 6e 74 2d 73 69 7a      @   font-siz
83c0: 65 3a 20 69 6e 68 65 72 69 74 3b 0a 20 20 20 20  e: inherit;.    
83d0: 40 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20  @   background: 
83e0: 69 6e 68 65 72 69 74 3b 0a 20 20 20 20 40 20 20  inherit;.    @  
83f0: 20 63 6f 6c 6f 72 3a 20 69 6e 68 65 72 69 74 3b   color: inherit;
8400: 0a 20 20 7d 2c 0a 20 20 7b 20 22 64 69 76 2e 64  .  },.  { "div.d
8410: 69 66 66 6c 6e 63 6f 6c 22 2c 0a 20 20 20 20 22  ifflncol",.    "
8420: 64 69 66 66 20 6c 69 6e 65 20 6e 75 6d 62 65 72  diff line number
8430: 20 63 6f 6c 75 6d 6e 22 2c 0a 20 20 20 20 40 20   column",.    @ 
8440: 20 20 70 61 64 64 69 6e 67 2d 72 69 67 68 74 3a    padding-right:
8450: 20 31 65 6d 3b 0a 20 20 20 20 40 20 20 20 74 65   1em;.    @   te
8460: 78 74 2d 61 6c 69 67 6e 3a 20 72 69 67 68 74 3b  xt-align: right;
8470: 0a 20 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20  .    @   color: 
8480: 23 61 30 61 30 61 30 3b 0a 20 20 7d 2c 0a 20 20  #a0a0a0;.  },.  
8490: 7b 20 22 64 69 76 2e 64 69 66 66 74 78 74 63 6f  { "div.difftxtco
84a0: 6c 22 2c 0a 20 20 20 20 22 64 69 66 66 20 74 65  l",.    "diff te
84b0: 78 74 20 63 6f 6c 75 6d 6e 22 2c 0a 20 20 20 20  xt column",.    
84c0: 40 20 20 20 77 69 64 74 68 3a 20 34 35 65 6d 3b  @   width: 45em;
84d0: 0a 20 20 20 20 40 20 20 20 6f 76 65 72 66 6c 6f  .    @   overflo
84e0: 77 2d 78 3a 20 61 75 74 6f 3b 0a 20 20 7d 2c 0a  w-x: auto;.  },.
84f0: 20 20 7b 20 22 64 69 76 2e 64 69 66 66 6d 6b 72    { "div.diffmkr
8500: 63 6f 6c 22 2c 0a 20 20 20 20 22 64 69 66 66 20  col",.    "diff 
8510: 6d 61 72 6b 65 72 20 63 6f 6c 75 6d 6e 22 2c 0a  marker column",.
8520: 20 20 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a      @   padding:
8530: 20 30 20 31 65 6d 3b 0a 20 20 7d 2c 0a 20 20 7b   0 1em;.  },.  {
8540: 20 22 73 70 61 6e 2e 64 69 66 66 63 68 6e 67 22   "span.diffchng"
8550: 2c 0a 20 20 20 20 22 63 68 61 6e 67 65 73 20 69  ,.    "changes i
8560: 6e 20 61 20 64 69 66 66 22 2c 0a 20 20 20 20 40  n a diff",.    @
8570: 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f     background-co
8580: 6c 6f 72 3a 20 23 63 30 63 30 66 66 3b 0a 20 20  lor: #c0c0ff;.  
8590: 7d 2c 0a 20 20 7b 20 22 73 70 61 6e 2e 64 69 66  },.  { "span.dif
85a0: 66 61 64 64 22 2c 0a 20 20 20 20 22 61 64 64 65  fadd",.    "adde
85b0: 64 20 63 6f 64 65 20 69 6e 20 61 20 64 69 66 66  d code in a diff
85c0: 22 2c 0a 20 20 20 20 40 20 20 20 62 61 63 6b 67  ",.    @   backg
85d0: 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 23 63 30  round-color: #c0
85e0: 66 66 63 30 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  ffc0;.  },.  { "
85f0: 73 70 61 6e 2e 64 69 66 66 72 6d 22 2c 0a 20 20  span.diffrm",.  
8600: 20 20 22 64 65 6c 65 74 65 64 20 69 6e 20 61 20    "deleted in a 
8610: 64 69 66 66 22 2c 0a 20 20 20 20 40 20 20 20 62  diff",.    @   b
8620: 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a  ackground-color:
8630: 20 23 66 66 63 38 63 38 3b 0a 20 20 7d 2c 0a 20   #ffc8c8;.  },. 
8640: 20 7b 20 22 73 70 61 6e 2e 64 69 66 66 68 72 22   { "span.diffhr"
8650: 2c 0a 20 20 20 20 22 73 75 70 70 72 65 73 73 65  ,.    "suppresse
8660: 64 20 6c 69 6e 65 73 20 69 6e 20 61 20 64 69 66  d lines in a dif
8670: 66 22 2c 0a 20 20 20 20 40 20 20 20 64 69 73 70  f",.    @   disp
8680: 6c 61 79 3a 20 69 6e 6c 69 6e 65 2d 62 6c 6f 63  lay: inline-bloc
8690: 6b 3b 0a 20 20 20 20 40 20 20 20 6d 61 72 67 69  k;.    @   margi
86a0: 6e 3a 20 2e 35 65 6d 20 30 20 31 65 6d 3b 0a 20  n: .5em 0 1em;. 
86b0: 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 23 30     @   color: #0
86c0: 30 30 30 66 66 3b 0a 20 20 7d 2c 0a 20 20 7b 20  000ff;.  },.  { 
86d0: 22 73 70 61 6e 2e 64 69 66 66 6c 6e 22 2c 0a 20  "span.diffln",. 
86e0: 20 20 20 22 6c 69 6e 65 20 6e 75 6d 62 65 72 73     "line numbers
86f0: 20 69 6e 20 61 20 64 69 66 66 22 2c 0a 20 20 20   in a diff",.   
8700: 20 40 20 20 20 63 6f 6c 6f 72 3a 20 23 61 30 61   @   color: #a0a
8710: 30 61 30 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 73  0a0;.  },.  { "s
8720: 70 61 6e 2e 6d 6f 64 70 65 6e 64 69 6e 67 22 2c  pan.modpending",
8730: 0a 20 20 20 20 22 4d 6f 64 65 72 61 74 69 6f 6e  .    "Moderation
8740: 20 50 65 6e 64 69 6e 67 20 6d 65 73 73 61 67 65   Pending message
8750: 20 6f 6e 20 74 69 6d 65 6c 69 6e 65 22 2c 0a 20   on timeline",. 
8760: 20 20 20 40 20 20 20 63 6f 6c 6f 72 3a 20 23 62     @   color: #b
8770: 30 33 38 30 30 3b 0a 20 20 20 20 40 20 20 20 66  03800;.    @   f
8780: 6f 6e 74 2d 73 74 79 6c 65 3a 20 69 74 61 6c 69  ont-style: itali
8790: 63 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 70 72 65  c;.  },.  { "pre
87a0: 2e 74 68 31 72 65 73 75 6c 74 22 2c 0a 20 20 20  .th1result",.   
87b0: 20 22 66 6f 72 6d 61 74 20 66 6f 72 20 74 68 31   "format for th1
87c0: 20 73 63 72 69 70 74 20 72 65 73 75 6c 74 73 22   script results"
87d0: 2c 0a 20 20 20 20 40 20 20 20 77 68 69 74 65 2d  ,.    @   white-
87e0: 73 70 61 63 65 3a 20 70 72 65 2d 77 72 61 70 3b  space: pre-wrap;
87f0: 0a 20 20 20 20 40 20 20 20 77 6f 72 64 2d 77 72  .    @   word-wr
8800: 61 70 3a 20 62 72 65 61 6b 2d 77 6f 72 64 3b 0a  ap: break-word;.
8810: 20 20 7d 2c 0a 20 20 7b 20 22 70 72 65 2e 74 68    },.  { "pre.th
8820: 31 65 72 72 6f 72 22 2c 0a 20 20 20 20 22 66 6f  1error",.    "fo
8830: 72 6d 61 74 20 66 6f 72 20 74 68 31 20 73 63 72  rmat for th1 scr
8840: 69 70 74 20 65 72 72 6f 72 73 22 2c 0a 20 20 20  ipt errors",.   
8850: 20 40 20 20 20 77 68 69 74 65 2d 73 70 61 63 65   @   white-space
8860: 3a 20 70 72 65 2d 77 72 61 70 3b 0a 20 20 20 20  : pre-wrap;.    
8870: 40 20 20 20 77 6f 72 64 2d 77 72 61 70 3a 20 62  @   word-wrap: b
8880: 72 65 61 6b 2d 77 6f 72 64 3b 0a 20 20 20 20 40  reak-word;.    @
8890: 20 20 20 63 6f 6c 6f 72 3a 20 72 65 64 3b 0a 20     color: red;. 
88a0: 20 7d 2c 0a 20 20 7b 20 22 74 61 62 6c 65 2e 6c   },.  { "table.l
88b0: 61 62 65 6c 2d 76 61 6c 75 65 20 74 68 22 2c 0a  abel-value th",.
88c0: 20 20 20 20 22 54 68 65 20 6c 61 62 65 6c 2f 76      "The label/v
88d0: 61 6c 75 65 20 70 61 69 72 73 20 6f 6e 20 28 66  alue pairs on (f
88e0: 6f 72 20 65 78 61 6d 70 6c 65 29 20 74 68 65 20  or example) the 
88f0: 63 69 20 70 61 67 65 22 2c 0a 20 20 20 20 40 20  ci page",.    @ 
8900: 20 20 76 65 72 74 69 63 61 6c 2d 61 6c 69 67 6e    vertical-align
8910: 3a 20 74 6f 70 3b 0a 20 20 20 20 40 20 20 20 74  : top;.    @   t
8920: 65 78 74 2d 61 6c 69 67 6e 3a 20 72 69 67 68 74  ext-align: right
8930: 3b 0a 20 20 20 20 40 20 20 20 70 61 64 64 69 6e  ;.    @   paddin
8940: 67 3a 20 30 2e 32 65 78 20 32 65 78 3b 0a 20 20  g: 0.2ex 2ex;.  
8950: 7d 2c 0a 20 20 7b 20 22 2e 73 74 61 74 69 73 74  },.  { ".statist
8960: 69 63 73 2d 72 65 70 6f 72 74 2d 67 72 61 70 68  ics-report-graph
8970: 2d 6c 69 6e 65 22 2c 0a 20 20 20 20 22 66 6f 72  -line",.    "for
8980: 20 74 68 65 20 2f 72 65 70 6f 72 74 73 20 76 69   the /reports vi
8990: 65 77 73 22 2c 0a 20 20 20 20 40 20 20 20 62 61  ews",.    @   ba
89a0: 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20  ckground-color: 
89b0: 23 34 34 36 39 37 39 3b 0a 20 20 7d 2c 0a 20 20  #446979;.  },.  
89c0: 7b 20 22 2e 73 74 61 74 69 73 74 69 63 73 2d 72  { ".statistics-r
89d0: 65 70 6f 72 74 2d 74 61 62 6c 65 2d 65 76 65 6e  eport-table-even
89e0: 74 73 20 74 68 22 2c 0a 20 20 20 20 22 22 2c 0a  ts th",.    "",.
89f0: 20 20 20 20 40 20 20 20 70 61 64 64 69 6e 67 3a      @   padding:
8a00: 20 30 20 31 65 6d 20 30 20 31 65 6d 3b 0a 20 20   0 1em 0 1em;.  
8a10: 7d 2c 0a 20 20 7b 20 22 2e 73 74 61 74 69 73 74  },.  { ".statist
8a20: 69 63 73 2d 72 65 70 6f 72 74 2d 74 61 62 6c 65  ics-report-table
8a30: 2d 65 76 65 6e 74 73 20 74 64 22 2c 0a 20 20 20  -events td",.   
8a40: 20 22 22 2c 0a 20 20 20 20 40 20 20 20 70 61 64   "",.    @   pad
8a50: 64 69 6e 67 3a 20 30 2e 31 65 6d 20 31 65 6d 20  ding: 0.1em 1em 
8a60: 30 2e 31 65 6d 20 31 65 6d 3b 0a 20 20 7d 2c 0a  0.1em 1em;.  },.
8a70: 20 20 7b 20 22 2e 73 74 61 74 69 73 74 69 63 73    { ".statistics
8a80: 2d 72 65 70 6f 72 74 2d 72 6f 77 2d 79 65 61 72  -report-row-year
8a90: 22 2c 0a 20 20 20 20 22 22 2c 0a 20 20 20 20 40  ",.    "",.    @
8aa0: 20 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 6c     text-align: l
8ab0: 65 66 74 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e  eft;.  },.  { ".
8ac0: 73 74 61 74 69 73 74 69 63 73 2d 72 65 70 6f 72  statistics-repor
8ad0: 74 2d 77 65 65 6b 2d 6e 75 6d 62 65 72 2d 6c 61  t-week-number-la
8ae0: 62 65 6c 22 2c 0a 20 20 20 20 22 66 6f 72 20 74  bel",.    "for t
8af0: 68 65 20 2f 73 74 61 74 73 5f 72 65 70 6f 72 74  he /stats_report
8b00: 20 76 69 65 77 73 22 2c 0a 20 20 20 20 40 20 74   views",.    @ t
8b10: 65 78 74 2d 61 6c 69 67 6e 3a 20 72 69 67 68 74  ext-align: right
8b20: 3b 0a 20 20 20 20 40 20 66 6f 6e 74 2d 73 69 7a  ;.    @ font-siz
8b30: 65 3a 20 30 2e 38 65 6d 3b 0a 20 20 7d 2c 0a 20  e: 0.8em;.  },. 
8b40: 20 7b 20 22 2e 73 74 61 74 69 73 74 69 63 73 2d   { ".statistics-
8b50: 72 65 70 6f 72 74 2d 77 65 65 6b 2d 6f 66 2d 79  report-week-of-y
8b60: 65 61 72 2d 6c 69 73 74 22 2c 0a 20 20 20 20 22  ear-list",.    "
8b70: 66 6f 72 20 74 68 65 20 2f 73 74 61 74 73 5f 72  for the /stats_r
8b80: 65 70 6f 72 74 20 76 69 65 77 73 22 2c 0a 20 20  eport views",.  
8b90: 20 20 40 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 30    @ font-size: 0
8ba0: 2e 38 65 6d 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22  .8em;.  },.  { "
8bb0: 74 72 2e 72 6f 77 30 22 2c 0a 20 20 20 20 22 65  tr.row0",.    "e
8bc0: 76 65 6e 20 74 61 62 6c 65 20 72 6f 77 20 63 6f  ven table row co
8bd0: 6c 6f 72 22 2c 0a 20 20 20 20 40 20 2f 2a 20 75  lor",.    @ /* u
8be0: 73 65 20 64 65 66 61 75 6c 74 20 2a 2f 0a 20 20  se default */.  
8bf0: 7d 2c 0a 20 20 7b 20 22 74 72 2e 72 6f 77 31 22  },.  { "tr.row1"
8c00: 2c 0a 20 20 20 20 22 6f 64 64 20 74 61 62 6c 65  ,.    "odd table
8c10: 20 72 6f 77 20 63 6f 6c 6f 72 22 2c 0a 20 20 20   row color",.   
8c20: 20 40 20 2f 2a 20 55 73 65 20 64 65 66 61 75 6c   @ /* Use defaul
8c30: 74 20 2a 2f 0a 20 20 7d 2c 0a 20 20 7b 20 22 23  t */.  },.  { "#
8c40: 75 73 65 74 75 70 45 64 69 74 43 61 70 61 62 69  usetupEditCapabi
8c50: 6c 69 74 79 22 2c 0a 20 20 20 20 22 66 6f 72 6d  lity",.    "form
8c60: 61 74 20 66 6f 72 20 63 61 70 61 62 69 6c 69 74  at for capabilit
8c70: 69 65 73 20 73 74 72 69 6e 67 2c 20 6d 65 6e 74  ies string, ment
8c80: 69 6f 6e 65 64 20 6f 6e 20 74 68 65 20 75 73 65  ioned on the use
8c90: 72 20 65 64 69 74 20 70 61 67 65 22 2c 0a 20 20  r edit page",.  
8ca0: 20 20 40 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a    @ font-weight:
8cb0: 20 62 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20   bold;.  },.  { 
8cc0: 22 23 63 61 6e 76 61 73 22 2c 20 22 74 69 6d 65  "#canvas", "time
8cd0: 6c 69 6e 65 20 67 72 61 70 68 20 6e 6f 64 65 20  line graph node 
8ce0: 63 6f 6c 6f 72 73 22 2c 0a 20 20 20 20 40 20 63  colors",.    @ c
8cf0: 6f 6c 6f 72 3a 20 62 6c 61 63 6b 3b 0a 20 20 20  olor: black;.   
8d00: 20 40 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f   @ background-co
8d10: 6c 6f 72 3a 20 77 68 69 74 65 3b 0a 20 20 7d 2c  lor: white;.  },
8d20: 0a 20 20 7b 20 22 74 61 62 6c 65 2e 61 64 6d 69  .  { "table.admi
8d30: 6e 4c 6f 67 54 61 62 6c 65 22 2c 0a 20 20 20 20  nLogTable",.    
8d40: 22 43 6c 61 73 73 20 66 6f 72 20 74 68 65 20 2f  "Class for the /
8d50: 61 64 6d 69 6e 5f 6c 6f 67 20 74 61 62 6c 65 22  admin_log table"
8d60: 2c 0a 20 20 20 20 40 20 74 65 78 74 2d 61 6c 69  ,.    @ text-ali
8d70: 67 6e 3a 20 6c 65 66 74 3b 0a 20 20 7d 2c 0a 20  gn: left;.  },. 
8d80: 20 7b 20 22 2e 61 64 6d 69 6e 4c 6f 67 54 61 62   { ".adminLogTab
8d90: 6c 65 20 2e 61 64 6d 69 6e 54 69 6d 65 22 2c 0a  le .adminTime",.
8da0: 20 20 20 20 22 43 6c 61 73 73 20 66 6f 72 20 74      "Class for t
8db0: 68 65 20 2f 61 64 6d 69 6e 5f 6c 6f 67 20 74 61  he /admin_log ta
8dc0: 62 6c 65 22 2c 0a 20 20 20 20 40 20 74 65 78 74  ble",.    @ text
8dd0: 2d 61 6c 69 67 6e 3a 20 6c 65 66 74 3b 0a 20 20  -align: left;.  
8de0: 20 20 40 20 76 65 72 74 69 63 61 6c 2d 61 6c 69    @ vertical-ali
8df0: 67 6e 3a 20 74 6f 70 3b 0a 20 20 20 20 40 20 77  gn: top;.    @ w
8e00: 68 69 74 65 2d 73 70 61 63 65 3a 20 6e 6f 77 72  hite-space: nowr
8e10: 61 70 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 66  ap;.  },.  { ".f
8e20: 69 6c 65 61 67 65 20 74 61 62 6c 65 22 2c 0a 20  ileage table",. 
8e30: 20 20 20 22 54 68 65 20 66 69 6c 65 61 67 65 20     "The fileage 
8e40: 74 61 62 6c 65 22 2c 0a 20 20 20 20 40 20 62 6f  table",.    @ bo
8e50: 72 64 65 72 2d 73 70 61 63 69 6e 67 3a 20 30 3b  rder-spacing: 0;
8e60: 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 66 69 6c 65  .  },.  { ".file
8e70: 61 67 65 20 74 72 3a 68 6f 76 65 72 22 2c 0a 20  age tr:hover",. 
8e80: 20 20 20 22 4d 6f 75 73 65 2d 6f 76 65 72 20 65     "Mouse-over e
8e90: 66 66 65 63 74 73 20 66 6f 72 20 74 68 65 20 66  ffects for the f
8ea0: 69 6c 65 2d 61 67 65 20 74 61 62 6c 65 22 2c 0a  ile-age table",.
8eb0: 20 20 20 20 40 20 62 61 63 6b 67 72 6f 75 6e 64      @ background
8ec0: 2d 63 6f 6c 6f 72 3a 20 23 65 65 65 3b 0a 20 20  -color: #eee;.  
8ed0: 7d 2c 0a 20 20 7b 20 22 2e 66 69 6c 65 61 67 65  },.  { ".fileage
8ee0: 20 74 64 22 2c 0a 20 20 20 20 22 66 69 6c 65 61   td",.    "filea
8ef0: 67 65 20 74 61 62 6c 65 20 63 65 6c 6c 73 22 2c  ge table cells",
8f00: 0a 20 20 20 20 40 20 76 65 72 74 69 63 61 6c 2d  .    @ vertical-
8f10: 61 6c 69 67 6e 3a 20 74 6f 70 3b 0a 20 20 20 20  align: top;.    
8f20: 40 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 6c 65  @ text-align: le
8f30: 66 74 3b 0a 20 20 20 20 40 20 62 6f 72 64 65 72  ft;.    @ border
8f40: 2d 74 6f 70 3a 20 31 70 78 20 73 6f 6c 69 64 20  -top: 1px solid 
8f50: 23 64 64 64 3b 0a 20 20 20 20 40 20 70 61 64 64  #ddd;.    @ padd
8f60: 69 6e 67 2d 74 6f 70 3a 20 33 70 78 3b 0a 20 20  ing-top: 3px;.  
8f70: 7d 2c 0a 20 20 7b 20 22 2e 66 69 6c 65 61 67 65  },.  { ".fileage
8f80: 20 74 64 3a 66 69 72 73 74 2d 63 68 69 6c 64 22   td:first-child"
8f90: 2c 0a 20 20 20 20 22 66 69 6c 65 61 67 65 20 66  ,.    "fileage f
8fa0: 69 72 73 74 20 63 6f 6c 75 6d 6e 20 28 74 68 65  irst column (the
8fb0: 20 61 67 65 29 22 2c 0a 20 20 20 20 40 20 77 68   age)",.    @ wh
8fc0: 69 74 65 2d 73 70 61 63 65 3a 20 6e 6f 77 72 61  ite-space: nowra
8fd0: 70 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 66 69  p;.  },.  { ".fi
8fe0: 6c 65 61 67 65 20 74 64 3a 6e 74 68 2d 63 68 69  leage td:nth-chi
8ff0: 6c 64 28 32 29 22 2c 0a 20 20 20 20 22 66 69 6c  ld(2)",.    "fil
9000: 65 61 67 65 20 73 65 63 6f 6e 64 20 63 6f 6c 75  eage second colu
9010: 6d 6e 20 28 74 68 65 20 66 69 6c 65 6e 61 6d 65  mn (the filename
9020: 29 22 2c 0a 20 20 20 20 40 20 70 61 64 64 69 6e  )",.    @ paddin
9030: 67 2d 6c 65 66 74 3a 20 31 65 6d 3b 0a 20 20 20  g-left: 1em;.   
9040: 20 40 20 70 61 64 64 69 6e 67 2d 72 69 67 68 74   @ padding-right
9050: 3a 20 31 65 6d 3b 0a 20 20 7d 2c 0a 20 20 7b 20  : 1em;.  },.  { 
9060: 22 2e 66 69 6c 65 61 67 65 20 74 64 3a 6e 74 68  ".fileage td:nth
9070: 2d 63 68 69 6c 64 28 33 29 22 2c 0a 20 20 20 20  -child(3)",.    
9080: 22 66 69 6c 65 61 67 65 20 74 68 69 72 64 20 63  "fileage third c
9090: 6f 6c 75 6d 6e 20 28 74 68 65 20 63 68 65 63 6b  olumn (the check
90a0: 2d 69 6e 20 63 6f 6d 6d 65 6e 74 29 22 2c 0a 20  -in comment)",. 
90b0: 20 20 20 40 20 77 6f 72 64 2d 77 72 61 70 3a 20     @ word-wrap: 
90c0: 62 72 65 61 6b 2d 77 6f 72 64 3b 0a 20 20 20 20  break-word;.    
90d0: 40 20 6d 61 78 2d 77 69 64 74 68 3a 20 35 30 25  @ max-width: 50%
90e0: 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 62 72 6c  ;.  },.  { ".brl
90f0: 69 73 74 20 74 61 62 6c 65 22 2c 20 20 22 54 68  ist table",  "Th
9100: 65 20 6c 69 73 74 20 6f 66 20 62 72 61 6e 63 68  e list of branch
9110: 65 73 22 2c 0a 20 20 20 20 40 20 62 6f 72 64 65  es",.    @ borde
9120: 72 2d 73 70 61 63 69 6e 67 3a 20 30 3b 0a 20 20  r-spacing: 0;.  
9130: 7d 2c 0a 20 20 7b 20 22 2e 62 72 6c 69 73 74 20  },.  { ".brlist 
9140: 74 61 62 6c 65 20 74 68 22 2c 20 20 22 42 72 61  table th",  "Bra
9150: 6e 63 68 20 6c 69 73 74 20 74 61 62 6c 65 20 68  nch list table h
9160: 65 61 64 65 72 73 22 2c 0a 20 20 20 20 40 20 74  eaders",.    @ t
9170: 65 78 74 2d 61 6c 69 67 6e 3a 20 6c 65 66 74 3b  ext-align: left;
9180: 0a 20 20 20 20 40 20 70 61 64 64 69 6e 67 3a 20  .    @ padding: 
9190: 30 70 78 20 31 65 6d 20 30 2e 35 65 78 20 30 70  0px 1em 0.5ex 0p
91a0: 78 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 2e 62 72  x;.  },.  { ".br
91b0: 6c 69 73 74 20 74 61 62 6c 65 20 74 64 22 2c 20  list table td", 
91c0: 20 22 42 72 61 6e 63 68 20 6c 69 73 74 20 74 61   "Branch list ta
91d0: 62 6c 65 20 68 65 61 64 65 72 73 22 2c 0a 20 20  ble headers",.  
91e0: 20 20 40 20 70 61 64 64 69 6e 67 3a 20 30 70 78    @ padding: 0px
91f0: 20 32 65 6d 20 30 70 78 20 30 70 78 3b 0a 20 20   2em 0px 0px;.  
9200: 20 20 40 20 77 68 69 74 65 2d 73 70 61 63 65 3a    @ white-space:
9210: 20 6e 6f 77 72 61 70 3b 0a 20 20 7d 2c 0a 20 20   nowrap;.  },.  
9220: 7b 20 22 74 68 2e 73 6f 72 74 3a 61 66 74 65 72  { "th.sort:after
9230: 22 2c 0a 20 20 20 20 22 47 65 6e 65 72 61 6c 20  ",.    "General 
9240: 73 74 79 6c 65 73 20 66 6f 72 20 73 6f 72 74 61  styles for sorta
9250: 62 6c 65 20 63 6f 6c 75 6d 6e 20 6d 61 72 6b 65  ble column marke
9260: 72 22 2c 0a 20 20 20 20 40 20 6d 61 72 67 69 6e  r",.    @ margin
9270: 2d 6c 65 66 74 3a 20 2e 34 65 6d 3b 0a 20 20 20  -left: .4em;.   
9280: 20 40 20 63 75 72 73 6f 72 3a 20 70 6f 69 6e 74   @ cursor: point
9290: 65 72 3b 0a 20 20 20 20 40 20 74 65 78 74 2d 73  er;.    @ text-s
92a0: 68 61 64 6f 77 3a 20 30 20 30 20 30 20 23 30 30  hadow: 0 0 0 #00
92b0: 30 3b 20 2f 2a 20 4d 61 6b 65 73 20 61 72 72 6f  0; /* Makes arro
92c0: 77 20 64 61 72 6b 65 72 20 2a 2f 0a 20 20 7d 2c  w darker */.  },
92d0: 0a 20 20 7b 20 22 74 68 2e 73 6f 72 74 2e 6e 6f  .  { "th.sort.no
92e0: 6e 65 3a 61 66 74 65 72 22 2c 0a 20 20 20 20 22  ne:after",.    "
92f0: 4e 6f 6e 65 20 73 6f 72 74 20 63 6f 6c 75 6d 6e  None sort column
9300: 20 6d 61 72 6b 65 72 22 2c 0a 20 20 20 20 40 20   marker",.    @ 
9310: 63 6f 6e 74 65 6e 74 3a 20 27 5c 32 36 36 36 27  content: '\2666'
9320: 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 74 68 2e 73  ;.  },.  { "th.s
9330: 6f 72 74 2e 61 73 63 3a 61 66 74 65 72 22 2c 0a  ort.asc:after",.
9340: 20 20 20 20 22 41 73 63 65 6e 64 69 6e 67 20 73      "Ascending s
9350: 6f 72 74 20 63 6f 6c 75 6d 6e 20 6d 61 72 6b 65  ort column marke
9360: 72 22 2c 0a 20 20 20 20 40 20 63 6f 6e 74 65 6e  r",.    @ conten
9370: 74 3a 20 27 5c 32 31 39 33 27 3b 0a 20 20 7d 2c  t: '\2193';.  },
9380: 0a 20 20 7b 20 22 74 68 2e 73 6f 72 74 2e 64 65  .  { "th.sort.de
9390: 73 63 3a 61 66 74 65 72 22 2c 0a 20 20 20 20 22  sc:after",.    "
93a0: 44 65 73 63 65 6e 64 69 6e 67 20 73 6f 72 74 20  Descending sort 
93b0: 63 6f 6c 75 6d 6e 20 6d 61 72 6b 65 72 22 2c 0a  column marker",.
93c0: 20 20 20 20 40 20 63 6f 6e 74 65 6e 74 3a 20 27      @ content: '
93d0: 5c 32 31 39 31 27 3b 0a 20 20 7d 2c 0a 20 20 7b  \2191';.  },.  {
93e0: 20 22 73 70 61 6e 2e 73 6e 69 70 70 65 74 3e 6d   "span.snippet>m
93f0: 61 72 6b 22 2c 0a 20 20 20 20 22 53 65 61 72 63  ark",.    "Searc
9400: 68 20 6d 61 72 6b 75 70 22 2c 0a 20 20 20 20 40  h markup",.    @
9410: 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f   background-colo
9420: 72 3a 20 69 6e 68 65 72 69 74 3b 0a 20 20 20 20  r: inherit;.    
9430: 40 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62  @ font-weight: b
9440: 6f 6c 64 3b 0a 20 20 7d 2c 0a 20 20 7b 20 22 64  old;.  },.  { "d
9450: 69 76 2e 73 65 61 72 63 68 46 6f 72 6d 22 2c 0a  iv.searchForm",.
9460: 20 20 20 20 22 43 6f 6e 74 61 69 6e 65 72 20 66      "Container f
9470: 6f 72 20 74 68 65 20 73 65 61 72 63 68 20 74 65  or the search te
9480: 72 6d 73 20 65 6e 74 72 79 20 62 6f 78 22 2c 0a  rms entry box",.
9490: 20 20 20 20 40 20 74 65 78 74 2d 61 6c 69 67 6e      @ text-align
94a0: 3a 20 63 65 6e 74 65 72 3b 0a 20 20 7d 2c 0a 20  : center;.  },. 
94b0: 20 7b 20 22 70 2e 73 65 61 72 63 68 45 6d 70 74   { "p.searchEmpt
94c0: 79 22 2c 0a 20 20 20 20 22 4d 65 73 73 61 67 65  y",.    "Message
94d0: 20 65 78 70 6c 61 69 6e 69 6e 67 20 74 68 61 74   explaining that
94e0: 20 74 68 65 72 65 20 61 72 65 20 6e 6f 20 73 65   there are no se
94f0: 61 72 63 68 20 72 65 73 75 6c 74 73 22 2c 0a 20  arch results",. 
9500: 20 20 20 40 20 66 6f 6e 74 2d 73 74 79 6c 65 3a     @ font-style:
9510: 20 69 74 61 6c 69 63 3b 0a 20 20 7d 2c 0a 20 20   italic;.  },.  
9520: 7b 20 30 2c 0a 20 20 20 20 30 2c 0a 20 20 20 20  { 0,.    0,.    
9530: 30 0a 20 20 7d 0a 7d 3b 0a 0a 2f 2a 0a 2a 2a 20  0.  }.};../*.** 
9540: 41 70 70 65 6e 64 20 61 6c 6c 20 6f 66 20 74 68  Append all of th
9550: 65 20 64 65 66 61 75 6c 74 20 43 53 53 20 74 6f  e default CSS to
9560: 20 74 68 65 20 43 47 49 20 6f 75 74 70 75 74 2e   the CGI output.
9570: 0a 2a 2f 0a 76 6f 69 64 20 63 67 69 5f 61 70 70  .*/.void cgi_app
9580: 65 6e 64 5f 64 65 66 61 75 6c 74 5f 63 73 73 28  end_default_css(
9590: 76 6f 69 64 29 20 7b 0a 20 20 69 6e 74 20 69 3b  void) {.  int i;
95a0: 0a 0a 20 20 63 67 69 5f 70 72 69 6e 74 66 28 22  ..  cgi_printf("
95b0: 25 73 22 2c 20 62 75 69 6c 74 69 6e 5f 74 65 78  %s", builtin_tex
95c0: 74 28 22 73 6b 69 6e 73 2f 64 65 66 61 75 6c 74  t("skins/default
95d0: 2f 63 73 73 2e 74 78 74 22 29 29 3b 0a 20 20 66  /css.txt"));.  f
95e0: 6f 72 28 20 69 3d 30 3b 20 63 73 73 44 65 66 61  or( i=0; cssDefa
95f0: 75 6c 74 4c 69 73 74 5b 69 5d 2e 65 6c 65 6d 65  ultList[i].eleme
9600: 6e 74 43 6c 61 73 73 3b 20 69 2b 2b 20 29 7b 0a  ntClass; i++ ){.
9610: 20 20 20 20 69 66 28 20 63 73 73 44 65 66 61 75      if( cssDefau
9620: 6c 74 4c 69 73 74 5b 69 5d 2e 65 6c 65 6d 65 6e  ltList[i].elemen
9630: 74 43 6c 61 73 73 5b 30 5d 20 29 7b 0a 20 20 20  tClass[0] ){.   
9640: 20 20 20 63 67 69 5f 70 72 69 6e 74 66 28 22 2f     cgi_printf("/
9650: 2a 20 25 73 20 2a 2f 5c 6e 25 73 20 7b 5c 6e 25  * %s */\n%s {\n%
9660: 73 5c 6e 7d 5c 6e 5c 6e 22 2c 0a 20 20 20 20 20  s\n}\n\n",.     
9670: 20 20 20 20 20 20 20 20 20 20 20 20 63 73 73 44              cssD
9680: 65 66 61 75 6c 74 4c 69 73 74 5b 69 5d 2e 63 6f  efaultList[i].co
9690: 6d 6d 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20  mment,.         
96a0: 20 20 20 20 20 20 20 20 63 73 73 44 65 66 61 75          cssDefau
96b0: 6c 74 4c 69 73 74 5b 69 5d 2e 65 6c 65 6d 65 6e  ltList[i].elemen
96c0: 74 43 6c 61 73 73 2c 0a 20 20 20 20 20 20 20 20  tClass,.        
96d0: 20 20 20 20 20 20 20 20 20 63 73 73 44 65 66 61           cssDefa
96e0: 75 6c 74 4c 69 73 74 5b 69 5d 2e 76 61 6c 75 65  ultList[i].value
96f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9700: 20 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 7d 0a   );.    }.  }.}.
9710: 0a 2f 2a 0a 2a 2a 20 53 65 61 72 63 68 20 73 74  ./*.** Search st
9720: 72 69 6e 67 20 7a 48 61 79 73 74 61 63 6b 20 66  ring zHaystack f
9730: 6f 72 20 7a 4e 65 65 64 6c 65 2e 20 20 7a 4e 65  or zNeedle.  zNe
9740: 65 64 6c 65 20 6d 75 73 74 20 62 65 20 61 6e 20  edle must be an 
9750: 69 73 6f 6c 61 74 65 64 0a 2a 2a 20 77 6f 72 64  isolated.** word
9760: 20 77 69 74 68 20 73 70 61 63 65 20 6f 72 20 70   with space or p
9770: 75 6e 63 74 75 61 74 69 6f 6e 20 6f 6e 20 65 69  unctuation on ei
9780: 74 68 65 72 20 73 69 7a 65 2e 0a 2a 2a 0a 2a 2a  ther size..**.**
9790: 20 52 65 74 75 72 6e 20 74 72 75 65 20 69 66 20   Return true if 
97a0: 66 6f 75 6e 64 2e 20 20 52 65 74 75 72 6e 20 66  found.  Return f
97b0: 61 6c 73 65 20 69 66 20 6e 6f 74 20 66 6f 75 6e  alse if not foun
97c0: 64 0a 2a 2f 0a 73 74 61 74 69 63 20 69 6e 74 20  d.*/.static int 
97d0: 63 6f 6e 74 61 69 6e 73 53 74 72 69 6e 67 28 63  containsString(c
97e0: 6f 6e 73 74 20 63 68 61 72 20 2a 7a 48 61 79 73  onst char *zHays
97f0: 74 61 63 6b 2c 20 63 6f 6e 73 74 20 63 68 61 72  tack, const char
9800: 20 2a 7a 4e 65 65 64 6c 65 29 7b 0a 20 20 63 68   *zNeedle){.  ch
9810: 61 72 20 2a 7a 3b 0a 20 20 69 6e 74 20 6e 3b 0a  ar *z;.  int n;.
9820: 0a 20 20 77 68 69 6c 65 28 20 7a 48 61 79 73 74  .  while( zHayst
9830: 61 63 6b 5b 30 5d 20 29 7b 0a 20 20 20 20 7a 20  ack[0] ){.    z 
9840: 3d 20 73 74 72 73 74 72 28 7a 48 61 79 73 74 61  = strstr(zHaysta
9850: 63 6b 2c 20 7a 4e 65 65 64 6c 65 29 3b 0a 20 20  ck, zNeedle);.  
9860: 20 20 69 66 28 20 7a 3d 3d 30 20 29 20 72 65 74    if( z==0 ) ret
9870: 75 72 6e 20 30 3b 0a 20 20 20 20 6e 20 3d 20 28  urn 0;.    n = (
9880: 69 6e 74 29 73 74 72 6c 65 6e 28 7a 4e 65 65 64  int)strlen(zNeed
9890: 6c 65 29 3b 0a 20 20 20 20 69 66 28 20 28 7a 3d  le);.    if( (z=
98a0: 3d 7a 48 61 79 73 74 61 63 6b 20 7c 7c 20 21 66  =zHaystack || !f
98b0: 6f 73 73 69 6c 5f 69 73 61 6c 6e 75 6d 28 7a 5b  ossil_isalnum(z[
98c0: 2d 31 5d 29 29 20 26 26 20 21 66 6f 73 73 69 6c  -1])) && !fossil
98d0: 5f 69 73 61 6c 6e 75 6d 28 7a 5b 6e 5d 29 20 29  _isalnum(z[n]) )
98e0: 7b 0a 20 20 20 20 20 20 72 65 74 75 72 6e 20 31  {.      return 1
98f0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 7a 48 61 79  ;.    }.    zHay
9900: 73 74 61 63 6b 20 3d 20 7a 20 2b 20 6e 3b 0a 20  stack = z + n;. 
9910: 20 7d 0a 20 20 72 65 74 75 72 6e 20 30 3b 0a 7d   }.  return 0;.}
9920: 0a 0a 0a 2f 2a 0a 2a 2a 20 57 45 42 50 41 47 45  .../*.** WEBPAGE
9930: 3a 20 73 74 79 6c 65 2e 63 73 73 0a 2a 2f 0a 76  : style.css.*/.v
9940: 6f 69 64 20 70 61 67 65 5f 73 74 79 6c 65 5f 63  oid page_style_c
9950: 73 73 28 76 6f 69 64 29 7b 0a 20 20 42 6c 6f 62  ss(void){.  Blob
9960: 20 63 73 73 3b 0a 20 20 69 6e 74 20 69 3b 0a 0a   css;.  int i;..
9970: 20 20 63 67 69 5f 73 65 74 5f 63 6f 6e 74 65 6e    cgi_set_conten
9980: 74 5f 74 79 70 65 28 22 74 65 78 74 2f 63 73 73  t_type("text/css
9990: 22 29 3b 0a 20 20 62 6c 6f 62 5f 69 6e 69 74 28  ");.  blob_init(
99a0: 26 63 73 73 2c 73 6b 69 6e 5f 67 65 74 28 22 63  &css,skin_get("c
99b0: 73 73 22 29 2c 2d 31 29 3b 0a 0a 20 20 2f 2a 20  ss"),-1);..  /* 
99c0: 61 64 64 20 73 70 65 63 69 61 6c 20 6d 69 73 73  add special miss
99d0: 69 6e 67 20 64 65 66 69 6e 69 74 69 6f 6e 73 20  ing definitions 
99e0: 2a 2f 0a 20 20 66 6f 72 28 69 3d 31 3b 20 63 73  */.  for(i=1; cs
99f0: 73 44 65 66 61 75 6c 74 4c 69 73 74 5b 69 5d 2e  sDefaultList[i].
9a00: 65 6c 65 6d 65 6e 74 43 6c 61 73 73 3b 20 69 2b  elementClass; i+
9a10: 2b 29 7b 0a 20 20 20 20 63 68 61 72 20 2a 7a 20  +){.    char *z 
9a20: 3d 20 62 6c 6f 62 5f 73 74 72 28 26 63 73 73 29  = blob_str(&css)
9a30: 3b 0a 20 20 20 20 69 66 28 20 21 63 6f 6e 74 61  ;.    if( !conta
9a40: 69 6e 73 53 74 72 69 6e 67 28 7a 2c 20 63 73 73  insString(z, css
9a50: 44 65 66 61 75 6c 74 4c 69 73 74 5b 69 5d 2e 65  DefaultList[i].e
9a60: 6c 65 6d 65 6e 74 43 6c 61 73 73 29 20 29 7b 0a  lementClass) ){.
9a70: 20 20 20 20 20 20 62 6c 6f 62 5f 61 70 70 65 6e        blob_appen
9a80: 64 66 28 26 63 73 73 2c 20 22 2f 2a 20 25 73 20  df(&css, "/* %s 
9a90: 2a 2f 5c 6e 25 73 20 7b 5c 6e 25 73 7d 5c 6e 22  */\n%s {\n%s}\n"
9aa0: 2c 0a 20 20 20 20 20 20 20 20 20 20 63 73 73 44  ,.          cssD
9ab0: 65 66 61 75 6c 74 4c 69 73 74 5b 69 5d 2e 63 6f  efaultList[i].co
9ac0: 6d 6d 65 6e 74 2c 0a 20 20 20 20 20 20 20 20 20  mment,.         
9ad0: 20 63 73 73 44 65 66 61 75 6c 74 4c 69 73 74 5b   cssDefaultList[
9ae0: 69 5d 2e 65 6c 65 6d 65 6e 74 43 6c 61 73 73 2c  i].elementClass,
9af0: 0a 20 20 20 20 20 20 20 20 20 20 63 73 73 44 65  .          cssDe
9b00: 66 61 75 6c 74 4c 69 73 74 5b 69 5d 2e 76 61 6c  faultList[i].val
9b10: 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 7d 0a 0a  ue);.    }.  }..
9b20: 20 20 2f 2a 20 50 72 6f 63 65 73 73 20 74 68 72    /* Process thr
9b30: 6f 75 67 68 20 54 48 31 20 69 6e 20 6f 72 64 65  ough TH1 in orde
9b40: 72 20 74 6f 20 67 69 76 65 20 61 6e 20 6f 70 70  r to give an opp
9b50: 6f 72 74 75 6e 69 74 79 20 74 6f 20 73 75 62 73  ortunity to subs
9b60: 74 69 74 75 74 65 0a 20 20 2a 2a 20 76 61 72 69  titute.  ** vari
9b70: 61 62 6c 65 73 20 73 75 63 68 20 61 73 20 24 62  ables such as $b
9b80: 61 73 65 75 72 6c 2e 0a 20 20 2a 2f 0a 20 20 54  aseurl..  */.  T
9b90: 68 5f 53 74 6f 72 65 28 22 62 61 73 65 75 72 6c  h_Store("baseurl
9ba0: 22 2c 20 67 2e 7a 42 61 73 65 55 52 4c 29 3b 0a  ", g.zBaseURL);.
9bb0: 20 20 54 68 5f 53 74 6f 72 65 28 22 73 65 63 75    Th_Store("secu
9bc0: 72 65 75 72 6c 22 2c 20 6c 6f 67 69 6e 5f 77 61  reurl", login_wa
9bd0: 6e 74 73 5f 68 74 74 70 73 5f 72 65 64 69 72 65  nts_https_redire
9be0: 63 74 28 29 3f 20 67 2e 7a 48 74 74 70 73 55 52  ct()? g.zHttpsUR
9bf0: 4c 3a 20 67 2e 7a 42 61 73 65 55 52 4c 29 3b 0a  L: g.zBaseURL);.
9c00: 20 20 54 68 5f 53 74 6f 72 65 28 22 68 6f 6d 65    Th_Store("home
9c10: 22 2c 20 67 2e 7a 54 6f 70 29 3b 0a 20 20 69 6d  ", g.zTop);.  im
9c20: 61 67 65 5f 75 72 6c 5f 76 61 72 28 22 6c 6f 67  age_url_var("log
9c30: 6f 22 29 3b 0a 20 20 69 6d 61 67 65 5f 75 72 6c  o");.  image_url
9c40: 5f 76 61 72 28 22 62 61 63 6b 67 72 6f 75 6e 64  _var("background
9c50: 22 29 3b 0a 20 20 54 68 5f 52 65 6e 64 65 72 28  ");.  Th_Render(
9c60: 62 6c 6f 62 5f 73 74 72 28 26 63 73 73 29 29 3b  blob_str(&css));
9c70: 0a 0a 20 20 2f 2a 20 54 65 6c 6c 20 43 47 49 20  ..  /* Tell CGI 
9c80: 74 68 61 74 20 74 68 65 20 63 6f 6e 74 65 6e 74  that the content
9c90: 20 72 65 74 75 72 6e 65 64 20 62 79 20 74 68 69   returned by thi
9ca0: 73 20 70 61 67 65 20 69 73 20 63 6f 6e 73 69 64  s page is consid
9cb0: 65 72 65 64 20 63 61 63 68 65 61 62 6c 65 20 2a  ered cacheable *
9cc0: 2f 0a 20 20 67 2e 69 73 43 6f 6e 73 74 20 3d 20  /.  g.isConst = 
9cd0: 31 3b 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 57 45 42 50  1;.}../*.** WEBP
9ce0: 41 47 45 3a 20 74 65 73 74 5f 65 6e 76 0a 2a 2f  AGE: test_env.*/
9cf0: 0a 76 6f 69 64 20 70 61 67 65 5f 74 65 73 74 5f  .void page_test_
9d00: 65 6e 76 28 76 6f 69 64 29 7b 0a 20 20 63 68 61  env(void){.  cha
9d10: 72 20 63 3b 0a 20 20 69 6e 74 20 69 3b 0a 20 20  r c;.  int i;.  
9d20: 69 6e 74 20 73 68 6f 77 41 6c 6c 3b 0a 20 20 63  int showAll;.  c
9d30: 68 61 72 20 7a 43 61 70 5b 33 30 5d 3b 0a 20 20  har zCap[30];.  
9d40: 73 74 61 74 69 63 20 63 6f 6e 73 74 20 63 68 61  static const cha
9d50: 72 20 2a 63 6f 6e 73 74 20 61 7a 43 67 69 56 61  r *const azCgiVa
9d60: 72 73 5b 5d 20 3d 20 7b 0a 20 20 20 20 22 43 4f  rs[] = {.    "CO
9d70: 4d 53 50 45 43 22 2c 20 22 44 4f 43 55 4d 45 4e  MSPEC", "DOCUMEN
9d80: 54 5f 52 4f 4f 54 22 2c 20 22 47 41 54 45 57 41  T_ROOT", "GATEWA
9d90: 59 5f 49 4e 54 45 52 46 41 43 45 22 2c 0a 20 20  Y_INTERFACE",.  
9da0: 20 20 22 48 54 54 50 5f 41 43 43 45 50 54 22 2c    "HTTP_ACCEPT",
9db0: 20 22 48 54 54 50 5f 41 43 43 45 50 54 5f 43 48   "HTTP_ACCEPT_CH
9dc0: 41 52 53 45 54 22 2c 20 22 48 54 54 50 5f 41 43  ARSET", "HTTP_AC
9dd0: 43 45 50 54 5f 45 4e 43 4f 44 49 4e 47 22 2c 0a  CEPT_ENCODING",.
9de0: 20 20 20 20 22 48 54 54 50 5f 41 43 43 45 50 54      "HTTP_ACCEPT
9df0: 5f 4c 41 4e 47 55 41 47 45 22 2c 20 22 48 54 54  _LANGUAGE", "HTT
9e00: 50 5f 43 4f 4e 4e 45 43 54 49 4f 4e 22 2c 20 22  P_CONNECTION", "
9e10: 48 54 54 50 5f 48 4f 53 54 22 2c 0a 20 20 20 20  HTTP_HOST",.    
9e20: 22 48 54 54 50 5f 55 53 45 52 5f 41 47 45 4e 54  "HTTP_USER_AGENT
9e30: 22 2c 20 22 48 54 54 50 5f 52 45 46 45 52 45 52  ", "HTTP_REFERER
9e40: 22 2c 20 22 50 41 54 48 5f 49 4e 46 4f 22 2c 20  ", "PATH_INFO", 
9e50: 22 50 41 54 48 5f 54 52 41 4e 53 4c 41 54 45 44  "PATH_TRANSLATED
9e60: 22 2c 0a 20 20 20 20 22 51 55 45 52 59 5f 53 54  ",.    "QUERY_ST
9e70: 52 49 4e 47 22 2c 20 22 52 45 4d 4f 54 45 5f 41  RING", "REMOTE_A
9e80: 44 44 52 22 2c 20 22 52 45 4d 4f 54 45 5f 50 4f  DDR", "REMOTE_PO
9e90: 52 54 22 2c 20 22 52 45 51 55 45 53 54 5f 4d 45  RT", "REQUEST_ME
9ea0: 54 48 4f 44 22 2c 0a 20 20 20 20 22 52 45 51 55  THOD",.    "REQU
9eb0: 45 53 54 5f 55 52 49 22 2c 20 22 53 43 52 49 50  EST_URI", "SCRIP
9ec0: 54 5f 46 49 4c 45 4e 41 4d 45 22 2c 20 22 53 43  T_FILENAME", "SC
9ed0: 52 49 50 54 5f 4e 41 4d 45 22 2c 20 22 53 45 52  RIPT_NAME", "SER
9ee0: 56 45 52 5f 50 52 4f 54 4f 43 4f 4c 22 2c 0a 20  VER_PROTOCOL",. 
9ef0: 20 7d 3b 0a 0a 20 20 6c 6f 67 69 6e 5f 63 68 65   };..  login_che
9f00: 63 6b 5f 63 72 65 64 65 6e 74 69 61 6c 73 28 29  ck_credentials()
9f10: 3b 0a 20 20 69 66 28 20 21 67 2e 70 65 72 6d 2e  ;.  if( !g.perm.
9f20: 41 64 6d 69 6e 20 26 26 20 21 67 2e 70 65 72 6d  Admin && !g.perm
9f30: 2e 53 65 74 75 70 20 26 26 20 21 64 62 5f 67 65  .Setup && !db_ge
9f40: 74 5f 62 6f 6f 6c 65 61 6e 28 22 74 65 73 74 5f  t_boolean("test_
9f50: 65 6e 76 5f 65 6e 61 62 6c 65 22 2c 30 29 20 29  env_enable",0) )
9f60: 7b 0a 20 20 20 20 6c 6f 67 69 6e 5f 6e 65 65 64  {.    login_need
9f70: 65 64 28 30 29 3b 0a 20 20 20 20 72 65 74 75 72  ed(0);.    retur
9f80: 6e 3b 0a 20 20 7d 0a 20 20 66 6f 72 28 69 3d 30  n;.  }.  for(i=0
9f90: 3b 20 69 3c 63 6f 75 6e 74 28 61 7a 43 67 69 56  ; i<count(azCgiV
9fa0: 61 72 73 29 3b 20 69 2b 2b 29 20 28 76 6f 69 64  ars); i++) (void
9fb0: 29 50 28 61 7a 43 67 69 56 61 72 73 5b 69 5d 29  )P(azCgiVars[i])
9fc0: 3b 0a 20 20 73 74 79 6c 65 5f 68 65 61 64 65 72  ;.  style_header
9fd0: 28 22 45 6e 76 69 72 6f 6e 6d 65 6e 74 20 54 65  ("Environment Te
9fe0: 73 74 22 29 3b 0a 20 20 73 68 6f 77 41 6c 6c 20  st");.  showAll 
9ff0: 3d 20 61 74 6f 69 28 50 44 28 22 73 68 6f 77 61  = atoi(PD("showa
a000: 6c 6c 22 2c 22 30 22 29 29 3b 0a 20 20 69 66 28  ll","0"));.  if(
a010: 20 21 73 68 6f 77 41 6c 6c 20 29 7b 0a 20 20 20   !showAll ){.   
a020: 20 73 74 79 6c 65 5f 73 75 62 6d 65 6e 75 5f 65   style_submenu_e
a030: 6c 65 6d 65 6e 74 28 22 53 68 6f 77 20 43 6f 6f  lement("Show Coo
a040: 6b 69 65 73 22 2c 20 30 2c 20 22 25 52 2f 74 65  kies", 0, "%R/te
a050: 73 74 5f 65 6e 76 3f 73 68 6f 77 61 6c 6c 3d 31  st_env?showall=1
a060: 22 29 3b 0a 20 20 7d 65 6c 73 65 7b 0a 20 20 20  ");.  }else{.   
a070: 20 73 74 79 6c 65 5f 73 75 62 6d 65 6e 75 5f 65   style_submenu_e
a080: 6c 65 6d 65 6e 74 28 22 48 69 64 65 20 43 6f 6f  lement("Hide Coo
a090: 6b 69 65 73 22 2c 20 30 2c 20 22 25 52 2f 74 65  kies", 0, "%R/te
a0a0: 73 74 5f 65 6e 76 22 29 3b 0a 20 20 7d 0a 23 69  st_env");.  }.#i
a0b0: 66 20 21 64 65 66 69 6e 65 64 28 5f 57 49 4e 33  f !defined(_WIN3
a0c0: 32 29 0a 20 20 40 20 75 69 64 3d 25 64 28 67 65  2).  @ uid=%d(ge
a0d0: 74 75 69 64 28 29 29 2c 20 67 69 64 3d 25 64 28  tuid()), gid=%d(
a0e0: 67 65 74 67 69 64 28 29 29 3c 62 72 20 2f 3e 0a  getgid())<br />.
a0f0: 23 65 6e 64 69 66 0a 20 20 40 20 67 2e 7a 42 61  #endif.  @ g.zBa
a100: 73 65 55 52 4c 20 3d 20 25 68 28 67 2e 7a 42 61  seURL = %h(g.zBa
a110: 73 65 55 52 4c 29 3c 62 72 20 2f 3e 0a 20 20 40  seURL)<br />.  @
a120: 20 67 2e 7a 48 74 74 70 73 55 52 4c 20 3d 20 25   g.zHttpsURL = %
a130: 68 28 67 2e 7a 48 74 74 70 73 55 52 4c 29 3c 62  h(g.zHttpsURL)<b
a140: 72 20 2f 3e 0a 20 20 40 20 67 2e 7a 54 6f 70 20  r />.  @ g.zTop 
a150: 3d 20 25 68 28 67 2e 7a 54 6f 70 29 3c 62 72 20  = %h(g.zTop)<br 
a160: 2f 3e 0a 20 20 40 20 67 2e 7a 50 61 74 68 20 3d  />.  @ g.zPath =
a170: 20 25 68 28 67 2e 7a 50 61 74 68 29 3c 62 72 20   %h(g.zPath)<br 
a180: 2f 3e 0a 20 20 66 6f 72 28 69 3d 30 2c 20 63 3d  />.  for(i=0, c=
a190: 27 61 27 3b 20 63 3c 3d 27 7a 27 3b 20 63 2b 2b  'a'; c<='z'; c++
a1a0: 29 7b 0a 20 20 20 20 69 66 28 20 6c 6f 67 69 6e  ){.    if( login
a1b0: 5f 68 61 73 5f 63 61 70 61 62 69 6c 69 74 79 28  _has_capability(
a1c0: 26 63 2c 20 31 2c 20 30 29 20 29 20 7a 43 61 70  &c, 1, 0) ) zCap
a1d0: 5b 69 2b 2b 5d 20 3d 20 63 3b 0a 20 20 7d 0a 20  [i++] = c;.  }. 
a1e0: 20 7a 43 61 70 5b 69 5d 20 3d 20 30 3b 0a 20 20   zCap[i] = 0;.  
a1f0: 40 20 67 2e 75 73 65 72 55 69 64 20 3d 20 25 64  @ g.userUid = %d
a200: 28 67 2e 75 73 65 72 55 69 64 29 3c 62 72 20 2f  (g.userUid)<br /
a210: 3e 0a 20 20 40 20 67 2e 7a 4c 6f 67 69 6e 20 3d  >.  @ g.zLogin =
a220: 20 25 68 28 67 2e 7a 4c 6f 67 69 6e 29 3c 62 72   %h(g.zLogin)<br
a230: 20 2f 3e 0a 20 20 40 20 67 2e 69 73 48 75 6d 61   />.  @ g.isHuma
a240: 6e 20 3d 20 25 64 28 67 2e 69 73 48 75 6d 61 6e  n = %d(g.isHuman
a250: 29 3c 62 72 20 2f 3e 0a 20 20 40 20 63 61 70 61  )<br />.  @ capa
a260: 62 69 6c 69 74 69 65 73 20 3d 20 25 73 28 7a 43  bilities = %s(zC
a270: 61 70 29 3c 62 72 20 2f 3e 0a 20 20 66 6f 72 28  ap)<br />.  for(
a280: 69 3d 30 2c 20 63 3d 27 61 27 3b 20 63 3c 3d 27  i=0, c='a'; c<='
a290: 7a 27 3b 20 63 2b 2b 29 7b 0a 20 20 20 20 69 66  z'; c++){.    if
a2a0: 28 20 6c 6f 67 69 6e 5f 68 61 73 5f 63 61 70 61  ( login_has_capa
a2b0: 62 69 6c 69 74 79 28 26 63 2c 20 31 2c 20 4c 4f  bility(&c, 1, LO
a2c0: 47 49 4e 5f 41 4e 4f 4e 29 0a 20 20 20 20 20 20  GIN_ANON).      
a2d0: 20 20 20 26 26 20 21 6c 6f 67 69 6e 5f 68 61 73     && !login_has
a2e0: 5f 63 61 70 61 62 69 6c 69 74 79 28 26 63 2c 20  _capability(&c, 
a2f0: 31 2c 20 30 29 20 29 20 7a 43 61 70 5b 69 2b 2b  1, 0) ) zCap[i++
a300: 5d 20 3d 20 63 3b 0a 20 20 7d 0a 20 20 7a 43 61  ] = c;.  }.  zCa
a310: 70 5b 69 5d 20 3d 20 30 3b 0a 20 20 69 66 28 20  p[i] = 0;.  if( 
a320: 69 3e 30 20 29 7b 0a 20 20 20 20 40 20 61 6e 6f  i>0 ){.    @ ano
a330: 6e 79 6d 6f 75 73 2d 61 64 64 73 20 3d 20 25 73  nymous-adds = %s
a340: 28 7a 43 61 70 29 3c 62 72 20 2f 3e 0a 20 20 7d  (zCap)<br />.  }
a350: 0a 20 20 40 20 67 2e 7a 52 65 70 6f 73 69 74 6f  .  @ g.zReposito
a360: 72 79 4e 61 6d 65 20 3d 20 25 68 28 67 2e 7a 52  ryName = %h(g.zR
a370: 65 70 6f 73 69 74 6f 72 79 4e 61 6d 65 29 3c 62  epositoryName)<b
a380: 72 20 2f 3e 0a 20 20 40 20 6c 6f 61 64 5f 61 76  r />.  @ load_av
a390: 65 72 61 67 65 28 29 20 3d 20 25 66 28 6c 6f 61  erage() = %f(loa
a3a0: 64 5f 61 76 65 72 61 67 65 28 29 29 3c 62 72 20  d_average())<br 
a3b0: 2f 3e 0a 20 20 40 20 3c 68 72 3e 0a 20 20 50 28  />.  @ <hr>.  P(
a3c0: 22 48 54 54 50 5f 55 53 45 52 5f 41 47 45 4e 54  "HTTP_USER_AGENT
a3d0: 22 29 3b 0a 20 20 63 67 69 5f 70 72 69 6e 74 5f  ");.  cgi_print_
a3e0: 61 6c 6c 28 73 68 6f 77 41 6c 6c 29 3b 0a 20 20  all(showAll);.  
a3f0: 69 66 28 20 73 68 6f 77 41 6c 6c 20 26 26 20 62  if( showAll && b
a400: 6c 6f 62 5f 73 69 7a 65 28 26 67 2e 68 74 74 70  lob_size(&g.http
a410: 48 65 61 64 65 72 29 3e 30 20 29 7b 0a 20 20 20  Header)>0 ){.   
a420: 20 40 20 3c 68 72 3e 0a 20 20 20 20 40 20 3c 70   @ <hr>.    @ <p
a430: 72 65 3e 0a 20 20 20 20 40 20 25 68 28 62 6c 6f  re>.    @ %h(blo
a440: 62 5f 73 74 72 28 26 67 2e 68 74 74 70 48 65 61  b_str(&g.httpHea
a450: 64 65 72 29 29 0a 20 20 20 20 40 20 3c 2f 70 72  der)).    @ </pr
a460: 65 3e 0a 20 20 7d 0a 20 20 69 66 28 20 67 2e 70  e>.  }.  if( g.p
a470: 65 72 6d 2e 53 65 74 75 70 20 29 7b 0a 20 20 20  erm.Setup ){.   
a480: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 7a 52 65   const char *zRe
a490: 64 69 72 20 3d 20 50 28 22 72 65 64 69 72 65 63  dir = P("redirec
a4a0: 74 22 29 3b 0a 20 20 20 20 69 66 28 20 7a 52 65  t");.    if( zRe
a4b0: 64 69 72 20 29 20 63 67 69 5f 72 65 64 69 72 65  dir ) cgi_redire
a4c0: 63 74 28 7a 52 65 64 69 72 29 3b 0a 20 20 7d 0a  ct(zRedir);.  }.
a4d0: 20 20 73 74 79 6c 65 5f 66 6f 6f 74 65 72 28 29    style_footer()
a4e0: 3b 0a 20 20 69 66 28 20 67 2e 70 65 72 6d 2e 41  ;.  if( g.perm.A
a4f0: 64 6d 69 6e 20 26 26 20 50 28 22 65 72 72 22 29  dmin && P("err")
a500: 20 29 20 66 6f 73 73 69 6c 5f 66 61 74 61 6c 28   ) fossil_fatal(
a510: 22 25 73 22 2c 20 50 28 22 65 72 72 22 29 29 3b  "%s", P("err"));
a520: 0a 7d 0a 0a 2f 2a 0a 2a 2a 20 54 68 69 73 20 70  .}../*.** This p
a530: 61 67 65 20 69 73 20 61 20 68 6f 6e 65 79 70 6f  age is a honeypo
a540: 74 20 66 6f 72 20 73 70 69 64 65 72 73 20 61 6e  t for spiders an
a550: 64 20 62 6f 74 73 2e 0a 2a 2a 0a 2a 2a 20 57 45  d bots..**.** WE
a560: 42 50 41 47 45 3a 20 68 6f 6e 65 79 70 6f 74 0a  BPAGE: honeypot.
a570: 2a 2f 0a 76 6f 69 64 20 68 6f 6e 65 79 70 6f 74  */.void honeypot
a580: 5f 70 61 67 65 28 76 6f 69 64 29 7b 0a 20 20 63  _page(void){.  c
a590: 67 69 5f 73 65 74 5f 73 74 61 74 75 73 28 34 30  gi_set_status(40
a5a0: 33 2c 20 22 46 6f 72 62 69 64 64 65 6e 22 29 3b  3, "Forbidden");
a5b0: 0a 20 20 40 20 3c 70 3e 50 6c 65 61 73 65 20 65  .  @ <p>Please e
a5c0: 6e 61 62 6c 65 20 6a 61 76 61 73 63 72 69 70 74  nable javascript
a5d0: 20 6f 72 20 6c 6f 67 20 69 6e 20 74 6f 20 73 65   or log in to se
a5e0: 65 20 74 68 69 73 20 63 6f 6e 74 65 6e 74 3c 2f  e this content</
a5f0: 70 3e 0a 7d 0a                                   p>.}.