0000: 23 20 54 68 65 20 22 73 6b 69 6e 22 20 63 6f 6e # The "skin" con
0010: 66 69 67 75 72 61 74 69 6f 6e 20 65 78 70 6f 72 figuration expor
0020: 74 65 64 20 66 72 6f 6d 0a 23 20 72 65 70 6f 73 ted from.# repos
0030: 69 74 6f 72 79 20 22 2f 68 6f 6d 65 2f 6d 61 72 itory "/home/mar
0040: 69 6f 2f 66 6f 73 73 69 6c 2e 64 2f 63 61 6e 6f io/fossil.d/cano
0050: 6e 69 63 5f 61 75 74 6f 6c 6f 61 64 65 72 2e 66 nic_autoloader.f
0060: 6f 73 73 69 6c 22 0a 23 20 6f 6e 20 32 30 31 34 ossil".# on 2014
0070: 2d 30 33 2d 31 37 20 31 35 3a 30 30 3a 30 35 0a -03-17 15:00:05.
0080: 63 6f 6e 66 69 67 20 2f 63 6f 6e 66 69 67 20 37 config /config 7
0090: 38 39 35 0a 31 33 39 35 30 36 38 33 39 34 20 27 895.1395068394 '
00a0: 63 73 73 27 20 76 61 6c 75 65 20 27 2f 2a 20 47 css' value '/* G
00b0: 65 6e 65 72 61 6c 20 73 65 74 74 69 6e 67 73 20 eneral settings
00c0: 66 6f 72 20 74 68 65 20 65 6e 74 69 72 65 20 70 for the entire p
00d0: 61 67 65 20 2a 2f 0d 0a 62 6f 64 79 20 7b 0d 0a age */..body {..
00e0: 20 20 6d 61 72 67 69 6e 3a 20 30 65 78 20 31 65 margin: 0ex 1e
00f0: 78 3b 0d 0a 20 20 70 61 64 64 69 6e 67 3a 20 30 x;.. padding: 0
0100: 70 78 3b 0d 0a 20 20 62 61 63 6b 67 72 6f 75 6e px;.. backgroun
0110: 64 2d 63 6f 6c 6f 72 3a 20 77 68 69 74 65 3b 0d d-color: white;.
0120: 0a 20 20 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 20 . font-family:
0130: 73 61 6e 73 2d 73 65 72 69 66 3b 0d 0a 7d 0d 0a sans-serif;..}..
0140: 0d 0a 2f 2a 20 54 68 65 20 70 72 6f 6a 65 63 74 ../* The project
0150: 20 6c 6f 67 6f 20 69 6e 20 74 68 65 20 75 70 70 logo in the upp
0160: 65 72 20 6c 65 66 74 2d 68 61 6e 64 20 63 6f 72 er left-hand cor
0170: 6e 65 72 20 6f 66 20 65 61 63 68 20 70 61 67 65 ner of each page
0180: 20 2a 2f 0d 0a 23 6c 6f 67 6f 20 7b 0d 0a 20 20 */..#logo {..
0190: 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 65 6e 74 text-align: cent
01a0: 65 72 3b 0d 0a 20 20 76 65 72 74 69 63 61 6c 2d er;.. vertical-
01b0: 61 6c 69 67 6e 3a 20 62 6f 74 74 6f 6d 3b 0d 0a align: bottom;..
01c0: 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 font-weight: b
01d0: 6f 6c 64 3b 0d 0a 20 20 63 6f 6c 6f 72 3a 20 23 old;.. color: #
01e0: 66 39 30 3b 0d 0a 20 20 70 61 64 64 69 6e 67 3a f90;.. padding:
01f0: 20 35 70 78 20 32 30 70 78 20 30 70 78 20 30 70 5px 20px 0px 0p
0200: 78 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 20 54 68 65 20 x;..}..../* The
0210: 70 61 67 65 20 74 69 74 6c 65 20 63 65 6e 74 65 page title cente
0220: 72 65 64 20 61 74 20 74 68 65 20 74 6f 70 20 6f red at the top o
0230: 66 20 65 61 63 68 20 70 61 67 65 20 2a 2f 0d 0a f each page */..
0240: 2e 74 69 74 6c 65 20 7b 0d 0a 20 20 66 6f 6e 74 .title {.. font
0250: 2d 73 69 7a 65 3a 20 32 65 6d 3b 0d 0a 20 20 66 -size: 2em;.. f
0260: 6f 6e 74 2d 77 65 69 67 68 74 3a 20 32 30 30 3b ont-weight: 200;
0270: 0d 0a 20 20 63 6f 6c 6f 72 3a 20 23 33 33 33 3b .. color: #333;
0280: 0d 0a 20 20 76 65 72 74 69 63 61 6c 2d 61 6c 69 .. vertical-ali
0290: 67 6e 3a 20 62 6f 74 74 6f 6d 3b 0d 0a 20 20 77 gn: bottom;.. w
02a0: 69 64 74 68 3a 20 31 30 30 25 20 3b 0d 0a 20 20 idth: 100% ;..
02b0: 70 6f 73 69 74 69 6f 6e 3a 20 72 65 6c 61 74 69 position: relati
02c0: 76 65 3b 20 74 6f 70 3a 33 30 70 78 3b 0d 0a 7d ve; top:30px;..}
02d0: 0d 0a 2e 74 69 74 6c 65 20 62 20 7b 20 66 6f 6e ...title b { fon
02e0: 74 2d 77 65 69 67 68 74 3a 20 38 30 30 3b 20 7d t-weight: 800; }
02f0: 0d 0a 0d 0a 2f 2a 20 54 68 65 20 6c 6f 67 69 6e ..../* The login
0300: 20 73 74 61 74 75 73 20 6d 65 73 73 61 67 65 20 status message
0310: 69 6e 20 74 68 65 20 74 6f 70 20 72 69 67 68 74 in the top right
0320: 2d 68 61 6e 64 20 63 6f 72 6e 65 72 20 2a 2f 0d -hand corner */.
0330: 0a 2e 73 74 61 74 75 73 20 7b 0d 0a 20 20 64 69 ..status {.. di
0340: 73 70 6c 61 79 3a 20 74 61 62 6c 65 2d 63 65 6c splay: table-cel
0350: 6c 3b 0d 0a 20 20 74 65 78 74 2d 61 6c 69 67 6e l;.. text-align
0360: 3a 20 72 69 67 68 74 3b 0d 0a 20 20 76 65 72 74 : right;.. vert
0370: 69 63 61 6c 2d 61 6c 69 67 6e 3a 20 62 6f 74 74 ical-align: bott
0380: 6f 6d 3b 0d 0a 20 20 63 6f 6c 6f 72 3a 20 23 66 om;.. color: #f
0390: 66 39 39 30 30 3b 0d 0a 20 20 66 6f 6e 74 2d 73 f9900;.. font-s
03a0: 69 7a 65 3a 20 30 2e 38 65 6d 3b 0d 0a 20 20 66 ize: 0.8em;.. f
03b0: 6f 6e 74 2d 77 65 69 67 68 74 3a 20 62 6f 6c 64 ont-weight: bold
03c0: 3b 0d 0a 20 20 6d 69 6e 2d 77 69 64 74 68 3a 20 ;.. min-width:
03d0: 32 30 30 70 78 3b 0d 0a 20 20 77 68 69 74 65 2d 200px;.. white-
03e0: 73 70 61 63 65 3a 20 6e 6f 77 72 61 70 3b 0d 0a space: nowrap;..
03f0: 7d 0d 0a 0d 0a 2f 2a 20 54 68 65 20 68 65 61 64 }..../* The head
0400: 65 72 20 61 63 72 6f 73 73 20 74 68 65 20 74 6f er across the to
0410: 70 20 6f 66 20 74 68 65 20 70 61 67 65 20 2a 2f p of the page */
0420: 0d 0a 68 65 61 64 65 72 2c 20 2e 68 65 61 64 65 ..header, .heade
0430: 72 20 7b 0d 0a 20 20 64 69 73 70 6c 61 79 3a 20 r {.. display:
0440: 74 61 62 6c 65 3b 0d 0a 20 20 77 69 64 74 68 3a table;.. width:
0450: 20 31 30 30 25 20 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 100% ;..}..../*
0460: 20 54 68 65 20 6d 61 69 6e 20 6d 65 6e 75 20 62 The main menu b
0470: 61 72 20 74 68 61 74 20 61 70 70 65 61 72 73 20 ar that appears
0480: 61 74 20 74 68 65 20 74 6f 70 20 6f 66 20 74 68 at the top of th
0490: 65 20 70 61 67 65 20 62 65 6e 65 61 74 68 0d 0a e page beneath..
04a0: 2a 2a 20 74 68 65 20 68 65 61 64 65 72 20 2a 2f ** the header */
04b0: 0d 0a 6e 61 76 2c 20 2e 6d 61 69 6e 6d 65 6e 75 ..nav, .mainmenu
04c0: 20 7b 0d 0a 20 20 70 61 64 64 69 6e 67 3a 20 35 {.. padding: 5
04d0: 70 78 20 31 30 70 78 20 35 70 78 20 31 30 70 78 px 10px 5px 10px
04e0: 3b 0d 0a 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 ;.. font-size:
04f0: 30 2e 39 65 6d 3b 0d 0a 20 20 66 6f 6e 74 2d 77 0.9em;.. font-w
0500: 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0d 0a 20 20 eight: bold;..
0510: 74 65 78 74 2d 61 6c 69 67 6e 3a 20 63 65 6e 74 text-align: cent
0520: 65 72 3b 0d 0a 20 20 6c 65 74 74 65 72 2d 73 70 er;.. letter-sp
0530: 61 63 69 6e 67 3a 20 31 70 78 3b 0d 0a 7d 0d 0a acing: 1px;..}..
0540: 0d 0a 2f 2a 20 54 68 65 20 73 75 62 6d 65 6e 75 ../* The submenu
0550: 20 62 61 72 20 74 68 61 74 20 2a 73 6f 6d 65 74 bar that *somet
0560: 69 6d 65 73 2a 20 61 70 70 65 61 72 73 20 62 65 imes* appears be
0570: 6c 6f 77 20 74 68 65 20 6d 61 69 6e 20 6d 65 6e low the main men
0580: 75 20 2a 2f 0d 0a 2e 73 75 62 6d 65 6e 75 2c 20 u */...submenu,
0590: 2e 73 65 63 74 69 6f 6e 6d 65 6e 75 20 7b 0d 0a .sectionmenu {..
05a0: 20 20 70 61 64 64 69 6e 67 3a 20 33 70 78 20 31 padding: 3px 1
05b0: 30 70 78 20 33 70 78 20 30 70 78 3b 0d 0a 20 20 0px 3px 0px;..
05c0: 66 6f 6e 74 2d 73 69 7a 65 3a 20 30 2e 39 65 6d font-size: 0.9em
05d0: 3b 0d 0a 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a ;.. text-align:
05e0: 20 63 65 6e 74 65 72 3b 0d 0a 20 20 62 61 63 6b center;.. back
05f0: 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 23 66 ground-color: #f
0600: 66 39 39 30 30 3b 0d 0a 20 20 63 6f 6c 6f 72 3a f9900;.. color:
0610: 20 77 68 69 74 65 3b 0d 0a 7d 0d 0a 2e 6d 61 69 white;..}...mai
0620: 6e 6d 65 6e 75 20 61 2c 20 2e 6d 61 69 6e 6d 65 nmenu a, .mainme
0630: 6e 75 20 61 3a 76 69 73 69 74 65 64 2c 20 2e 73 nu a:visited, .s
0640: 75 62 6d 65 6e 75 20 61 2c 20 2e 73 75 62 6d 65 ubmenu a, .subme
0650: 6e 75 20 61 3a 76 69 73 69 74 65 64 2c 0d 0a 2e nu a:visited,...
0660: 73 65 63 74 69 6f 6e 6d 65 6e 75 3e 61 2e 62 75 sectionmenu>a.bu
0670: 74 74 6f 6e 3a 6c 69 6e 6b 2c 20 2e 73 65 63 74 tton:link, .sect
0680: 69 6f 6e 6d 65 6e 75 3e 61 2e 62 75 74 74 6f 6e ionmenu>a.button
0690: 3a 76 69 73 69 74 65 64 20 7b 0d 0a 20 20 70 61 :visited {.. pa
06a0: 64 64 69 6e 67 3a 20 33 70 78 20 31 30 70 78 20 dding: 3px 10px
06b0: 33 70 78 20 31 30 70 78 3b 0d 0a 20 20 63 6f 6c 3px 10px;.. col
06c0: 6f 72 3a 20 77 68 69 74 65 3b 0d 0a 20 20 74 65 or: white;.. te
06d0: 78 74 2d 64 65 63 6f 72 61 74 69 6f 6e 3a 20 6e xt-decoration: n
06e0: 6f 6e 65 3b 0d 0a 7d 0d 0a 2e 6d 61 69 6e 6d 65 one;..}...mainme
06f0: 6e 75 20 61 3a 68 6f 76 65 72 2c 20 2e 73 75 62 nu a:hover, .sub
0700: 6d 65 6e 75 20 61 3a 68 6f 76 65 72 2c 20 2e 73 menu a:hover, .s
0710: 65 63 74 69 6f 6e 6d 65 6e 75 3e 61 2e 62 75 74 ectionmenu>a.but
0720: 74 6f 6e 3a 68 6f 76 65 72 20 7b 0d 0a 20 20 63 ton:hover {.. c
0730: 6f 6c 6f 72 3a 20 23 66 66 39 39 30 30 3b 0d 0a olor: #ff9900;..
0740: 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c background-col
0750: 6f 72 3a 20 77 68 69 74 65 3b 0d 0a 7d 0d 0a 0d or: white;..}...
0760: 0a 2f 2a 20 41 6c 6c 20 70 61 67 65 20 63 6f 6e ./* All page con
0770: 74 65 6e 74 20 66 72 6f 6d 20 74 68 65 20 62 6f tent from the bo
0780: 74 74 6f 6d 20 6f 66 20 74 68 65 20 6d 65 6e 75 ttom of the menu
0790: 20 6f 72 20 73 75 62 6d 65 6e 75 20 64 6f 77 6e or submenu down
07a0: 20 74 6f 0d 0a 2a 2a 20 74 68 65 20 66 6f 6f 74 to..** the foot
07b0: 65 72 20 2a 2f 0d 0a 2e 63 6f 6e 74 65 6e 74 20 er */...content
07c0: 7b 0d 0a 20 20 70 61 64 64 69 6e 67 3a 20 30 65 {.. padding: 0e
07d0: 78 20 31 65 78 20 30 65 78 20 32 65 78 3b 0d 0a x 1ex 0ex 2ex;..
07e0: 7d 0d 0a 0d 0a 2f 2a 20 53 6f 6d 65 20 70 61 67 }..../* Some pag
07f0: 65 73 20 68 61 76 65 20 73 65 63 74 69 6f 6e 20 es have section
0800: 64 69 76 69 64 65 72 73 20 2a 2f 0d 0a 64 69 76 dividers */..div
0810: 2e 73 65 63 74 69 6f 6e 20 7b 0d 0a 20 20 6d 61 .section {.. ma
0820: 72 67 69 6e 2d 62 6f 74 74 6f 6d 3a 20 30 70 78 rgin-bottom: 0px
0830: 3b 0d 0a 20 20 6d 61 72 67 69 6e 2d 74 6f 70 3a ;.. margin-top:
0840: 20 31 65 6d 3b 0d 0a 20 20 70 61 64 64 69 6e 67 1em;.. padding
0850: 3a 20 31 70 78 20 31 70 78 20 31 70 78 20 31 70 : 1px 1px 1px 1p
0860: 78 3b 0d 0a 20 20 66 6f 6e 74 2d 73 69 7a 65 3a x;.. font-size:
0870: 20 31 2e 32 65 6d 3b 0d 0a 20 20 66 6f 6e 74 2d 1.2em;.. font-
0880: 77 65 69 67 68 74 3a 20 62 6f 6c 64 3b 0d 0a 20 weight: bold;..
0890: 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f background-colo
08a0: 72 3a 20 23 66 66 39 39 30 30 3b 0d 0a 20 20 63 r: #ff9900;.. c
08b0: 6f 6c 6f 72 3a 20 77 68 69 74 65 3b 0d 0a 20 20 olor: white;..
08c0: 77 68 69 74 65 2d 73 70 61 63 65 3a 20 6e 6f 77 white-space: now
08d0: 72 61 70 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 20 54 68 rap;..}..../* Th
08e0: 65 20 22 44 61 74 65 22 20 74 68 61 74 20 6f 63 e "Date" that oc
08f0: 63 75 72 73 20 6f 6e 20 74 68 65 20 6c 65 66 74 curs on the left
0900: 20 68 61 6e 64 20 73 69 64 65 20 6f 66 20 74 69 hand side of ti
0910: 6d 65 6c 69 6e 65 73 20 2a 2f 0d 0a 2e 64 69 76 melines */...div
0920: 69 64 65 72 20 7b 0d 0a 20 20 62 6f 72 64 65 72 ider {.. border
0930: 2d 72 61 64 69 75 73 3a 20 34 70 78 3b 0d 0a 20 -radius: 4px;..
0940: 20 63 6f 6c 6f 72 3a 20 23 37 35 30 3b 0d 0a 20 color: #750;..
0950: 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 23 66 66 background: #ff
0960: 65 65 63 63 3b 0d 0a 20 20 62 6f 72 64 65 72 3a eecc;.. border:
0970: 20 32 70 78 20 23 66 39 30 20 73 6f 6c 69 64 3b 2px #f90 solid;
0980: 0d 0a 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 31 .. font-size: 1
0990: 65 6d 3b 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a em; font-weight:
09a0: 20 6e 6f 72 6d 61 6c 3b 0d 0a 20 20 70 61 64 64 normal;.. padd
09b0: 69 6e 67 3a 20 2e 32 35 65 6d 3b 0d 0a 20 20 6d ing: .25em;.. m
09c0: 61 72 67 69 6e 3a 20 2e 32 65 6d 20 30 20 2e 32 argin: .2em 0 .2
09d0: 65 6d 20 30 3b 0d 0a 20 20 66 6c 6f 61 74 3a 20 em 0;.. float:
09e0: 6c 65 66 74 3b 0d 0a 20 20 63 6c 65 61 72 3a 20 left;.. clear:
09f0: 6c 65 66 74 3b 0d 0a 20 20 77 68 69 74 65 2d 73 left;.. white-s
0a00: 70 61 63 65 3a 20 6e 6f 77 72 61 70 3b 0d 0a 7d pace: nowrap;..}
0a10: 0d 0a 0d 0a 2f 2a 20 54 68 65 20 66 6f 6f 74 65 ..../* The foote
0a20: 72 20 61 74 20 74 68 65 20 76 65 72 79 20 62 6f r at the very bo
0a30: 74 74 6f 6d 20 6f 66 20 74 68 65 20 70 61 67 65 ttom of the page
0a40: 20 2a 2f 0d 0a 66 6f 6f 74 65 72 2c 20 2e 66 6f */..footer, .fo
0a50: 6f 74 65 72 20 7b 0d 0a 20 20 63 6c 65 61 72 3a oter {.. clear:
0a60: 20 62 6f 74 68 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 20 both;..}..../*
0a70: 76 65 72 62 61 74 69 6d 20 62 6c 6f 63 6b 73 20 verbatim blocks
0a80: 2a 2f 0d 0a 70 72 65 2e 76 65 72 62 61 74 69 6d */..pre.verbatim
0a90: 20 7b 0d 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e {.. backgroun
0aa0: 64 2d 63 6f 6c 6f 72 3a 20 23 66 35 66 35 66 35 d-color: #f5f5f5
0ab0: 3b 0d 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 30 ;.. padding: 0
0ac0: 2e 35 65 6d 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 20 54 .5em;..}..../* T
0ad0: 68 65 20 6c 61 62 65 6c 2f 76 61 6c 75 65 20 70 he label/value p
0ae0: 61 69 72 73 20 6f 6e 20 28 66 6f 72 20 65 78 61 airs on (for exa
0af0: 6d 70 6c 65 29 20 74 68 65 20 63 69 20 70 61 67 mple) the ci pag
0b00: 65 20 2a 2f 0d 0a 74 61 62 6c 65 2e 6c 61 62 65 e */..table.labe
0b10: 6c 2d 76 61 6c 75 65 20 74 68 20 7b 0d 0a 20 20 l-value th {..
0b20: 76 65 72 74 69 63 61 6c 2d 61 6c 69 67 6e 3a 20 vertical-align:
0b30: 74 6f 70 3b 0d 0a 20 20 74 65 78 74 2d 61 6c 69 top;.. text-ali
0b40: 67 6e 3a 20 72 69 67 68 74 3b 0d 0a 20 20 70 61 gn: right;.. pa
0b50: 64 64 69 6e 67 3a 20 30 2e 32 65 78 20 32 65 78 dding: 0.2ex 2ex
0b60: 3b 0d 0a 7d 0d 0a 0d 0a 2f 2a 20 53 69 64 65 2d ;..}..../* Side-
0b70: 62 79 2d 73 69 64 65 20 64 69 66 66 20 2a 2f 0d by-side diff */.
0b80: 0a 74 61 62 6c 65 2e 73 62 73 64 69 66 66 20 7b .table.sbsdiff {
0b90: 0d 0a 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d 63 .. background-c
0ba0: 6f 6c 6f 72 3a 20 77 68 69 74 65 3b 0d 0a 20 20 olor: white;..
0bb0: 66 6f 6e 74 2d 66 61 6d 69 6c 79 3a 20 66 69 78 font-family: fix
0bc0: 65 64 2c 20 44 65 6a 61 76 75 20 53 61 6e 73 20 ed, Dejavu Sans
0bd0: 4d 6f 6e 6f 2c 20 4d 6f 6e 61 63 6f 2c 20 4c 75 Mono, Monaco, Lu
0be0: 63 69 64 61 20 43 6f 6e 73 6f 6c 65 2c 20 6d 6f cida Console, mo
0bf0: 6e 6f 73 70 61 63 65 3b 0d 0a 20 20 66 6f 6e 74 nospace;.. font
0c00: 2d 73 69 7a 65 3a 20 38 70 74 3b 0d 0a 20 20 62 -size: 8pt;.. b
0c10: 6f 72 64 65 72 2d 63 6f 6c 6c 61 70 73 65 3a 63 order-collapse:c
0c20: 6f 6c 6c 61 70 73 65 3b 0d 0a 20 20 77 68 69 74 ollapse;.. whit
0c30: 65 2d 73 70 61 63 65 3a 20 70 72 65 3b 0d 0a 20 e-space: pre;..
0c40: 20 77 69 64 74 68 3a 20 39 38 25 3b 0d 0a 20 20 width: 98%;..
0c50: 62 6f 72 64 65 72 3a 20 31 70 78 20 23 30 30 30 border: 1px #000
0c60: 20 64 61 73 68 65 64 3b 0d 0a 20 20 6d 61 72 67 dashed;.. marg
0c70: 69 6e 2d 6c 65 66 74 3a 20 61 75 74 6f 3b 0d 0a in-left: auto;..
0c80: 20 20 6d 61 72 67 69 6e 2d 72 69 67 68 74 3a 20 margin-right:
0c90: 61 75 74 6f 3b 0d 0a 7d 0d 0a 0d 0a 74 61 62 6c auto;..}....tabl
0ca0: 65 2e 73 62 73 64 69 66 66 20 74 68 2e 64 69 66 e.sbsdiff th.dif
0cb0: 66 68 64 72 20 7b 0d 0a 20 20 62 6f 72 64 65 72 fhdr {.. border
0cc0: 2d 62 6f 74 74 6f 6d 3a 20 64 6f 74 74 65 64 3b -bottom: dotted;
0cd0: 0d 0a 20 20 62 6f 72 64 65 72 2d 77 69 64 74 68 .. border-width
0ce0: 3a 20 31 70 78 3b 0d 0a 7d 0d 0a 0d 0a 74 61 62 : 1px;..}....tab
0cf0: 6c 65 2e 73 62 73 64 69 66 66 20 74 72 20 74 64 le.sbsdiff tr td
0d00: 20 7b 0d 0a 20 20 77 68 69 74 65 2d 73 70 61 63 {.. white-spac
0d10: 65 3a 20 70 72 65 3b 0d 0a 20 20 70 61 64 64 69 e: pre;.. paddi
0d20: 6e 67 2d 6c 65 66 74 3a 20 33 70 78 3b 0d 0a 20 ng-left: 3px;..
0d30: 20 70 61 64 64 69 6e 67 2d 72 69 67 68 74 3a 20 padding-right:
0d40: 33 70 78 3b 0d 0a 20 20 6d 61 72 67 69 6e 3a 20 3px;.. margin:
0d50: 30 70 78 3b 0d 0a 20 20 76 65 72 74 69 63 61 6c 0px;.. vertical
0d60: 2d 61 6c 69 67 6e 3a 20 74 6f 70 3b 0d 0a 7d 0d -align: top;..}.
0d70: 0a 0d 0a 74 61 62 6c 65 2e 73 62 73 64 69 66 66 ...table.sbsdiff
0d80: 20 74 72 20 74 64 2e 6c 69 6e 65 6e 6f 20 7b 0d tr td.lineno {.
0d90: 0a 20 20 74 65 78 74 2d 61 6c 69 67 6e 3a 20 72 . text-align: r
0da0: 69 67 68 74 3b 0d 0a 7d 0d 0a 0d 0a 74 61 62 6c ight;..}....tabl
0db0: 65 2e 73 62 73 64 69 66 66 20 74 72 20 74 64 2e e.sbsdiff tr td.
0dc0: 73 72 63 6c 69 6e 65 20 7b 0d 0a 7d 0d 0a 0d 0a srcline {..}....
0dd0: 74 61 62 6c 65 2e 73 62 73 64 69 66 66 20 74 72 table.sbsdiff tr
0de0: 20 74 64 2e 6d 65 74 61 20 7b 0d 0a 20 20 62 61 td.meta {.. ba
0df0: 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 ckground-color:
0e00: 72 67 62 28 31 37 30 2c 20 31 36 30 2c 20 32 35 rgb(170, 160, 25
0e10: 35 29 3b 0d 0a 20 20 74 65 78 74 2d 61 6c 69 67 5);.. text-alig
0e20: 6e 3a 20 63 65 6e 74 65 72 3b 0d 0a 7d 0d 0a 0d n: center;..}...
0e30: 0a 74 61 62 6c 65 2e 73 62 73 64 69 66 66 20 74 .table.sbsdiff t
0e40: 72 20 74 64 2e 61 64 64 65 64 20 7b 0d 0a 20 20 r td.added {..
0e50: 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 background-color
0e60: 3a 20 72 67 62 28 31 38 30 2c 20 32 35 30 2c 20 : rgb(180, 250,
0e70: 31 38 30 29 3b 0d 0a 7d 0d 0a 74 61 62 6c 65 2e 180);..}..table.
0e80: 73 62 73 64 69 66 66 20 74 72 20 74 64 2e 61 64 sbsdiff tr td.ad
0e90: 64 65 64 76 6f 69 64 20 7b 0d 0a 20 20 62 61 63 dedvoid {.. bac
0ea0: 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 72 kground-color: r
0eb0: 67 62 28 31 39 30 2c 20 31 39 30 2c 20 31 38 30 gb(190, 190, 180
0ec0: 29 3b 0d 0a 7d 0d 0a 0d 0a 74 61 62 6c 65 2e 73 );..}....table.s
0ed0: 62 73 64 69 66 66 20 74 72 20 74 64 2e 72 65 6d bsdiff tr td.rem
0ee0: 6f 76 65 64 20 7b 0d 0a 20 20 62 61 63 6b 67 72 oved {.. backgr
0ef0: 6f 75 6e 64 2d 63 6f 6c 6f 72 3a 20 72 67 62 28 ound-color: rgb(
0f00: 32 35 30 2c 20 31 33 30 2c 20 31 33 30 29 3b 0d 250, 130, 130);.
0f10: 0a 7d 0d 0a 74 61 62 6c 65 2e 73 62 73 64 69 66 .}..table.sbsdif
0f20: 66 20 74 72 20 74 64 2e 72 65 6d 6f 76 65 64 76 f tr td.removedv
0f30: 6f 69 64 20 7b 0d 0a 20 20 62 61 63 6b 67 72 6f oid {.. backgro
0f40: 75 6e 64 2d 63 6f 6c 6f 72 3a 20 72 67 62 28 31 und-color: rgb(1
0f50: 39 30 2c 20 31 39 30 2c 20 31 38 30 29 3b 0d 0a 90, 190, 180);..
0f60: 7d 0d 0a 0d 0a 74 61 62 6c 65 2e 73 62 73 64 69 }....table.sbsdi
0f70: 66 66 20 74 72 20 74 64 2e 63 68 61 6e 67 65 64 ff tr td.changed
0f80: 20 7b 0d 0a 20 20 62 61 63 6b 67 72 6f 75 6e 64 {.. background
0f90: 2d 63 6f 6c 6f 72 3a 20 72 67 62 28 32 31 30 2c -color: rgb(210,
0fa0: 20 32 31 30 2c 20 32 30 30 29 3b 0d 0a 7d 0d 0a 210, 200);..}..
0fb0: 74 61 62 6c 65 2e 73 62 73 64 69 66 66 20 74 72 table.sbsdiff tr
0fc0: 20 74 64 2e 63 68 61 6e 67 65 64 76 6f 69 64 20 td.changedvoid
0fd0: 7b 0d 0a 20 20 62 61 63 6b 67 72 6f 75 6e 64 2d {.. background-
0fe0: 63 6f 6c 6f 72 3a 20 72 67 62 28 31 39 30 2c 20 color: rgb(190,
0ff0: 31 39 30 2c 20 31 38 30 29 3b 0d 0a 7d 0d 0a 0d 190, 180);..}...
1000: 0a 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ./**************
1010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a ****************
1020: 2a 2a 2a 0d 0a 20 2a 0d 0a 20 2a 20 20 53 4f 20 ***.. *.. * SO
1030: 6c 6f 6f 6b 61 6c 69 6b 65 2e 0d 0a 20 2a 0d 0a lookalike... *..
1040: 20 2a 2f 0d 0a 68 74 6d 6c 20 7b 0d 0a 7d 0d 0a */..html {..}..
1050: 62 6f 64 79 20 7b 0d 0a 20 20 20 70 61 64 64 69 body {.. paddi
1060: 6e 67 3a 20 30 3b 0d 0a 20 20 20 6d 61 72 67 69 ng: 0;.. margi
1070: 6e 3a 20 30 3b 0d 0a 7d 0d 0a 62 6f 64 79 2c 20 n: 0;..}..body,
1080: 70 2c 20 61 72 74 69 63 6c 65 2c 20 74 64 20 7b p, article, td {
1090: 0d 0a 20 20 20 66 6f 6e 74 2d 66 61 6d 69 6c 79 .. font-family
10a0: 3a 20 41 72 69 61 6c 3b 0d 0a 20 20 20 66 6f 6e : Arial;.. fon
10b0: 74 2d 73 69 7a 65 3a 20 31 34 70 78 3b 0d 0a 20 t-size: 14px;..
10c0: 20 20 63 6f 6c 6f 72 3a 20 23 31 31 31 3b 0d 0a color: #111;..
10d0: 7d 0d 0a 70 2c 20 61 72 74 69 63 6c 65 20 7b 0d }..p, article {.
10e0: 0a 20 20 20 6c 69 6e 65 2d 68 65 69 67 68 74 3a . line-height:
10f0: 20 31 37 35 25 3b 0d 0a 7d 0d 0a 6c 69 20 7b 0d 175%;..}..li {.
1100: 0a 20 20 20 6d 61 72 67 69 6e 2d 62 6f 74 74 6f . margin-botto
1110: 6d 3a 20 35 70 74 3b 0d 0a 7d 0d 0a 2e 63 6f 6e m: 5pt;..}...con
1120: 74 61 69 6e 65 72 20 7b 0d 0a 20 20 20 6d 61 72 tainer {.. mar
1130: 67 69 6e 2d 6c 65 66 74 3a 20 61 75 74 6f 3b 0d gin-left: auto;.
1140: 0a 20 20 20 6d 61 72 67 69 6e 2d 72 69 67 68 74 . margin-right
1150: 3a 20 61 75 74 6f 3b 0d 0a 20 20 20 77 69 64 74 : auto;.. widt
1160: 68 3a 20 39 36 30 70 78 3b 0d 0a 20 20 20 63 6c h: 960px;.. cl
1170: 65 61 72 3a 20 62 6f 74 68 3b 0d 0a 7d 0d 0a 61 ear: both;..}..a
1180: 20 7b 0d 0a 20 20 20 74 65 78 74 2d 64 65 63 6f {.. text-deco
1190: 72 61 74 69 6f 6e 3a 20 6e 6f 6e 65 3b 0d 0a 20 ration: none;..
11a0: 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 37 font-weight: 7
11b0: 30 30 3b 0d 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 00;.. color: #
11c0: 30 37 63 3b 0d 0a 7d 0d 0a 61 3a 76 69 73 69 74 07c;..}..a:visit
11d0: 65 64 20 7b 0d 0a 20 20 20 63 6f 6c 6f 72 3a 20 ed {.. color:
11e0: 23 34 36 38 3b 0d 0a 7d 0d 0a 2e 68 65 61 64 65 #468;..}...heade
11f0: 72 20 7b 0d 0a 20 20 20 62 61 63 6b 67 72 6f 75 r {.. backgrou
1200: 6e 64 3a 20 23 65 65 65 3b 0d 0a 20 20 20 63 6f nd: #eee;.. co
1210: 6c 6f 72 3a 20 23 39 39 39 3b 0d 0a 20 20 20 70 lor: #999;.. p
1220: 61 64 64 69 6e 67 3a 20 32 70 78 20 30 3b 0d 0a adding: 2px 0;..
1230: 7d 0d 0a 23 74 69 74 6c 65 20 7b 0d 0a 20 20 20 }..#title {..
1240: 66 6c 6f 61 74 3a 20 6c 65 66 74 3b 0d 0a 20 20 float: left;..
1250: 20 63 6f 6c 6f 72 3a 20 23 36 36 36 3b 0d 0a 20 color: #666;..
1260: 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 37 font-weight: 7
1270: 30 30 3b 0d 0a 20 20 20 6d 61 72 67 69 6e 3a 20 00;.. margin:
1280: 33 70 78 3b 0d 0a 7d 0d 0a 0d 0a 2e 62 61 64 67 3px;..}.....badg
1290: 65 31 20 7b 20 63 6f 6c 6f 72 3a 20 23 66 64 35 e1 { color: #fd5
12a0: 3b 20 7d 0d 0a 2e 62 61 64 67 65 32 20 7b 20 63 ; }...badge2 { c
12b0: 6f 6c 6f 72 3a 20 23 63 63 63 3b 20 7d 0d 0a 2e olor: #ccc; }...
12c0: 62 61 64 67 65 33 20 7b 20 63 6f 6c 6f 72 3a 20 badge3 { color:
12d0: 23 63 39 36 3b 20 7d 0d 0a 0d 0a 23 6c 6f 67 6f #c96; }....#logo
12e0: 20 7b 0d 0a 20 20 20 68 65 69 67 68 74 3a 20 31 {.. height: 1
12f0: 30 30 70 78 3b 0d 0a 7d 0d 0a 23 6e 61 76 6c 69 00px;..}..#navli
1300: 73 74 20 7b 0d 0a 20 20 20 70 61 64 64 69 6e 67 st {.. padding
1310: 2d 74 6f 70 3a 20 35 35 70 78 3b 0d 0a 7d 0d 0a -top: 55px;..}..
1320: 23 6e 61 76 6c 69 73 74 20 61 20 7b 20 0d 0a 20 #navlist a { ..
1330: 20 20 63 6f 6c 6f 72 3a 20 23 66 66 66 66 66 66 color: #ffffff
1340: 3b 0d 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 ;.. font-weigh
1350: 74 3a 20 39 30 30 3b 0d 0a 20 20 20 66 6f 6e 74 t: 900;.. font
1360: 2d 73 69 7a 65 3a 20 31 33 30 25 3b 0d 0a 20 20 -size: 130%;..
1370: 20 70 61 64 64 69 6e 67 3a 20 34 70 78 20 31 35 padding: 4px 15
1380: 70 78 3b 0d 0a 20 20 20 62 61 63 6b 67 72 6f 75 px;.. backgrou
1390: 6e 64 3a 20 23 37 37 37 3b 0d 0a 7d 0d 0a 23 6e nd: #777;..}..#n
13a0: 61 76 6c 69 73 74 20 61 2e 63 75 72 72 65 6e 74 avlist a.current
13b0: 2c 20 23 6e 61 76 6c 69 73 74 20 61 3a 68 6f 76 , #navlist a:hov
13c0: 65 72 20 7b 20 0d 0a 20 20 20 62 61 63 6b 67 72 er { .. backgr
13d0: 6f 75 6e 64 3a 20 23 66 39 30 3b 0d 0a 7d 0d 0a ound: #f90;..}..
13e0: 23 6e 61 76 6c 69 73 74 20 61 2e 6c 61 73 74 20 #navlist a.last
13f0: 7b 20 0d 0a 20 20 20 6d 61 72 67 69 6e 2d 6c 65 { .. margin-le
1400: 66 74 3a 20 35 30 70 78 3b 3b 0d 0a 7d 0d 0a 0d ft: 50px;;..}...
1410: 0a 0d 0a 2e 6d 61 69 6e 62 61 72 20 7b 0d 0a 20 ....mainbar {..
1420: 20 20 77 69 64 74 68 3a 20 37 33 30 70 78 3b 0d width: 730px;.
1430: 0a 20 20 20 66 6c 6f 61 74 3a 20 6c 65 66 74 3b . float: left;
1440: 0d 0a 20 20 20 70 61 64 64 69 6e 67 2d 74 6f 70 .. padding-top
1450: 3a 20 31 30 70 78 3b 0d 0a 7d 0d 0a 0d 0a 2e 73 : 10px;..}.....s
1460: 69 64 65 62 61 72 20 7b 0d 0a 20 20 20 77 69 64 idebar {.. wid
1470: 74 68 3a 20 32 32 30 70 78 3b 0d 0a 20 20 20 66 th: 220px;.. f
1480: 6c 6f 61 74 3a 20 72 69 67 68 74 3b 0d 0a 7d 0d loat: right;..}.
1490: 0a 0d 0a 0d 0a 2e 74 6f 70 69 63 20 7b 0d 0a 20 ......topic {..
14a0: 20 20 20 70 61 64 64 69 6e 67 3a 20 32 32 70 74 padding: 22pt
14b0: 20 30 20 31 35 70 74 20 30 3b 0d 0a 20 20 20 20 0 15pt 0;..
14c0: 62 6f 72 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 31 border-bottom: 1
14d0: 70 78 20 73 6f 6c 69 64 20 23 39 39 39 3b 0d 0a px solid #999;..
14e0: 7d 0d 0a 2e 74 6f 70 69 63 20 74 74 2c 20 2e 74 }...topic tt, .t
14f0: 6f 70 69 63 20 6b 62 64 20 7b 0d 0a 20 20 20 66 opic kbd {.. f
1500: 6f 6e 74 2d 73 69 7a 65 3a 20 38 30 25 3b 0d 0a ont-size: 80%;..
1510: 20 20 20 63 6f 6c 6f 72 3a 20 23 35 35 35 3b 0d color: #555;.
1520: 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 . background:
1530: 23 66 37 66 37 66 37 3b 0d 0a 20 20 20 6d 61 72 #f7f7f7;.. mar
1540: 67 69 6e 2d 6c 65 66 74 3a 20 33 30 70 78 3b 0d gin-left: 30px;.
1550: 0a 20 20 20 64 69 73 70 6c 61 79 3a 20 62 6c 6f . display: blo
1560: 63 6b 3b 0d 0a 7d 0d 0a 2e 74 6f 70 69 63 2d 6f ck;..}...topic-o
1570: 70 74 69 6f 6e 73 20 61 2c 20 2e 74 6f 70 69 63 ptions a, .topic
1580: 2d 6f 70 74 69 6f 6e 73 20 7b 0d 0a 20 20 20 63 -options {.. c
1590: 6f 6c 6f 72 3a 20 23 61 61 61 3b 0d 0a 20 20 20 olor: #aaa;..
15a0: 66 6f 6e 74 2d 77 65 69 67 68 74 3a 20 31 30 30 font-weight: 100
15b0: 3b 0d 0a 20 20 20 70 61 64 64 69 6e 67 2d 74 6f ;.. padding-to
15c0: 70 3a 20 33 30 70 78 3b 0d 0a 7d 0d 0a 75 6c 2e p: 30px;..}..ul.
15d0: 74 6f 70 69 63 2d 6c 69 73 74 20 7b 0d 0a 20 20 topic-list {..
15e0: 20 6d 61 72 67 69 6e 2d 74 6f 70 3a 20 32 30 70 margin-top: 20p
15f0: 74 3b 0d 0a 20 20 20 70 61 64 64 69 6e 67 3a 20 t;.. padding:
1600: 30 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 68 65 6c 70 0;..}......#help
1610: 62 6f 78 20 7b 0d 0a 20 20 20 62 61 63 6b 67 72 box {.. backgr
1620: 6f 75 6e 64 3a 20 23 66 65 63 3b 0d 0a 20 20 20 ound: #fec;..
1630: 62 6f 72 64 65 72 2d 72 61 64 69 75 73 3a 20 35 border-radius: 5
1640: 70 78 3b 0d 0a 20 20 20 70 61 64 64 69 6e 67 3a px;.. padding:
1650: 20 31 30 70 78 3b 0d 0a 20 20 20 6d 61 72 67 69 10px;.. margi
1660: 6e 2d 74 6f 70 3a 20 31 35 70 78 3b 0d 0a 20 20 n-top: 15px;..
1670: 20 63 6f 6c 6f 72 3a 20 23 37 35 30 3b 0d 0a 7d color: #750;..}
1680: 0d 0a 23 68 65 6c 70 62 6f 78 20 68 34 20 7b 0d ..#helpbox h4 {.
1690: 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 61 30 30 3b . color: #a00;
16a0: 0d 0a 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 .. font-size:
16b0: 31 34 30 25 3b 0d 0a 20 20 20 6d 61 72 67 69 6e 140%;.. margin
16c0: 3a 20 30 3b 0d 0a 7d 0d 0a 0d 0a 2e 74 61 67 20 : 0;..}.....tag
16d0: 7b 0d 0a 20 20 20 70 61 64 64 69 6e 67 3a 32 70 {.. padding:2p
16e0: 78 20 35 70 78 3b 0d 0a 20 20 20 62 61 63 6b 67 x 5px;.. backg
16f0: 72 6f 75 6e 64 3a 23 65 31 65 39 66 31 3b 0d 0a round:#e1e9f1;..
1700: 20 20 20 63 6f 6c 6f 72 3a 23 35 38 61 3b 0d 0a color:#58a;..
1710: 20 20 20 62 6f 72 64 65 72 3a 31 70 78 20 6f 75 border:1px ou
1720: 74 73 65 74 20 23 63 64 65 3b 0d 0a 7d 0d 0a 0d tset #cde;..}...
1730: 0a 0d 0a 69 6e 70 75 74 5b 74 79 70 65 3d 73 75 ...input[type=su
1740: 62 6d 69 74 5d 20 7b 0d 0a 20 20 20 62 6f 72 64 bmit] {.. bord
1750: 65 72 3a 20 31 70 78 20 73 6f 6c 69 64 20 62 6c er: 1px solid bl
1760: 61 63 6b 3b 0d 0a 20 20 20 70 61 64 64 69 6e 67 ack;.. padding
1770: 3a 20 33 70 78 20 31 30 70 78 3b 0d 0a 20 20 20 : 3px 10px;..
1780: 66 6f 6e 74 3a 20 6e 6f 72 6d 61 6c 20 6e 6f 72 font: normal nor
1790: 6d 61 6c 20 62 6f 6c 64 20 31 34 30 25 20 22 54 mal bold 140% "T
17a0: 72 65 62 75 63 68 65 74 20 4d 53 22 2c 20 73 61 rebuchet MS", sa
17b0: 6e 73 2d 73 65 72 69 66 3b 0d 0a 7d 0d 0a 74 65 ns-serif;..}..te
17c0: 78 74 61 72 65 61 20 7b 0d 0a 20 20 20 62 6f 72 xtarea {.. bor
17d0: 64 65 72 3a 20 31 70 78 20 73 6f 6c 69 64 20 23 der: 1px solid #
17e0: 39 39 39 3b 0d 0a 20 20 20 62 6f 72 64 65 72 2d 999;.. border-
17f0: 62 6f 74 74 6f 6d 3a 20 37 70 78 20 73 6f 6c 69 bottom: 7px soli
1800: 64 20 23 64 64 64 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a d #ddd;..}......
1810: 23 66 6f 6f 74 65 72 2d 73 70 61 63 65 72 20 7b #footer-spacer {
1820: 0d 0a 20 20 20 63 6c 65 61 72 3a 20 62 6f 74 68 .. clear: both
1830: 3b 0d 0a 20 20 20 70 61 64 64 69 6e 67 2d 74 6f ;.. padding-to
1840: 70 3a 20 31 33 30 70 78 3b 0d 0a 7d 0d 0a 66 6f p: 130px;..}..fo
1850: 6f 74 65 72 20 7b 0d 0a 20 20 20 63 6c 65 61 72 oter {.. clear
1860: 3a 20 62 6f 74 68 3b 0d 0a 20 20 20 62 61 63 6b : both;.. back
1870: 67 72 6f 75 6e 64 3a 20 23 35 35 35 3b 0d 0a 20 ground: #555;..
1880: 20 20 70 61 64 64 69 6e 67 3a 20 36 35 70 78 20 padding: 65px
1890: 32 37 35 70 78 3b 0d 0a 20 20 20 62 6f 72 64 65 275px;.. borde
18a0: 72 2d 74 6f 70 3a 20 39 70 78 20 73 6f 6c 69 64 r-top: 9px solid
18b0: 20 62 6c 61 63 6b 3b 0d 0a 20 20 20 63 6f 6c 6f black;.. colo
18c0: 72 3a 20 23 65 65 65 3b 0d 0a 7d 0d 0a 66 6f 6f r: #eee;..}..foo
18d0: 74 65 72 20 70 20 7b 0d 0a 20 20 20 63 6f 6c 6f ter p {.. colo
18e0: 72 3a 20 23 39 39 39 3b 0d 0a 7d 0d 0a 66 6f 6f r: #999;..}..foo
18f0: 74 65 72 20 61 2c 20 66 6f 6f 74 65 72 20 61 3a ter a, footer a:
1900: 76 69 73 69 74 65 64 20 7b 0d 0a 20 20 20 63 6f visited {.. co
1910: 6c 6f 72 3a 20 23 66 65 63 3b 0d 0a 7d 0d 0a 66 lor: #fec;..}..f
1920: 6f 6f 74 65 72 20 75 6c 20 7b 0d 0a 20 20 20 6c ooter ul {.. l
1930: 69 73 74 2d 73 74 79 6c 65 2d 74 79 70 65 3a 20 ist-style-type:
1940: 73 71 75 61 72 65 3b 0d 0a 20 20 20 70 61 64 64 square;.. padd
1950: 69 6e 67 3a 20 30 3b 0d 0a 7d 0d 0a 66 6f 6f 74 ing: 0;..}..foot
1960: 65 72 20 6c 69 20 7b 0d 0a 20 20 20 64 69 73 70 er li {.. disp
1970: 6c 61 79 3a 20 69 6e 6c 69 6e 65 3b 0d 0a 20 20 lay: inline;..
1980: 20 70 61 64 64 69 6e 67 2d 72 69 67 68 74 3a 20 padding-right:
1990: 31 30 70 74 3b 0d 0a 7d 0d 0a 66 6f 6f 74 65 72 10pt;..}..footer
19a0: 20 6c 69 3a 62 65 66 6f 72 65 20 7b 0d 0a 20 20 li:before {..
19b0: 20 63 6f 6c 6f 72 3a 20 23 66 37 33 3b 0d 0a 20 color: #f73;..
19c0: 20 20 63 6f 6e 74 65 6e 74 3a 20 22 e2 ac 9b 20 content: "⬛
19d0: 20 22 3b 0d 0a 7d 0d 0a 66 6f 6f 74 65 72 20 6c ";..}..footer l
19e0: 69 3a 6e 74 68 2d 63 68 69 6c 64 28 65 76 65 6e i:nth-child(even
19f0: 29 3a 62 65 66 6f 72 65 20 7b 0d 0a 20 20 20 63 ):before {.. c
1a00: 6f 6c 6f 72 3a 20 23 66 63 39 3b 0d 0a 7d 0d 0a olor: #fc9;..}..
1a10: 66 6f 6f 74 65 72 20 6c 69 3a 6e 74 68 2d 63 68 footer li:nth-ch
1a20: 69 6c 64 28 33 29 3a 62 65 66 6f 72 65 20 7b 0d ild(3):before {.
1a30: 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 35 37 66 3b . color: #57f;
1a40: 0d 0a 7d 0d 0a 66 6f 6f 74 65 72 20 6c 69 3a 6e ..}..footer li:n
1a50: 74 68 2d 63 68 69 6c 64 28 34 29 3a 62 65 66 6f th-child(4):befo
1a60: 72 65 20 7b 0d 0a 20 20 20 63 6f 6c 6f 72 3a 20 re {.. color:
1a70: 23 36 66 37 3b 0d 0a 7d 0d 0a 0d 0a 0d 0a 23 6d #6f7;..}......#m
1a80: 61 69 6e 20 7b 0d 0a 20 20 20 70 61 64 64 69 6e ain {.. paddin
1a90: 67 2d 74 6f 70 3a 20 33 30 70 78 3b 0d 0a 20 20 g-top: 30px;..
1aa0: 20 6d 69 6e 2d 68 65 69 67 68 74 3a 20 37 30 30 min-height: 700
1ab0: 70 78 3b 0d 0a 7d 0d 0a 23 6d 61 69 6e 20 2e 63 px;..}..#main .c
1ac0: 6f 6e 74 65 6e 74 20 7b 0d 0a 20 20 20 70 61 64 ontent {.. pad
1ad0: 64 69 6e 67 2d 74 6f 70 3a 20 31 35 70 74 3b 0d ding-top: 15pt;.
1ae0: 0a 20 20 20 70 61 64 64 69 6e 67 2d 62 6f 74 74 . padding-bott
1af0: 6f 6d 3a 20 35 30 70 74 3b 0d 0a 7d 0d 0a 68 32 om: 50pt;..}..h2
1b00: 2e 73 75 62 74 69 74 6c 65 20 7b 0d 0a 20 20 20 .subtitle {..
1b10: 66 6f 6e 74 2d 73 69 7a 65 3a 20 32 34 70 78 3b font-size: 24px;
1b20: 0d 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 .. font-weight
1b30: 3a 20 37 30 30 3b 20 20 20 0d 0a 20 20 20 64 69 : 700; .. di
1b40: 73 70 6c 61 79 3a 20 69 6e 6c 69 6e 65 3b 0d 0a splay: inline;..
1b50: 20 20 20 62 6f 72 64 65 72 2d 62 6f 74 74 6f 6d border-bottom
1b60: 3a 20 31 70 78 20 73 6f 6c 69 64 20 23 39 39 39 : 1px solid #999
1b70: 3b 0d 0a 7d 0d 0a 2e 73 75 62 6d 65 6e 75 20 7b ;..}...submenu {
1b80: 20 0d 0a 20 20 20 64 69 73 70 6c 61 79 3a 20 69 .. display: i
1b90: 6e 6c 69 6e 65 3b 0d 0a 20 20 20 62 61 63 6b 67 nline;.. backg
1ba0: 72 6f 75 6e 64 3a 20 77 68 69 74 65 3b 0d 0a 20 round: white;..
1bb0: 20 20 62 6f 72 64 65 72 3a 20 31 70 78 20 23 66 border: 1px #f
1bc0: 66 66 20 73 6f 6c 69 64 3b 0d 0a 20 20 20 62 6f ff solid;.. bo
1bd0: 72 64 65 72 2d 62 6f 74 74 6f 6d 3a 20 31 70 78 rder-bottom: 1px
1be0: 20 23 39 39 39 20 73 6f 6c 69 64 3b 0d 0a 7d 0d #999 solid;..}.
1bf0: 0a 2e 73 75 62 6d 65 6e 75 20 61 2c 20 2e 73 75 ..submenu a, .su
1c00: 62 6d 65 6e 75 20 61 3a 76 69 73 69 74 65 64 20 bmenu a:visited
1c10: 7b 0d 0a 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 {.. font-size:
1c20: 31 38 70 78 3b 0d 0a 20 20 66 6f 6e 74 2d 77 65 18px;.. font-we
1c30: 69 67 68 74 3a 20 32 30 30 3b 0d 0a 20 20 63 6f ight: 200;.. co
1c40: 6c 6f 72 3a 20 62 6c 61 63 6b 3b 0d 0a 7d 0d 0a lor: black;..}..
1c50: 2e 73 75 62 6d 65 6e 75 20 61 3a 68 6f 76 65 72 .submenu a:hover
1c60: 20 7b 0d 0a 20 20 20 62 6f 72 64 65 72 3a 20 31 {.. border: 1
1c70: 70 78 20 23 36 36 36 20 73 6f 6c 69 64 3b 0d 0a px #666 solid;..
1c80: 20 20 20 62 6f 72 64 65 72 2d 62 6f 74 74 6f 6d border-bottom
1c90: 3a 20 77 68 69 74 65 3b 0d 0a 7d 0d 0a 0d 0a 63 : white;..}....c
1ca0: 6f 64 65 20 7b 0d 0a 20 20 20 62 61 63 6b 67 72 ode {.. backgr
1cb0: 6f 75 6e 64 3a 20 23 65 65 65 3b 0d 0a 7d 0d 0a ound: #eee;..}..
1cc0: 70 72 65 20 7b 0d 0a 20 20 20 62 61 63 6b 67 72 pre {.. backgr
1cd0: 6f 75 6e 64 3a 20 23 66 33 66 33 66 33 3b 0d 0a ound: #f3f3f3;..
1ce0: 20 20 20 70 61 64 64 69 6e 67 3a 20 33 70 74 3b padding: 3pt;
1cf0: 0d 0a 7d 0d 0a 0d 0a 75 6c 20 7b 0d 0a 20 20 20 ..}....ul {..
1d00: 6d 61 72 67 69 6e 2d 74 6f 70 3a 20 33 70 74 3b margin-top: 3pt;
1d10: 0d 0a 7d 0d 0a 0d 0a 2e 73 65 61 72 63 68 2d 72 ..}.....search-r
1d20: 65 73 75 6c 74 20 7b 0d 0a 20 20 20 70 61 64 64 esult {.. padd
1d30: 69 6e 67 3a 20 35 70 74 3b 0d 0a 7d 0d 0a 2e 73 ing: 5pt;..}...s
1d40: 65 61 72 63 68 2d 72 65 73 75 6c 74 20 61 20 7b earch-result a {
1d50: 0d 0a 20 20 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 .. font-size:
1d60: 31 34 30 25 3b 0d 0a 20 20 20 66 6f 6e 74 2d 77 140%;.. font-w
1d70: 65 69 67 68 74 3a 20 33 30 30 3b 0d 0a 7d 0d 0a eight: 300;..}..
1d80: 2e 73 65 61 72 63 68 2d 6c 69 6e 6b 20 61 20 7b .search-link a {
1d90: 0d 0a 20 20 20 66 6f 6e 74 2d 77 65 69 67 68 74 .. font-weight
1da0: 3a 20 31 30 30 3b 0d 0a 20 20 20 66 6f 6e 74 2d : 100;.. font-
1db0: 73 69 7a 65 3a 20 36 30 25 3b 0d 0a 20 20 20 63 size: 60%;.. c
1dc0: 6f 6c 6f 72 3a 20 23 33 33 37 37 33 33 3b 0d 0a olor: #337733;..
1dd0: 7d 0d 0a 2e 73 65 61 72 63 68 2d 65 78 63 65 72 }...search-excer
1de0: 70 74 20 7b 0d 0a 20 20 20 63 6f 6c 6f 72 3a 20 pt {.. color:
1df0: 23 33 33 33 3b 0d 0a 7d 0d 0a 2e 73 65 61 72 63 #333;..}...searc
1e00: 68 2d 68 65 61 64 6c 69 6e 65 20 7b 0d 0a 20 20 h-headline {..
1e10: 20 66 6f 6e 74 2d 73 69 7a 65 3a 20 33 30 30 25 font-size: 300%
1e20: 3b 0d 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 39 39 ;.. color: #99
1e30: 39 3b 0d 0a 20 20 20 6c 65 74 74 65 72 2d 73 70 9;.. letter-sp
1e40: 61 63 69 6e 67 3a 20 35 70 74 3b 0d 0a 7d 0d 0a acing: 5pt;..}..
1e50: 2e 73 65 61 72 63 68 2d 65 78 63 65 72 70 74 20 .search-excerpt
1e60: 6d 61 72 6b 20 7b 0d 0a 20 20 20 74 65 78 74 2d mark {.. text-
1e70: 64 65 63 6f 72 61 74 69 6f 6e 3a 20 6e 6f 6e 65 decoration: none
1e80: 3b 0d 0a 20 20 20 66 6f 6e 74 2d 73 74 79 6c 65 ;.. font-style
1e90: 3a 20 69 74 61 6c 69 63 3b 0d 0a 20 20 20 66 6f : italic;.. fo
1ea0: 6e 74 2d 77 65 69 67 68 74 3a 20 37 30 30 3b 0d nt-weight: 700;.
1eb0: 0a 20 20 20 63 6f 6c 6f 72 3a 20 23 61 61 33 33 . color: #aa33
1ec0: 32 32 3b 0d 0a 7d 0d 0a 0d 0a 23 6c 61 6e 67 75 22;..}....#langu
1ed0: 61 67 65 2d 62 61 72 20 7b 0d 0a 20 20 20 63 6c age-bar {.. cl
1ee0: 65 61 72 3a 20 62 6f 74 68 3b 0d 0a 20 20 20 70 ear: both;.. p
1ef0: 6f 73 69 74 69 6f 6e 3a 20 72 65 6c 61 74 69 76 osition: relativ
1f00: 65 3b 0d 0a 20 20 20 74 6f 70 3a 20 2d 32 70 78 e;.. top: -2px
1f10: 3b 0d 0a 20 20 20 77 69 64 74 68 3a 20 31 30 30 ;.. width: 100
1f20: 25 3b 0d 0a 20 20 20 68 65 69 67 68 74 3a 20 35 %;.. height: 5
1f30: 70 78 3b 0d 0a 20 20 20 62 6f 78 2d 73 69 7a 69 px;.. box-sizi
1f40: 6e 67 3a 20 62 6f 72 64 65 72 2d 62 6f 78 3b 0d ng: border-box;.
1f50: 0a 20 20 20 62 61 63 6b 67 72 6f 75 6e 64 3a 20 . background:
1f60: 23 65 65 66 3b 0d 0a 7d 0d 0a 27 0a 63 6f 6e 66 #eef;..}..'.conf
1f70: 69 67 20 2f 63 6f 6e 66 69 67 20 32 39 39 30 0a ig /config 2990.
1f80: 31 33 39 35 30 36 38 30 31 33 20 27 68 65 61 64 1395068013 'head
1f90: 65 72 27 20 76 61 6c 75 65 20 27 3c 68 74 6d 6c er' value '<html
1fa0: 3e 0d 0a 3c 68 65 61 64 3e 0d 0a 3c 62 61 73 65 >..<head>..<base
1fb0: 20 68 72 65 66 3d 22 24 62 61 73 65 75 72 6c 2f href="$baseurl/
1fc0: 24 63 75 72 72 65 6e 74 5f 70 61 67 65 22 20 2f $current_page" /
1fd0: 3e 0d 0a 3c 74 69 74 6c 65 3e 24 3c 70 72 6f 6a >..<title>$<proj
1fe0: 65 63 74 5f 6e 61 6d 65 3e 3a 20 24 3c 74 69 74 ect_name>: $<tit
1ff0: 6c 65 3e 3c 2f 74 69 74 6c 65 3e 0d 0a 20 20 3c le></title>.. <
2000: 6c 69 6e 6b 20 72 65 6c 3d 61 6c 74 65 72 6e 61 link rel=alterna
2010: 74 65 20 74 79 70 65 3d 22 61 70 70 6c 69 63 61 te type="applica
2020: 74 69 6f 6e 2f 72 73 73 2b 78 6d 6c 22 20 74 69 tion/rss+xml" ti
2030: 74 6c 65 3d 54 69 6d 65 6c 69 6e 65 20 68 72 65 tle=Timeline hre
2040: 66 3d 22 24 68 6f 6d 65 2f 74 69 6d 65 6c 69 6e f="$home/timelin
2050: 65 2e 72 73 73 22 3e 0d 0a 20 20 3c 6c 69 6e 6b e.rss">.. <link
2060: 20 72 65 6c 3d 73 74 79 6c 65 73 68 65 65 74 20 rel=stylesheet
2070: 68 72 65 66 3d 22 24 68 6f 6d 65 2f 73 74 79 6c href="$home/styl
2080: 65 2e 63 73 73 3f 64 65 66 61 75 6c 74 22 20 74 e.css?default" t
2090: 79 70 65 3d 22 74 65 78 74 2f 63 73 73 22 20 6d ype="text/css" m
20a0: 65 64 69 61 3d 22 73 63 72 65 65 6e 22 3e 0d 0a edia="screen">..
20b0: 3c 6c 69 6e 6b 20 72 65 6c 3d 22 73 74 79 6c 65 <link rel="style
20c0: 73 68 65 65 74 22 20 68 72 65 66 3d 22 68 74 74 sheet" href="htt
20d0: 70 73 3a 2f 2f 67 6f 6f 67 6c 65 2d 63 6f 64 65 ps://google-code
20e0: 2d 70 72 65 74 74 69 66 79 2e 67 6f 6f 67 6c 65 -prettify.google
20f0: 63 6f 64 65 2e 63 6f 6d 2f 73 76 6e 2f 6c 6f 61 code.com/svn/loa
2100: 64 65 72 2f 70 72 65 74 74 69 66 79 2e 63 73 73 der/prettify.css
2110: 22 20 74 79 70 65 3d 22 74 65 78 74 2f 63 73 73 " type="text/css
2120: 22 20 6d 65 64 69 61 3d 22 73 63 72 65 65 6e 22 " media="screen"
2130: 3e 0d 0a 3c 73 63 72 69 70 74 20 73 72 63 3d 22 >..<script src="
2140: 2f 2f 61 6a 61 78 2e 67 6f 6f 67 6c 65 61 70 69 //ajax.googleapi
2150: 73 2e 63 6f 6d 2f 61 6a 61 78 2f 6c 69 62 73 2f s.com/ajax/libs/
2160: 6a 71 75 65 72 79 2f 32 2e 31 2e 30 2f 6a 71 75 jquery/2.1.0/jqu
2170: 65 72 79 2e 6d 69 6e 2e 6a 73 22 3e 3c 2f 73 63 ery.min.js"></sc
2180: 72 69 70 74 3e 0d 0a 3c 73 63 72 69 70 74 20 73 ript>..<script s
2190: 72 63 3d 22 2f 2f 67 6f 6f 67 6c 65 2d 63 6f 64 rc="//google-cod
21a0: 65 2d 70 72 65 74 74 69 66 79 2e 67 6f 6f 67 6c e-prettify.googl
21b0: 65 63 6f 64 65 2e 63 6f 6d 2f 73 76 6e 2f 6c 6f ecode.com/svn/lo
21c0: 61 64 65 72 2f 72 75 6e 5f 70 72 65 74 74 69 66 ader/run_prettif
21d0: 79 2e 6a 73 3f 61 75 74 6f 6c 6f 61 64 3d 74 72 y.js?autoload=tr
21e0: 75 65 22 3e 3c 2f 73 63 72 69 70 74 3e 0d 0a 3c ue"></script>..<
21f0: 2f 68 65 61 64 3e 0d 0a 3c 62 6f 64 79 20 6f 6e /head>..<body on
2200: 4c 6f 61 64 3d 22 24 28 27 27 63 6f 64 65 2c 70 Load="$(''code,p
2210: 72 65 27 27 29 2e 61 64 64 43 6c 61 73 73 28 27 re'').addClass('
2220: 27 70 72 65 74 74 79 70 72 69 6e 74 27 27 29 3b 'prettyprint'');
2230: 22 3e 0d 0a 0d 0a 3c 68 65 61 64 65 72 20 63 6c ">....<header cl
2240: 61 73 73 3d 68 65 61 64 65 72 3e 0d 0a 3c 64 69 ass=header>..<di
2250: 76 20 63 6c 61 73 73 3d 63 6f 6e 74 61 69 6e 65 v class=containe
2260: 72 3e 0d 0a 20 20 20 3c 61 20 68 72 65 66 3d 22 r>.. <a href="
2270: 2e 22 20 69 64 3d 22 74 69 74 6c 65 22 3e f0 9d ." id="title">
2280: 8c 94 20 46 6f 73 73 69 6c 20 48 75 62 3c 2f 61 Fossil Hub</a
2290: 3e 0d 0a 20 20 20 3c 64 69 76 20 73 74 79 6c 65 >.. <div style
22a0: 3d 22 66 6c 6f 61 74 3a 72 69 67 68 74 22 3e 0d ="float:right">.
22b0: 0a 20 20 20 20 20 20 3c 74 68 31 3e 0d 0a 20 20 . <th1>..
22c0: 20 20 20 20 20 20 20 20 69 66 20 7b 5b 69 6e 66 if {[inf
22d0: 6f 20 65 78 69 73 74 73 20 6c 6f 67 69 6e 5d 7d o exists login]}
22e0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 {..
22f0: 20 20 20 68 74 6d 6c 20 22 e2 9c 89 20 3c 61 20 html "✉ <a
2300: 68 72 65 66 3d 27 27 24 68 6f 6d 65 2f 6c 6f 67 href=''$home/log
2310: 69 6e 27 27 20 63 6c 61 73 73 3d 27 27 70 72 6f in'' class=''pro
2320: 66 69 6c 65 2d 6c 69 6e 6b 27 27 3e 24 6c 6f 67 file-link''>$log
2330: 69 6e 3c 2f 61 3e 20 37 35 31 22 0d 0a 20 20 20 in</a> 751"..
2340: 20 20 20 20 20 20 20 20 20 20 20 20 68 74 6d 6c html
2350: 20 22 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 61 "<span class=ba
2360: 64 67 65 31 3e e2 9c b9 3c 2f 73 70 61 6e 3e 31 dge1>✹</span>1
2370: 20 20 3c 73 70 61 6e 20 63 6c 61 73 73 3d 62 61 <span class=ba
2380: 64 67 65 33 3e e2 9c b9 3c 2f 73 70 61 6e 3e 35 dge3>✹</span>5
2390: 20 7c 20 22 0d 0a 20 20 20 20 20 20 20 20 20 20 | "..
23a0: 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 68 72 html "<a hr
23b0: 65 66 3d 27 27 24 68 6f 6d 65 2f 6c 6f 67 69 6e ef=''$home/login
23c0: 27 27 3e 4c 6f 67 6f 75 74 3c 2f 61 3e 20 7c 20 ''>Logout</a> |
23d0: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 ".. } e
23e0: 6c 73 65 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 lse {..
23f0: 20 20 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 html "<a
2400: 68 72 65 66 3d 27 27 24 68 6f 6d 65 2f 6c 6f 67 href=''$home/log
2410: 69 6e 27 27 3e 4c 6f 67 69 6e 3c 2f 61 3e 20 7c in''>Login</a> |
2420: 20 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 "..
2430: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
2440: 20 20 20 69 66 20 7b 5b 68 61 73 63 61 70 20 73 if {[hascap s
2450: 5d 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ]} {..
2460: 20 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 68 html "<a h
2470: 72 65 66 3d 27 27 24 68 6f 6d 65 2f 73 65 74 75 ref=''$home/setu
2480: 70 27 27 3e 41 64 6d 69 6e 3c 2f 61 3e 20 7c 20 p''>Admin</a> |
2490: 22 0d 0a 20 20 20 20 20 20 20 20 20 20 7d 20 65 ".. } e
24a0: 6c 73 65 69 66 20 7b 5b 68 61 73 63 61 70 20 61 lseif {[hascap a
24b0: 5d 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ]} {..
24c0: 20 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 68 html "<a h
24d0: 72 65 66 3d 27 27 24 68 6f 6d 65 2f 73 65 74 75 ref=''$home/setu
24e0: 70 5f 75 6c 69 73 74 27 27 3e 55 73 65 72 73 3c p_ulist''>Users<
24f0: 2f 61 3e 20 7c 20 22 0d 0a 20 20 20 20 20 20 20 /a> | "..
2500: 20 20 20 7d 0d 0a 20 20 20 20 20 20 3c 2f 74 68 }.. </th
2510: 31 3e 0d 0a 20 20 20 20 20 20 3c 61 20 68 72 65 1>.. <a hre
2520: 66 3d 22 2f 2f 66 6f 73 73 69 6c 2d 73 63 6d 2e f="//fossil-scm.
2530: 6f 72 67 22 3e 46 6f 73 73 69 6c 20 6d 61 6e 75 org">Fossil manu
2540: 61 6c 3c 2f 61 3e 20 7c 0d 0a 20 20 20 20 20 20 al</a> |..
2550: 3c 66 6f 72 6d 20 69 64 3d 67 6f 6f 67 6c 65 20 <form id=google
2560: 73 74 79 6c 65 3d 22 64 69 73 70 6c 61 79 3a 69 style="display:i
2570: 6e 6c 69 6e 65 22 20 61 63 74 69 6f 6e 3d 22 77 nline" action="w
2580: 69 6b 69 22 3e 0d 0a 20 20 20 20 20 20 20 20 20 iki">..
2590: 3c 69 6e 70 75 74 20 6e 61 6d 65 3d 22 6e 61 6d <input name="nam
25a0: 65 22 20 73 69 7a 65 3d 22 32 38 22 20 76 61 6c e" size="28" val
25b0: 75 65 3d 22 22 20 70 6c 61 63 65 68 6f 6c 64 65 ue="" placeholde
25c0: 72 3d 22 73 65 61 72 63 68 20 77 69 6b 69 2b 66 r="search wiki+f
25d0: 69 6c 65 73 22 3e 0d 0a 20 20 20 20 20 20 3c 2f iles">.. </
25e0: 66 6f 72 6d 3e 0d 0a 20 20 20 20 20 20 3c 21 2d form>.. <!-
25f0: 2d 66 6f 72 6d 20 69 64 3d 67 6f 6f 67 6c 65 20 -form id=google
2600: 73 74 79 6c 65 3d 22 64 69 73 70 6c 61 79 3a 69 style="display:i
2610: 6e 6c 69 6e 65 22 20 61 63 74 69 6f 6e 3d 22 68 nline" action="h
2620: 74 74 70 3a 2f 2f 67 6f 6f 67 6c 65 2e 63 6f 6d ttp://google.com
2630: 2f 73 65 61 72 63 68 22 3e 0d 0a 20 20 20 20 20 /search">..
2640: 20 20 20 20 3c 69 6e 70 75 74 20 6e 61 6d 65 3d <input name=
2650: 22 71 22 20 73 69 7a 65 3d 22 32 38 22 20 76 61 "q" size="28" va
2660: 6c 75 65 3d 22 22 20 70 6c 61 63 65 68 6f 6c 64 lue="" placehold
2670: 65 72 3d 22 73 65 61 72 63 68 22 3e 0d 0a 20 20 er="search">..
2680: 20 20 20 20 20 20 20 3c 69 6e 70 75 74 20 74 79 <input ty
2690: 70 65 3d 22 68 69 64 64 65 6e 22 20 6e 61 6d 65 pe="hidden" name
26a0: 3d 22 61 73 5f 73 69 74 65 73 65 61 72 63 68 22 ="as_sitesearch"
26b0: 20 76 61 6c 75 65 3d 22 24 62 61 73 65 75 72 6c value="$baseurl
26c0: 22 3e 0d 0a 20 20 20 20 20 20 3c 2f 66 6f 72 6d ">.. </form
26d0: 2d 2d 3e 0d 0a 20 20 20 3c 2f 64 69 76 3e 0d 0a -->.. </div>..
26e0: 3c 2f 64 69 76 3e 0d 0a 3c 2f 68 65 61 64 65 72 </div>..</header
26f0: 3e 0d 0a 0d 0a 3c 64 69 76 20 69 64 3d 6c 61 6e >....<div id=lan
2700: 67 75 61 67 65 2d 62 61 72 3e 3c 74 68 31 3e 63 guage-bar><th1>c
2710: 61 74 63 68 20 7b 20 75 69 3a 3a 6c 61 6e 67 5f atch { ui::lang_
2720: 73 74 61 74 73 20 7d 20 3c 2f 74 68 31 3e 3c 2f stats } </th1></
2730: 64 69 76 3e 0d 0a 0d 0a 3c 64 69 76 20 63 6c 61 div>....<div cla
2740: 73 73 3d 22 63 6f 6e 74 61 69 6e 65 72 20 6c 6f ss="container lo
2750: 67 6f 2d 74 69 74 6c 65 2d 6e 61 76 22 3e 0d 0a go-title-nav">..
2760: 20 20 20 20 3c 61 20 68 72 65 66 3d 22 24 68 6f <a href="$ho
2770: 6d 65 22 3e 3c 69 6d 67 20 69 64 3d 6c 6f 67 6f me"><img id=logo
2780: 20 73 72 63 3d 22 24 68 6f 6d 65 2f 6c 6f 67 6f src="$home/logo
2790: 22 20 61 6c 74 3d 22 24 3c 74 69 74 6c 65 3e 22 " alt="$<title>"
27a0: 20 61 6c 69 67 6e 3d 6c 65 66 74 3e 3c 2f 61 3e align=left></a>
27b0: 0d 0a 20 20 20 20 3c 73 70 61 6e 20 63 6c 61 73 .. <span clas
27c0: 73 3d 74 69 74 6c 65 3e 24 3c 70 72 6f 6a 65 63 s=title>$<projec
27d0: 74 5f 6e 61 6d 65 3e 3c 2f 73 70 61 6e 3e 0d 0a t_name></span>..
27e0: 0d 0a 20 20 20 20 3c 6e 61 76 20 69 64 3d 6e 61 .. <nav id=na
27f0: 76 6c 69 73 74 20 63 6c 61 73 73 3d 6d 61 69 6e vlist class=main
2800: 6d 65 6e 75 3e 0d 0a 20 20 20 20 3c 74 68 31 3e menu>.. <th1>
2810: 0d 0a 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b .. if {[
2820: 61 6e 79 63 61 70 20 6a 6f 72 5d 7d 20 7b 0d 0a anycap jor]} {..
2830: 20 20 20 20 20 20 20 20 20 20 20 68 74 6d 6c 20 html
2840: 22 3c 61 20 68 72 65 66 3d 27 27 24 68 6f 6d 65 "<a href=''$home
2850: 2f 74 69 6d 65 6c 69 6e 65 27 27 3e 54 69 6d 65 /timeline''>Time
2860: 6c 69 6e 65 3c 2f 61 3e 5c 6e 22 0d 0a 20 20 20 line</a>\n"..
2870: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 }..
2880: 20 20 69 66 20 7b 5b 68 61 73 63 61 70 20 6f 68 if {[hascap oh
2890: 5d 7d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 ]} {..
28a0: 20 68 74 6d 6c 20 22 3c 61 20 63 6c 61 73 73 3d html "<a class=
28b0: 63 75 72 72 65 6e 74 20 68 72 65 66 3d 27 27 24 current href=''$
28c0: 68 6f 6d 65 2f 74 72 65 65 3f 63 69 3d 74 69 70 home/tree?ci=tip
28d0: 27 27 3e 46 69 6c 65 73 3c 2f 61 3e 5c 6e 22 0d ''>Files</a>\n".
28e0: 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 . }..
28f0: 20 20 20 20 20 20 69 66 20 7b 5b 68 61 73 63 61 if {[hasca
2900: 70 20 6f 5d 7d 20 7b 0d 0a 20 20 20 20 20 20 20 p o]} {..
2910: 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 68 72 65 html "<a hre
2920: 66 3d 27 27 24 68 6f 6d 65 2f 62 72 6c 69 73 74 f=''$home/brlist
2930: 27 27 3e 42 72 61 6e 63 68 65 73 3c 2f 61 3e 5c ''>Branches</a>\
2940: 6e 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 68 n".. h
2950: 74 6d 6c 20 22 3c 61 20 68 72 65 66 3d 27 27 24 tml "<a href=''$
2960: 68 6f 6d 65 2f 74 61 67 6c 69 73 74 27 27 3e 54 home/taglist''>T
2970: 61 67 73 3c 2f 61 3e 5c 6e 22 0d 0a 20 20 20 20 ags</a>\n"..
2980: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 }..
2990: 20 69 66 20 7b 5b 68 61 73 63 61 70 20 72 5d 7d if {[hascap r]}
29a0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 68 {.. h
29b0: 74 6d 6c 20 22 3c 61 20 68 72 65 66 3d 27 27 24 tml "<a href=''$
29c0: 68 6f 6d 65 2f 72 70 74 76 69 65 77 3f 72 6e 3d home/rptview?rn=
29d0: 31 27 27 3e 54 69 63 6b 65 74 73 3c 2f 61 3e 5c 1''>Tickets</a>\
29e0: 6e 22 0d 0a 20 20 20 20 20 20 20 20 20 7d 0d 0a n".. }..
29f0: 20 20 20 20 20 20 20 20 20 69 66 20 7b 5b 68 61 if {[ha
2a00: 73 63 61 70 20 6a 5d 7d 20 7b 0d 0a 20 20 20 20 scap j]} {..
2a10: 20 20 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 html "<a
2a20: 63 6c 61 73 73 3d 6c 61 73 74 20 68 72 65 66 3d class=last href=
2a30: 27 27 24 68 6f 6d 65 2f 77 69 6b 69 27 27 3e 57 ''$home/wiki''>W
2a40: 69 6b 69 3c 2f 61 3e 5c 6e 22 0d 0a 20 20 20 20 iki</a>\n"..
2a50: 20 20 20 20 20 20 20 68 74 6d 6c 20 22 3c 61 20 html "<a
2a60: 68 72 65 66 3d 27 27 24 68 6f 6d 65 2f 74 69 6d href=''$home/tim
2a70: 65 6c 69 6e 65 3f 79 3d 77 27 27 3e 52 43 3c 2f eline?y=w''>RC</
2a80: 61 3e 5c 6e 22 0d 0a 20 20 20 20 20 20 20 20 20 a>\n"..
2a90: 7d 0d 0a 20 20 20 20 3c 2f 74 68 31 3e 0d 0a 20 }.. </th1>..
2aa0: 20 20 20 3c 2f 6e 61 76 3e 0d 0a 3c 2f 64 69 76 </nav>..</div
2ab0: 3e 0d 0a 0d 0a 3c 64 69 76 20 63 6c 61 73 73 3d >....<div class=
2ac0: 63 6f 6e 74 61 69 6e 65 72 20 69 64 3d 6d 61 69 container id=mai
2ad0: 6e 3e 0d 0a 20 20 20 3c 68 32 20 63 6c 61 73 73 n>.. <h2 class
2ae0: 3d 73 75 62 74 69 74 6c 65 3e 3c 62 3e 24 3c 74 =subtitle><b>$<t
2af0: 69 74 6c 65 3e 3c 2f 62 3e 3c 2f 68 32 3e 0d 0a itle></b></h2>..
2b00: 0d 0a 3c 74 68 31 3e 0d 0a 20 20 63 61 74 63 68 ..<th1>.. catch
2b10: 20 7b 75 69 3a 3a 73 65 61 72 63 68 5f 6f 6e 5f {ui::search_on_
2b20: 77 69 6b 69 7d 0d 0a 3c 2f 74 68 31 3e 27 0a 63 wiki}..</th1>'.c
2b30: 6f 6e 66 69 67 20 2f 63 6f 6e 66 69 67 20 39 30 onfig /config 90
2b40: 39 0a 31 33 39 32 35 33 38 34 30 36 20 27 66 6f 9.1392538406 'fo
2b50: 6f 74 65 72 27 20 76 61 6c 75 65 20 27 3c 2f 64 oter' value '</d
2b60: 69 76 3e 3c 21 2d 2d 63 6f 6e 74 61 69 6e 65 72 iv><!--container
2b70: 2d 2d 3e 0d 0a 0d 0a 20 20 20 3c 66 6f 6f 74 65 -->.... <foote
2b80: 72 20 63 6c 61 73 73 3d 66 6f 6f 74 65 72 3e 0d r class=footer>.
2b90: 0a 0d 0a 20 20 20 20 20 20 3c 70 3e 3c 61 20 68 ... <p><a h
2ba0: 72 65 66 3d 68 74 74 70 3a 2f 2f 66 6f 73 73 69 ref=http://fossi
2bb0: 6c 2d 73 63 6d 2e 6f 72 67 2f 3e 46 6f 73 73 69 l-scm.org/>Fossi
2bc0: 6c 3c 2f 61 3e 20 76 65 72 73 69 6f 6e 20 3c 74 l</a> version <t
2bd0: 74 3e 24 72 65 6c 65 61 73 65 5f 76 65 72 73 69 t>$release_versi
2be0: 6f 6e 3c 2f 74 74 3e 20 7c 20 4d 61 6e 69 66 65 on</tt> | Manife
2bf0: 73 74 3a 20 24 6d 61 6e 69 66 65 73 74 5f 76 65 st: $manifest_ve
2c00: 72 73 69 6f 6e 20 7c 20 4d 61 6e 69 66 65 73 74 rsion | Manifest
2c10: 20 64 61 74 65 3a 20 24 6d 61 6e 69 66 65 73 74 date: $manifest
2c20: 5f 64 61 74 65 3c 2f 70 3e 0d 0a 0d 0a 20 20 20 _date</p>....
2c30: 20 20 20 3c 70 3e 20 20 0d 0a 20 20 20 20 20 20 <p> ..
2c40: 20 20 20 3c 61 20 68 72 65 66 3d 77 69 6b 69 3e <a href=wiki>
2c50: 77 69 6b 69 3c 2f 61 3e 0d 0a 20 20 20 20 20 20 wiki</a>..
2c60: 20 7c 20 3c 61 20 68 72 65 66 3d 6c 6f 67 69 6e | <a href=login
2c70: 3e 61 63 63 6f 75 6e 74 3c 2f 61 3e 0d 0a 20 20 >account</a>..
2c80: 20 20 20 20 20 7c 20 3c 61 20 68 72 65 66 3d 73 | <a href=s
2c90: 65 74 75 70 3e 61 64 6d 69 6e 3c 2f 61 3e 0d 0a etup>admin</a>..
2ca0: 20 20 20 20 20 20 20 7c 20 3c 61 20 68 72 65 66 | <a href
2cb0: 3d 68 6f 6d 65 3e 68 6f 6d 65 3c 2f 61 3e 0d 0a =home>home</a>..
2cc0: 20 20 20 20 20 20 3c 2f 70 3e 0d 0a 20 20 20 20 </p>..
2cd0: 20 20 3c 75 6c 3e 0d 0a 20 20 20 20 20 20 20 20 <ul>..
2ce0: 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d 74 72 65 <li><a href=tre
2cf0: 65 3f 63 69 3d 74 69 70 3e 46 69 6c 65 73 3c 2f e?ci=tip>Files</
2d00: 61 3e 0d 0a 20 20 20 20 20 20 20 20 20 3c 6c 69 a>.. <li
2d10: 3e 3c 61 20 68 72 65 66 3d 7a 69 70 2f 74 72 75 ><a href=zip/tru
2d20: 6e 6b 2e 7a 69 70 3f 75 75 69 64 3d 74 72 75 6e nk.zip?uuid=trun
2d30: 6b 3e 5a 49 50 3c 2f 61 3e 0d 0a 20 20 20 20 20 k>ZIP</a>..
2d40: 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 3d <li><a href=
2d50: 74 61 72 62 61 6c 6c 2f 74 72 75 6e 6b 2e 7a 69 tarball/trunk.zi
2d60: 70 3f 75 75 69 64 3d 74 72 75 6e 6b 3e 54 47 5a p?uuid=trunk>TGZ
2d70: 3c 2f 61 3e 0d 0a 20 20 20 20 20 20 20 20 20 3c </a>.. <
2d80: 6c 69 3e 3c 61 20 68 72 65 66 3d 74 69 6d 65 6c li><a href=timel
2d90: 69 6e 65 3e 54 69 6d 65 6c 69 6e 65 3c 2f 61 3e ine>Timeline</a>
2da0: 0d 0a 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c .. <li><
2db0: 61 20 68 72 65 66 3d 62 72 6c 69 73 74 3e 42 72 a href=brlist>Br
2dc0: 61 6e 63 68 65 73 3c 2f 61 3e 0d 0a 20 20 20 20 anches</a>..
2dd0: 20 20 20 20 20 3c 6c 69 3e 3c 61 20 68 72 65 66 <li><a href
2de0: 3d 74 61 67 6c 69 73 74 3e 54 61 67 73 3c 2f 61 =taglist>Tags</a
2df0: 3e 0d 0a 20 20 20 20 20 20 20 20 20 3c 6c 69 3e >.. <li>
2e00: 3c 61 20 68 72 65 66 3d 72 65 70 6f 72 74 6c 69 <a href=reportli
2e10: 73 74 3e 54 69 63 6b 65 74 73 3c 2f 61 3e 0d 0a st>Tickets</a>..
2e20: 20 20 20 20 20 20 20 20 20 3c 6c 69 3e 3c 61 20 <li><a
2e30: 68 72 65 66 3d 72 65 70 6f 72 74 73 3e 52 65 70 href=reports>Rep
2e40: 6f 72 74 73 3c 2f 61 3e 0d 0a 20 20 20 20 20 20 orts</a>..
2e50: 3c 2f 75 6c 3e 0d 0a 20 20 20 20 20 20 3c 70 3e </ul>.. <p>
2e60: 20 20 0d 0a 20 20 20 20 20 20 53 6b 69 6e 20 69 .. Skin i
2e70: 6e 73 70 69 72 65 64 20 62 79 20 3c 61 20 68 72 nspired by <a hr
2e80: 65 66 3d 2f 2f 73 2e 74 6b 2f 73 6f 3e 53 74 61 ef=//s.tk/so>Sta
2e90: 63 6b 6f 76 65 72 66 6c 6f 77 3c 2f 61 3e 0d 0a ckoverflow</a>..
2ea0: 20 20 20 20 20 20 3c 2f 70 3e 0d 0a 20 20 20 3c </p>.. <
2eb0: 2f 66 6f 6f 74 65 72 3e 0d 0a 0d 0a 3c 2f 62 6f /footer>....</bo
2ec0: 64 79 3e 0d 0a 3c 2f 68 74 6d 6c 3e 0d 0a 27 0a dy>..</html>..'.
2ed0: 63 6f 6e 66 69 67 20 2f 63 6f 6e 66 69 67 20 39 config /config 9
2ee0: 30 39 37 0a 31 33 39 35 30 36 38 30 35 31 20 27 097.1395068051 '
2ef0: 74 68 31 2d 73 65 74 75 70 27 20 76 61 6c 75 65 th1-setup' value
2f00: 20 27 0a 0a 0a 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d '...# ---------
2f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2f20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2f30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
2f40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 23 20 43 6f 6e ----------.# Con
2f50: 74 72 6f 6c 20 73 74 72 75 63 74 75 72 65 73 0a trol structures.
2f60: 23 0a 23 20 20 20 2b 2b 20 76 61 72 6e 61 6d 65 #.# ++ varname
2f70: 0a 23 20 20 20 3f 3a 20 5b 69 66 5d 20 7b 74 68 .# ?: [if] {th
2f80: 65 6e 7d 20 7b 65 6c 73 65 7d 0a 23 20 20 20 69 en} {else}.# i
2f90: 73 73 65 74 20 76 61 72 6e 61 6d 65 0a 23 20 20 sset varname.#
2fa0: 20 65 71 20 73 74 72 31 20 73 74 72 32 0a 23 0a eq str1 str2.#.
2fb0: 23 20 20 20 77 68 69 6c 65 20 7b 63 6f 6e 64 7d # while {cond}
2fc0: 20 7b 63 6f 64 65 7d 0a 23 20 20 20 66 6f 72 65 {code}.# fore
2fd0: 61 63 68 20 76 61 72 6e 61 6d 65 20 7b 6c 69 73 ach varname {lis
2fe0: 74 7d 20 7b 63 6f 64 65 7d 0a 23 20 20 20 73 77 t} {code}.# sw
2ff0: 69 74 63 68 20 76 61 6c 75 65 20 7b 20 76 61 6c itch value { val
3000: 31 20 7b 63 6f 64 65 31 7d 20 76 61 6c 32 20 7b 1 {code1} val2 {
3010: 63 6f 64 65 32 7d 20 2e 2e 2e 20 7d 0a 23 0a 0a code2} ... }.#..
3020: 0a 0a 23 2d 2d 20 50 72 65 2d 69 6e 63 72 65 6d ..#-- Pre-increm
3030: 65 6e 74 20 20 5b 2b 2b 20 76 61 72 6e 61 6d 65 ent [++ varname
3040: 5d 0a 70 72 6f 63 20 2b 2b 20 7b 76 61 72 6e 61 ].proc ++ {varna
3050: 6d 65 7d 20 7b 0a 20 20 20 75 70 76 61 72 20 31 me} {. upvar 1
3060: 20 24 76 61 72 6e 61 6d 65 20 69 0a 20 20 20 72 $varname i. r
3070: 65 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c 20 31 eturn [uplevel 1
3080: 20 22 73 65 74 20 7b 24 76 61 72 6e 61 6d 65 7d "set {$varname}
3090: 20 5b 65 78 70 72 20 31 2b 24 69 5d 22 5d 0a 7d [expr 1+$i]"].}
30a0: 0a 0a 0a 23 2d 2d 20 74 65 72 6e 61 72 79 20 2f ...#-- ternary /
30b0: 20 69 66 2d 73 68 6f 72 74 68 61 6e 64 20 28 63 if-shorthand (c
30c0: 6f 6e 64 2f 74 68 65 6e 2f 65 6c 73 65 20 6d 61 ond/then/else ma
30d0: 79 20 62 65 20 6c 69 74 65 72 61 6c 73 2c 20 6f y be literals, o
30e0: 72 20 7b 5b 65 78 70 72 65 73 73 69 6f 6e 73 5d r {[expressions]
30f0: 7d 20 74 68 65 6d 73 65 6c 76 65 73 29 0a 70 72 } themselves).pr
3100: 6f 63 20 3f 3a 20 7b 63 6f 6e 64 20 74 68 65 6e oc ?: {cond then
3110: 20 65 6c 73 65 7d 20 7b 0a 20 20 20 75 70 6c 65 else} {. uple
3120: 76 65 6c 20 31 20 22 69 66 20 7b 24 63 6f 6e 64 vel 1 "if {$cond
3130: 7d 20 7b 20 72 65 74 75 72 6e 20 24 74 68 65 6e } { return $then
3140: 3b 20 7d 20 65 6c 73 65 20 7b 20 72 65 74 75 72 ; } else { retur
3150: 6e 20 24 65 6c 73 65 3b 20 7d 22 0a 7d 0a 0a 0a n $else; }".}...
3160: 23 2d 2d 20 69 6e 66 6f 20 65 78 69 73 74 73 20 #-- info exists
3170: 73 68 6f 72 74 68 61 6e 64 0a 70 72 6f 63 20 69 shorthand.proc i
3180: 73 73 65 74 20 7b 76 61 72 6e 61 6d 65 7d 20 7b sset {varname} {
3190: 0a 20 20 20 72 65 74 75 72 6e 20 5b 75 70 6c 65 . return [uple
31a0: 76 65 6c 20 31 20 22 69 6e 66 6f 20 65 78 69 73 vel 1 "info exis
31b0: 74 73 20 7b 24 76 61 72 6e 61 6d 65 7d 22 5d 0a ts {$varname}"].
31c0: 7d 0a 0a 0a 23 2d 2d 20 73 74 72 69 6e 67 20 65 }...#-- string e
31d0: 71 75 61 6c 69 74 79 20 73 68 6f 72 74 68 61 6e quality shorthan
31e0: 64 0a 70 72 6f 63 20 65 71 20 7b 73 74 72 31 20 d.proc eq {str1
31f0: 73 74 72 32 7d 20 7b 0a 20 20 20 72 65 74 75 72 str2} {. retur
3200: 6e 20 5b 65 78 70 72 20 7b 24 73 74 72 31 20 65 n [expr {$str1 e
3210: 71 20 24 73 74 72 32 7d 5d 0a 7d 0a 0a 0a 23 2d q $str2}].}...#-
3220: 2d 20 77 68 69 6c 65 20 6c 6f 6f 70 0a 70 72 6f - while loop.pro
3230: 63 20 77 68 69 6c 65 20 7b 63 6f 6e 64 69 74 69 c while {conditi
3240: 6f 6e 20 63 6f 64 65 7d 20 7b 0a 20 20 20 72 65 on code} {. re
3250: 74 75 72 6e 20 5b 75 70 6c 65 76 65 6c 20 31 20 turn [uplevel 1
3260: 22 66 6f 72 20 7b 7d 20 7b 24 63 6f 6e 64 69 74 "for {} {$condit
3270: 69 6f 6e 7d 20 7b 7d 20 7b 24 63 6f 64 65 7d 22 ion} {} {$code}"
3280: 5d 0a 7d 0a 0a 0a 23 2d 2d 20 66 6f 72 65 61 63 ].}...#-- foreac
3290: 68 20 6c 69 73 74 0a 23 0a 23 20 66 6f 72 65 61 h list.#.# forea
32a0: 63 68 20 56 41 52 20 22 61 62 63 20 78 79 7a 20 ch VAR "abc xyz
32b0: 31 32 33 22 20 7b 20 70 75 74 73 20 22 28 24 56 123" { puts "($V
32c0: 41 52 29 20 22 20 7d 0a 23 0a 70 72 6f 63 20 66 AR) " }.#.proc f
32d0: 6f 72 65 61 63 68 20 7b 76 61 72 6e 61 6d 65 20 oreach {varname
32e0: 6c 69 73 74 20 63 6f 64 65 7d 20 7b 0a 20 20 20 list code} {.
32f0: 75 70 76 61 72 20 31 20 24 76 61 72 6e 61 6d 65 upvar 1 $varname
3300: 20 76 61 6c 0a 20 20 20 66 6f 72 20 7b 73 65 74 val. for {set
3310: 20 69 20 30 7d 20 20 7b 24 69 20 3c 20 5b 6c 6c i 0} {$i < [ll
3320: 65 6e 67 74 68 20 24 6c 69 73 74 5d 7d 20 20 7b ength $list]} {
3330: 2b 2b 20 69 7d 20 7b 0a 20 20 20 20 20 20 73 65 ++ i} {. se
3340: 74 20 76 61 6c 20 5b 6c 69 6e 64 65 78 20 24 6c t val [lindex $l
3350: 69 73 74 20 24 69 5d 0a 20 20 20 20 20 20 75 70 ist $i]. up
3360: 6c 65 76 65 6c 20 31 20 22 24 63 6f 64 65 22 0a level 1 "$code".
3370: 20 20 20 7d 0a 7d 0a 0a 0a 23 2d 2d 20 41 20 73 }.}...#-- A s
3380: 77 69 74 63 68 20 73 74 61 74 65 6d 65 6e 74 2e witch statement.
3390: 0a 23 0a 23 20 73 77 69 74 63 68 20 22 76 61 6c .#.# switch "val
33a0: 22 20 7b 0a 23 20 20 20 20 20 20 20 20 22 63 6d " {.# "cm
33b0: 70 31 22 20 7b 63 6f 64 65 31 7d 0a 23 20 20 20 p1" {code1}.#
33c0: 20 20 20 20 20 22 63 6d 70 32 22 20 7b 63 6f 64 "cmp2" {cod
33d0: 65 32 7d 0a 23 20 20 20 20 20 20 20 20 22 63 6d e2}.# "cm
33e0: 70 33 22 20 7b 63 6f 64 65 33 7d 0a 23 20 20 20 p3" {code3}.#
33f0: 7b 7b 64 65 66 61 75 6c 74 7d 7d 20 7b 63 6f 64 {{default}} {cod
3400: 65 4e 7d 0a 23 20 7d 0a 23 0a 70 72 6f 63 20 73 eN}.# }.#.proc s
3410: 77 69 74 63 68 20 7b 63 6f 6d 70 61 72 65 5f 76 witch {compare_v
3420: 61 6c 75 65 20 76 61 6c 5f 63 6f 64 65 5f 70 61 alue val_code_pa
3430: 69 72 73 7d 20 7b 0a 20 20 20 73 65 74 20 6c 65 irs} {. set le
3440: 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 76 61 6c 5f n [llength $val_
3450: 63 6f 64 65 5f 70 61 69 72 73 5d 0a 20 20 20 23 code_pairs]. #
3460: 20 6c 6f 6f 70 20 6f 76 65 72 20 63 6f 6d 70 61 loop over compa
3470: 72 65 20 76 61 6c 75 65 73 20 2b 20 63 6f 64 65 re values + code
3480: 20 70 61 69 72 73 0a 20 20 20 66 6f 72 20 20 7b pairs. for {
3490: 73 65 74 20 6e 20 30 7d 20 20 7b 24 6e 20 3c 20 set n 0} {$n <
34a0: 24 6c 65 6e 7d 20 20 7b 2b 2b 20 6e 7d 20 7b 0a $len} {++ n} {.
34b0: 20 20 20 20 20 20 73 65 74 20 63 6d 70 20 5b 6c set cmp [l
34c0: 69 6e 64 65 78 20 24 76 61 6c 5f 63 6f 64 65 5f index $val_code_
34d0: 70 61 69 72 73 20 24 6e 5d 3b 0a 20 20 20 20 20 pairs $n];.
34e0: 20 69 66 20 7b 5b 65 78 70 72 20 24 63 6d 70 20 if {[expr $cmp
34f0: 65 71 20 24 63 6f 6d 70 61 72 65 5f 76 61 6c 75 eq $compare_valu
3500: 65 20 7c 7c 20 24 63 6d 70 20 65 71 20 7b 7b 64 e || $cmp eq {{d
3510: 65 66 61 75 6c 74 7d 7d 20 5d 7d 20 7b 0a 20 20 efault}} ]} {.
3520: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 5b 75 return [u
3530: 70 6c 65 76 65 6c 20 31 20 5b 6c 69 6e 64 65 78 plevel 1 [lindex
3540: 20 24 76 61 6c 5f 63 6f 64 65 5f 70 61 69 72 73 $val_code_pairs
3550: 20 5b 2b 2b 20 6e 5d 5d 5d 3b 0a 20 20 20 20 20 [++ n]]];.
3560: 20 7d 0a 20 20 20 7d 0a 7d 0a 0a 0a 0a 0a 0a 0a }. }.}.......
3570: 23 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d # --------------
3580: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3590: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
35a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
35b0: 2d 2d 2d 2d 2d 0a 23 20 53 74 72 69 6e 67 20 66 -----.# String f
35c0: 75 6e 63 74 69 6f 6e 73 0a 23 0a 23 20 20 20 73 unctions.#.# s
35d0: 74 72 3a 3a 63 6f 6e 74 61 69 6e 73 20 6e 65 65 tr::contains nee
35e0: 64 6c 65 20 68 61 79 73 74 61 63 6b 0a 23 20 20 dle haystack.#
35f0: 20 73 74 72 3a 3a 6e 65 78 74 20 6e 65 65 64 6c str::next needl
3600: 65 20 68 61 79 73 74 61 63 6b 20 73 74 61 72 74 e haystack start
3610: 69 6e 64 65 78 0a 23 20 20 20 73 74 72 3a 3a 77 index.# str::w
3620: 72 61 70 20 68 61 79 73 74 61 63 6b 20 6e 65 65 rap haystack nee
3630: 64 6c 65 20 61 64 64 62 65 66 6f 72 65 20 61 64 dle addbefore ad
3640: 64 61 66 74 65 72 0a 23 0a 0a 0a 20 20 20 0a 23 dafter.#... .#
3650: 2d 2d 20 72 65 74 75 72 6e 73 20 74 72 75 65 20 -- returns true
3660: 69 66 20 73 74 72 69 6e 67 20 63 6f 6e 74 61 69 if string contai
3670: 6e 65 64 20 69 6e 20 61 6e 6f 74 68 65 72 20 73 ned in another s
3680: 74 72 69 6e 67 0a 70 72 6f 63 20 73 74 72 3a 3a tring.proc str::
3690: 63 6f 6e 74 61 69 6e 73 20 7b 6e 65 65 64 6c 65 contains {needle
36a0: 20 68 61 79 73 74 61 63 6b 7d 20 7b 0a 20 20 20 haystack} {.
36b0: 72 65 74 75 72 6e 20 5b 65 78 70 72 20 7b 2d 31 return [expr {-1
36c0: 20 21 3d 20 5b 73 74 72 69 6e 67 20 66 69 72 73 != [string firs
36d0: 74 20 24 6e 65 65 64 6c 65 20 24 68 61 79 73 74 t $needle $hayst
36e0: 61 63 6b 5d 7d 5d 0a 7d 0a 0a 0a 23 2d 2d 20 77 ack]}].}...#-- w
36f0: 72 61 70 70 65 72 20 66 6f 72 20 5b 73 74 72 69 rapper for [stri
3700: 6e 67 20 66 69 72 73 74 20 2e 2e 2e 5d 20 74 6f ng first ...] to
3710: 20 73 75 70 70 6f 72 74 20 73 74 61 72 74 69 6e support startin
3720: 64 65 78 0a 70 72 6f 63 20 73 74 72 3a 3a 6e 65 dex.proc str::ne
3730: 78 74 20 7b 73 65 61 72 63 68 20 63 6f 6e 74 65 xt {search conte
3740: 6e 74 20 73 74 61 72 74 7d 20 7b 0a 20 20 20 23 nt start} {. #
3750: 20 63 75 74 20 6f 75 74 20 24 63 6f 6e 74 65 6e cut out $conten
3760: 74 20 61 74 20 24 73 74 61 72 74 20 62 65 66 6f t at $start befo
3770: 72 65 20 73 65 61 72 63 68 69 6e 67 0a 20 20 20 re searching.
3780: 73 65 74 20 70 20 5b 73 74 72 69 6e 67 20 66 69 set p [string fi
3790: 72 73 74 20 24 73 65 61 72 63 68 20 5b 73 74 72 rst $search [str
37a0: 69 6e 67 20 72 61 6e 67 65 20 24 63 6f 6e 74 65 ing range $conte
37b0: 6e 74 20 24 73 74 61 72 74 20 5b 73 74 72 69 6e nt $start [strin
37c0: 67 20 6c 65 6e 67 74 68 20 24 63 6f 6e 74 65 6e g length $conten
37d0: 74 5d 5d 5d 0a 20 20 20 69 66 20 5b 65 78 70 72 t]]]. if [expr
37e0: 20 24 70 3e 3d 30 5d 20 7b 0a 20 20 20 20 20 20 $p>=0] {.
37f0: 73 65 74 20 70 20 5b 65 78 70 72 20 24 73 74 61 set p [expr $sta
3800: 72 74 2b 24 70 5d 0a 20 20 20 7d 0a 20 20 20 72 rt+$p]. }. r
3810: 65 74 75 72 6e 20 24 70 0a 7d 0a 0a 0a 23 2d 2d eturn $p.}...#--
3820: 20 65 6e 63 6c 6f 73 65 20 73 74 72 69 6e 67 20 enclose string
3830: 69 6e 20 65 2e 67 2e 20 68 74 6d 6c 20 74 61 67 in e.g. html tag
3840: 73 0a 70 72 6f 63 20 73 74 72 3a 3a 77 72 61 70 s.proc str::wrap
3850: 20 7b 63 6f 6e 74 65 6e 74 20 73 65 61 72 63 68 {content search
3860: 20 62 65 66 6f 72 65 20 61 66 74 65 72 7d 20 7b before after} {
3870: 0a 20 20 20 73 65 74 20 6c 65 6e 20 5b 73 74 72 . set len [str
3880: 69 6e 67 20 6c 65 6e 67 74 68 20 24 73 65 61 72 ing length $sear
3890: 63 68 5d 0a 20 20 20 73 65 74 20 70 20 30 0a 20 ch]. set p 0.
38a0: 20 20 77 68 69 6c 65 20 7b 5b 65 78 70 72 20 5b while {[expr [
38b0: 73 65 74 20 70 20 5b 73 74 72 3a 3a 6e 65 78 74 set p [str::next
38c0: 20 24 73 65 61 72 63 68 20 24 63 6f 6e 74 65 6e $search $conten
38d0: 74 20 24 70 5d 5d 3e 3d 30 5d 7d 20 7b 0a 20 20 t $p]]>=0]} {.
38e0: 20 20 20 20 73 65 74 20 63 6f 6e 74 65 6e 74 20 set content
38f0: 22 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 "[string range $
3900: 63 6f 6e 74 65 6e 74 20 30 20 5b 65 78 70 72 20 content 0 [expr
3910: 24 70 2d 31 5d 5d 24 62 65 66 6f 72 65 24 73 65 $p-1]]$before$se
3920: 61 72 63 68 24 61 66 74 65 72 5b 73 74 72 69 6e arch$after[strin
3930: 67 20 72 61 6e 67 65 20 24 63 6f 6e 74 65 6e 74 g range $content
3940: 20 5b 65 78 70 72 20 24 70 2b 24 6c 65 6e 5d 20 [expr $p+$len]
3950: 32 30 30 30 5d 22 3b 0a 20 20 20 20 20 20 73 65 2000]";. se
3960: 74 20 70 20 5b 65 78 70 72 20 24 70 2b 5b 73 74 t p [expr $p+[st
3970: 72 69 6e 67 20 6c 65 6e 67 74 68 20 22 24 62 65 ring length "$be
3980: 66 6f 72 65 2b 24 73 65 61 72 63 68 2b 24 61 66 fore+$search+$af
3990: 74 65 72 22 5d 5d 3b 20 23 20 73 6b 69 70 20 61 ter"]]; # skip a
39a0: 20 6c 69 74 74 6c 65 20 66 75 72 74 68 65 72 0a little further.
39b0: 20 20 20 7d 0a 20 20 20 72 65 74 75 72 6e 20 24 }. return $
39c0: 63 6f 6e 74 65 6e 74 0a 7d 0a 0a 0a 23 2d 2d 20 content.}...#--
39d0: 53 70 6c 69 74 20 73 74 72 69 6e 67 20 69 6e 74 Split string int
39e0: 6f 20 6c 69 73 74 20 6f 6e 20 64 65 6c 69 6d 69 o list on delimi
39f0: 74 65 72 20 63 68 61 72 61 63 74 65 72 0a 23 20 ter character.#
3a00: 28 62 61 73 69 63 61 6c 6c 79 20 6a 75 73 74 20 (basically just
3a10: 74 75 72 6e 73 20 64 65 6c 69 6d 69 74 65 72 20 turns delimiter
3a20: 69 6e 74 6f 20 73 70 61 63 65 29 0a 23 0a 70 72 into space).#.pr
3a30: 6f 63 20 73 74 72 3a 3a 65 78 70 6c 6f 64 65 20 oc str::explode
3a40: 7b 64 65 6c 69 6d 20 73 74 72 7d 20 7b 0a 20 20 {delim str} {.
3a50: 20 73 65 74 20 72 20 22 22 0a 20 20 20 73 65 74 set r "". set
3a60: 20 6c 65 6e 20 5b 73 74 72 69 6e 67 20 6c 65 6e len [string len
3a70: 67 74 68 20 24 73 74 72 5d 0a 20 20 20 77 68 69 gth $str]. whi
3a80: 6c 65 20 7b 2d 31 20 21 3d 20 5b 73 65 74 20 70 le {-1 != [set p
3a90: 20 5b 73 74 72 69 6e 67 20 66 69 72 73 74 20 24 [string first $
3aa0: 64 65 6c 69 6d 20 24 73 74 72 5d 5d 7d 20 7b 0a delim $str]]} {.
3ab0: 20 20 20 20 20 20 73 65 74 20 72 20 22 24 72 20 set r "$r
3ac0: 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 73 [string range $s
3ad0: 74 72 20 30 20 5b 65 78 70 72 20 24 70 2d 31 5d tr 0 [expr $p-1]
3ae0: 5d 22 0a 20 20 20 20 20 20 73 65 74 20 73 74 72 ]". set str
3af0: 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 24 [string range $
3b00: 73 74 72 20 5b 2b 2b 20 70 5d 20 24 6c 65 6e 5d str [++ p] $len]
3b10: 0a 20 20 20 7d 0a 20 20 20 72 65 74 75 72 6e 20 . }. return
3b20: 5b 6c 69 73 74 20 5b 73 74 72 69 6e 67 20 74 72 [list [string tr
3b30: 69 6d 20 22 24 72 20 24 73 74 72 22 5d 5d 0a 7d im "$r $str"]].}
3b40: 20 20 20 0a 0a 0a 0a 0a 0a 0a 23 20 2d 2d 2d 2d .......# ----
3b50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
3b90: 23 20 55 73 65 72 20 49 6e 74 65 72 66 61 63 65 # User Interface
3ba0: 20 75 74 69 6c 69 74 79 20 63 6f 64 65 0a 23 0a utility code.#.
3bb0: 23 20 20 20 73 71 6c 3a 3a 61 6c 6c 6f 77 65 64 # sql::allowed
3bc0: 20 73 61 66 65 5f 73 74 72 69 6e 67 0a 23 20 20 safe_string.#
3bd0: 20 75 69 3a 3a 70 61 67 65 5f 65 78 69 73 74 73 ui::page_exists
3be0: 20 57 69 6b 69 50 61 67 65 0a 23 20 20 20 75 69 WikiPage.# ui
3bf0: 3a 3a 66 69 6c 65 5f 65 78 69 73 74 73 20 66 69 ::file_exists fi
3c00: 6c 65 2e 6e 61 6d 65 0a 23 0a 23 20 20 20 75 69 le.name.#.# ui
3c10: 3a 3a 73 65 61 72 63 68 20 74 65 72 6d 73 20 62 ::search terms b
3c20: 61 73 65 75 72 6c 0a 23 20 20 20 75 69 3a 3a 73 aseurl.# ui::s
3c30: 65 61 72 63 68 5f 6f 6e 5f 77 69 6b 69 20 20 20 earch_on_wiki
3c40: 0a 23 20 20 20 75 69 3a 3a 73 74 61 74 73 0a 23 .# ui::stats.#
3c50: 20 20 20 75 69 3a 3a 6c 61 6e 67 5f 73 74 61 74 ui::lang_stat
3c60: 73 0a 23 0a 0a 0a 0a 23 2d 2d 20 57 68 69 74 65 s.#....#-- White
3c70: 6c 69 73 74 20 70 65 72 6d 69 73 73 69 62 6c 65 list permissible
3c80: 20 63 68 61 72 61 63 74 65 72 73 20 66 6f 72 20 characters for
3c90: 53 51 4c 20 63 6f 6e 74 65 78 74 0a 23 20 2a 20 SQL context.# *
3ca0: 41 20 77 6f 72 6b 61 72 6f 75 6e 64 20 66 6f 72 A workaround for
3cb0: 20 74 68 65 20 6c 61 63 6b 20 6f 66 20 53 51 4c the lack of SQL
3cc0: 20 65 73 63 61 70 69 6e 67 20 68 65 72 65 20 28 escaping here (
3cd0: 6f 72 20 74 68 65 20 6e 65 77 20 71 75 65 72 79 or the new query
3ce0: 20 41 50 49 20 62 72 61 6e 63 68 29 0a 23 20 2a API branch).# *
3cf0: 20 55 73 65 64 20 69 6e 20 4c 49 4b 45 20 63 6f Used in LIKE co
3d00: 6e 74 65 78 74 2c 20 73 6f 20 3f 20 61 6e 64 20 ntext, so ? and
3d10: 25 20 61 72 65 20 6e 6f 74 20 61 6c 6c 6f 77 65 % are not allowe
3d20: 64 0a 23 20 2a 20 41 6e 64 20 27 27 20 61 6e 64 d.# * And '' and
3d30: 20 5c 20 6f 72 20 22 20 6e 6f 74 20 69 6e 63 6c \ or " not incl
3d40: 75 64 65 64 20 69 6e 20 74 68 65 20 77 68 69 74 uded in the whit
3d50: 65 6c 69 73 74 20 66 6f 72 20 6f 62 76 69 6f 75 elist for obviou
3d60: 73 20 72 65 61 73 6f 6e 73 2e 0a 70 72 6f 63 20 s reasons..proc
3d70: 73 71 6c 3a 3a 61 6c 6c 6f 77 65 64 20 7b 73 74 sql::allowed {st
3d80: 72 7d 20 7b 0a 20 20 20 72 65 74 75 72 6e 20 5b r} {. return [
3d90: 72 65 67 65 78 70 20 7b 5e 5b 61 2d 7a 41 2d 5a regexp {^[a-zA-Z
3da0: 30 2d 39 20 21 24 26 2f 28 29 7b 7d 3d 3c 3e 2c 0-9 !$&/(){}=<>,
3db0: 2e 3b 3a 2d 5f 2b 23 2a 40 5d 2b 24 7d 20 24 73 .;:-_+#*@]+$} $s
3dc0: 74 72 5d 0a 7d 0a 0a 0a 23 2d 2d 20 53 65 61 72 tr].}...#-- Sear
3dd0: 63 68 20 66 75 6e 63 74 69 6f 6e 0a 23 20 2a 20 ch function.# *
3de0: 52 65 71 75 69 72 65 73 20 66 6f 73 73 69 6c 2d Requires fossil-
3df0: 73 65 61 72 63 68 2e 70 68 70 20 74 6f 20 62 75 search.php to bu
3e00: 69 6c 64 20 74 68 65 20 61 63 63 6f 72 64 69 6e ild the accordin
3e10: 67 20 74 61 62 6c 65 0a 23 20 20 20 28 72 65 61 g table.# (rea
3e20: 64 69 6e 67 20 66 72 6f 6d 20 74 68 65 20 72 61 ding from the ra
3e30: 77 20 62 6c 6f 62 73 20 69 73 20 69 6d 70 6f 73 w blobs is impos
3e40: 73 69 62 6c 65 29 20 61 73 20 63 72 6f 6e 6a 6f sible) as cronjo
3e50: 62 0a 23 20 2a 20 41 6e 64 20 61 20 70 61 74 63 b.# * And a patc
3e60: 68 65 64 20 60 66 6f 73 73 69 6c 60 20 62 69 6e hed `fossil` bin
3e70: 61 72 79 20 73 72 63 2f 72 65 70 6f 72 74 2e 63 ary src/report.c
3e80: 20 74 6f 20 61 6c 6c 6f 77 0a 23 20 20 20 53 45 to allow.# SE
3e90: 4c 45 43 54 73 20 6f 6e 20 74 68 65 20 60 73 65 LECTs on the `se
3ea0: 61 72 63 68 60 20 74 61 62 6c 65 2e 0a 70 72 6f arch` table..pro
3eb0: 63 20 75 69 3a 3a 73 65 61 72 63 68 20 7b 74 65 c ui::search {te
3ec0: 72 6d 73 20 62 61 73 65 75 72 6c 7d 20 7b 0a 0a rms baseurl} {..
3ed0: 20 20 20 23 20 63 6c 65 61 6e 75 70 20 24 74 65 # cleanup $te
3ee0: 72 6d 73 0a 20 20 20 69 66 20 5b 73 71 6c 3a 3a rms. if [sql::
3ef0: 61 6c 6c 6f 77 65 64 20 24 74 65 72 6d 73 5d 20 allowed $terms]
3f00: 7b 0a 20 20 20 0a 20 20 20 20 20 20 23 20 70 72 {. . # pr
3f10: 65 70 61 72 65 20 73 65 61 72 63 68 20 71 75 65 epare search que
3f20: 72 79 0a 20 20 20 20 20 20 73 65 74 20 57 48 45 ry. set WHE
3f30: 52 45 20 22 31 22 0a 20 20 20 20 20 20 66 6f 72 RE "1". for
3f40: 65 61 63 68 20 73 65 61 72 63 68 20 24 74 65 72 each search $ter
3f50: 6d 73 20 7b 0a 20 20 20 20 20 20 20 20 20 73 65 ms {. se
3f60: 74 20 57 48 45 52 45 20 22 24 57 48 45 52 45 20 t WHERE "$WHERE
3f70: 41 4e 44 20 63 6f 6e 74 65 6e 74 20 4c 49 4b 45 AND content LIKE
3f80: 20 27 27 25 24 73 65 61 72 63 68 25 27 27 22 0a ''%$search%''".
3f90: 20 20 20 20 20 20 7d 0a 0a 20 20 20 20 20 20 23 }.. #
3fa0: 20 70 65 72 66 6f 72 6d 20 73 65 61 72 63 68 0a perform search.
3fb0: 20 20 20 20 20 20 71 75 65 72 79 20 22 53 45 4c query "SEL
3fc0: 45 43 54 20 70 61 74 68 2c 20 74 79 70 65 2c 20 ECT path, type,
3fd0: 6e 61 6d 65 2c 20 63 6f 6e 74 65 6e 74 20 46 52 name, content FR
3fe0: 4f 4d 20 66 78 5f 73 65 61 72 63 68 20 57 48 45 OM fx_search WHE
3ff0: 52 45 20 24 57 48 45 52 45 22 20 7b 0a 0a 20 20 RE $WHERE" {..
4000: 20 20 20 20 20 20 20 23 20 63 6f 6e 65 6e 74 20 # conent
4010: 65 78 63 65 72 70 74 20 61 6e 64 20 68 69 67 68 excerpt and high
4020: 6c 69 67 68 74 69 6e 67 20 20 20 20 20 20 0a 20 lighting .
4030: 20 20 20 20 20 20 20 20 73 65 74 20 70 20 5b 73 set p [s
4040: 74 72 69 6e 67 20 66 69 72 73 74 20 24 74 65 72 tring first $ter
4050: 6d 73 20 24 63 6f 6e 74 65 6e 74 5d 0a 20 20 20 ms $content].
4060: 20 20 20 20 20 20 73 65 74 20 65 78 63 65 72 70 set excerp
4070: 74 20 5b 73 74 72 69 6e 67 20 72 61 6e 67 65 20 t [string range
4080: 24 63 6f 6e 74 65 6e 74 20 5b 65 78 70 72 20 24 $content [expr $
4090: 70 2d 35 30 5d 20 5b 65 78 70 72 20 24 70 2b 34 p-50] [expr $p+4
40a0: 35 30 5d 5d 0a 20 20 20 20 20 20 20 20 20 66 6f 50]]. fo
40b0: 72 65 61 63 68 20 73 65 61 72 63 68 20 24 74 65 reach search $te
40c0: 72 6d 73 20 7b 0a 20 20 20 20 20 20 20 20 20 20 rms {.
40d0: 20 20 73 65 74 20 65 78 63 65 72 70 74 20 5b 73 set excerpt [s
40e0: 74 72 3a 3a 77 72 61 70 20 22 24 65 78 63 65 72 tr::wrap "$excer
40f0: 70 74 22 20 24 73 65 61 72 63 68 20 3c 6d 61 72 pt" $search <mar
4100: 6b 3e 20 3c 2f 6d 61 72 6b 3e 5d 0a 20 20 20 20 k> </mark>].
4110: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 0a 20 20 }. .
4120: 20 20 20 20 20 20 20 23 20 66 6f 72 6d 61 74 20 # format
4130: 72 65 73 75 6c 74 20 6c 69 73 74 0a 20 20 20 20 result list.
4140: 20 20 20 20 20 68 74 6d 6c 20 22 0a 20 20 20 20 html ".
4150: 20 20 20 20 20 3c 64 69 76 20 63 6c 61 73 73 3d <div class=
4160: 73 65 61 72 63 68 2d 72 65 73 75 6c 74 3e 0a 20 search-result>.
4170: 20 20 20 20 20 20 20 20 20 20 20 3c 62 3e 5b 68 <b>[h
4180: 74 6d 6c 69 7a 65 20 24 74 79 70 65 5d 3c 2f 62 tmlize $type]</b
4190: 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 61 >. <a
41a0: 20 68 72 65 66 3d 5b 68 74 6d 6c 69 7a 65 20 24 href=[htmlize $
41b0: 70 61 74 68 5d 3e 5b 68 74 6d 6c 69 7a 65 20 24 path]>[htmlize $
41c0: 6e 61 6d 65 5d 3c 2f 61 3e 20 3c 62 72 3e 0a 20 name]</a> <br>.
41d0: 20 20 20 20 20 20 20 20 20 20 20 3c 73 70 61 6e <span
41e0: 20 63 6c 61 73 73 3d 73 65 61 72 63 68 2d 6c 69 class=search-li
41f0: 6e 6b 3e 3c 61 20 68 72 65 66 3d 5b 68 74 6d 6c nk><a href=[html
4200: 69 7a 65 20 24 70 61 74 68 5d 3e 24 62 61 73 65 ize $path]>$base
4210: 75 72 6c 2f 5b 68 74 6d 6c 69 7a 65 20 24 70 61 url/[htmlize $pa
4220: 74 68 5d 3c 2f 61 3e 3c 2f 73 70 61 6e 3e 20 3c th]</a></span> <
4230: 62 72 3e 0a 20 20 20 20 20 20 20 20 20 20 20 20 br>.
4240: 3c 73 6d 61 6c 6c 20 63 6c 61 73 73 3d 73 65 61 <small class=sea
4250: 72 63 68 2d 65 78 63 65 72 70 74 3e 24 65 78 63 rch-excerpt>$exc
4260: 65 72 70 74 3c 2f 73 6d 61 6c 6c 3e 0a 20 20 20 erpt</small>.
4270: 20 20 20 20 20 20 3c 2f 64 69 76 3e 5c 6e 22 3b </div>\n";
4280: 0a 20 20 20 20 20 20 7d 0a 20 20 20 7d 0a 7d 0a . }. }.}.
4290: 0a 0a 23 2d 2d 20 43 68 65 63 6b 20 66 6f 72 20 ..#-- Check for
42a0: 65 78 69 73 74 65 6e 63 65 20 6f 66 20 77 69 6b existence of wik
42b0: 69 20 70 61 67 65 0a 70 72 6f 63 20 75 69 3a 3a i page.proc ui::
42c0: 70 61 67 65 5f 65 78 69 73 74 73 20 7b 6e 61 6d page_exists {nam
42d0: 65 7d 20 7b 0a 20 20 20 69 66 20 5b 73 71 6c 3a e} {. if [sql:
42e0: 3a 61 6c 6c 6f 77 65 64 20 24 6e 61 6d 65 5d 20 :allowed $name]
42f0: 7b 0a 20 20 20 20 20 20 71 75 65 72 79 20 22 53 {. query "S
4300: 45 4c 45 43 54 20 31 20 46 52 4f 4d 20 74 61 67 ELECT 1 FROM tag
4310: 20 57 48 45 52 45 20 74 61 67 6e 61 6d 65 20 3d WHERE tagname =
4320: 20 27 27 77 69 6b 69 2d 24 6e 61 6d 65 27 27 22 ''wiki-$name''"
4330: 20 7b 0a 20 20 20 20 20 20 20 20 20 72 65 74 75 {. retu
4340: 72 6e 20 31 0a 20 20 20 20 20 20 7d 0a 20 20 20 rn 1. }.
4350: 7d 0a 20 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a }. return 0.}.
4360: 0a 0a 23 2d 2d 20 43 68 65 63 6b 20 69 66 20 66 ..#-- Check if f
4370: 69 6c 65 20 65 78 69 73 74 73 20 69 6e 20 72 65 ile exists in re
4380: 70 6f 73 69 74 6f 72 79 0a 70 72 6f 63 20 75 69 pository.proc ui
4390: 3a 3a 66 69 6c 65 5f 65 78 69 73 74 73 20 7b 6e ::file_exists {n
43a0: 61 6d 65 7d 20 7b 0a 20 20 20 69 66 20 5b 73 71 ame} {. if [sq
43b0: 6c 3a 3a 61 6c 6c 6f 77 65 64 20 24 6e 61 6d 65 l::allowed $name
43c0: 5d 20 7b 0a 20 20 20 20 20 20 71 75 65 72 79 20 ] {. query
43d0: 22 53 45 4c 45 43 54 20 31 20 46 52 4f 4d 20 66 "SELECT 1 FROM f
43e0: 69 6c 65 6e 61 6d 65 20 57 48 45 52 45 20 6e 61 ilename WHERE na
43f0: 6d 65 20 3d 20 27 27 24 6e 61 6d 65 27 27 22 20 me = ''$name''"
4400: 7b 0a 20 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur
4410: 6e 20 31 0a 20 20 20 20 20 20 7d 0a 20 20 20 7d n 1. }. }
4420: 0a 20 20 20 72 65 74 75 72 6e 20 30 0a 7d 0a 0a . return 0.}..
4430: 0a 23 2d 2d 20 43 61 6c 6c 20 75 69 3a 3a 73 65 .#-- Call ui::se
4440: 61 72 63 68 20 6f 6e 20 6e 6f 6e 2d 65 78 69 73 arch on non-exis
4450: 74 61 6e 74 20 77 69 6b 69 20 70 61 67 65 73 0a tant wiki pages.
4460: 23 20 2a 20 57 65 20 63 61 6e 20 67 65 74 20 24 # * We can get $
4470: 3c 74 69 74 6c 65 3e 20 61 73 20 73 65 61 72 63 <title> as searc
4480: 68 20 74 65 72 6d 73 0a 23 20 20 20 28 6e 6f 20 h terms.# (no
4490: 77 61 79 20 74 6f 20 61 63 63 65 73 73 20 71 75 way to access qu
44a0: 65 72 79 20 73 74 72 69 6e 67 20 70 61 72 61 6d ery string param
44b0: 65 74 65 72 73 20 6f 74 68 65 72 77 69 73 65 29 eters otherwise)
44c0: 0a 23 20 2a 20 42 75 74 20 74 68 69 73 20 69 73 .# * But this is
44d0: 20 61 6c 73 6f 20 63 6f 6e 76 65 6e 69 65 6e 74 also convenient
44e0: 2c 20 61 73 20 69 74 20 64 6f 75 62 6c 65 73 20 , as it doubles
44f0: 61 73 20 77 69 6b 69 20 70 61 67 65 20 73 65 61 as wiki page sea
4500: 72 63 68 0a 70 72 6f 63 20 75 69 3a 3a 73 65 61 rch.proc ui::sea
4510: 72 63 68 5f 6f 6e 5f 77 69 6b 69 20 7b 7d 20 7b rch_on_wiki {} {
4520: 0a 20 20 20 75 70 76 61 72 20 31 20 20 74 69 74 . upvar 1 tit
4530: 6c 65 20 74 69 74 6c 65 20 20 62 61 73 65 75 72 le title baseur
4540: 6c 20 62 61 73 65 75 72 6c 20 20 63 75 72 72 65 l baseurl curre
4550: 6e 74 5f 70 61 67 65 20 63 75 72 72 65 6e 74 5f nt_page current_
4560: 70 61 67 65 0a 20 20 20 69 66 20 5b 65 78 70 72 page. if [expr
4570: 20 7b 5b 72 65 67 65 78 70 20 7b 5e 77 69 6b 69 {[regexp {^wiki
4580: 5b 3f 5d 6e 61 6d 65 3d 7d 20 24 63 75 72 72 65 [?]name=} $curre
4590: 6e 74 5f 70 61 67 65 5d 20 26 26 20 21 20 5b 75 nt_page] && ! [u
45a0: 69 3a 3a 70 61 67 65 5f 65 78 69 73 74 73 20 24 i::page_exists $
45b0: 74 69 74 6c 65 5d 7d 5d 20 7b 0a 20 20 20 20 20 title]}] {.
45c0: 20 68 74 6d 6c 20 22 3c 68 32 20 63 6c 61 73 73 html "<h2 class
45d0: 3d 73 65 61 72 63 68 2d 68 65 61 64 6c 69 6e 65 =search-headline
45e0: 3e 53 65 61 72 63 68 3c 2f 68 32 3e 22 3b 0a 20 >Search</h2>";.
45f0: 20 20 20 20 20 75 69 3a 3a 73 65 61 72 63 68 20 ui::search
4600: 24 74 69 74 6c 65 20 24 62 61 73 65 75 72 6c 0a $title $baseurl.
4610: 20 20 20 20 20 20 68 74 6d 6c 20 22 3c 62 72 3e html "<br>
4620: 3c 62 72 3e 3c 62 72 3e 3c 62 72 3e 22 0a 20 20 <br><br><br>".
4630: 20 7d 0a 7d 0a 0a 0a 23 2d 2d 20 4f 72 64 65 72 }.}...#-- Order
4640: 65 64 20 6c 69 73 74 20 6f 66 20 70 72 6f 6a 65 ed list of proje
4650: 63 74 20 73 74 61 74 69 73 74 69 63 73 20 28 77 ct statistics (w
4660: 69 6c 6c 20 70 6f 70 75 6c 61 74 65 20 67 6c 6f ill populate glo
4670: 62 61 6c 20 24 73 74 61 74 73 28 29 20 61 72 72 bal $stats() arr
4680: 61 79 29 0a 70 72 6f 63 20 75 69 3a 3a 73 74 61 ay).proc ui::sta
4690: 74 73 20 7b 7d 20 7b 0a 20 20 20 75 70 6c 65 76 ts {} {. uplev
46a0: 65 6c 20 31 20 7b 20 71 75 65 72 79 20 7b 53 45 el 1 { query {SE
46b0: 4c 45 43 54 0a 20 20 20 20 20 28 53 45 4c 45 43 LECT. (SELEC
46c0: 54 20 63 6f 75 6e 74 28 6f 62 6a 69 64 29 20 46 T count(objid) F
46d0: 52 4f 4d 20 65 76 65 6e 74 20 57 48 45 52 45 20 ROM event WHERE
46e0: 74 79 70 65 3d 27 27 63 69 27 27 20 4c 49 4d 49 type=''ci'' LIMI
46f0: 54 20 31 29 20 41 53 20 60 73 74 61 74 73 5f 63 T 1) AS `stats_c
4700: 68 65 63 6b 69 6e 73 60 2c 0a 20 20 20 20 20 28 heckins`,. (
4710: 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 6e 61 6d SELECT count(nam
4720: 65 29 20 46 52 4f 4d 20 66 69 6c 65 6e 61 6d 65 e) FROM filename
4730: 20 4c 49 4d 49 54 20 31 29 20 41 53 20 60 73 74 LIMIT 1) AS `st
4740: 61 74 73 5f 66 69 6c 65 73 60 2c 0a 20 20 20 20 ats_files`,.
4750: 20 28 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 73 (SELECT count(s
4760: 74 61 74 75 73 29 20 46 52 4f 4d 20 74 69 63 6b tatus) FROM tick
4770: 65 74 20 4c 49 4d 49 54 20 31 29 20 41 53 20 60 et LIMIT 1) AS `
4780: 73 74 61 74 73 5f 74 69 63 6b 65 74 73 60 2c 0a stats_tickets`,.
4790: 20 20 20 20 20 28 53 45 4c 45 43 54 20 63 6f 75 (SELECT cou
47a0: 6e 74 28 44 49 53 54 49 4e 43 54 20 75 73 65 72 nt(DISTINCT user
47b0: 29 20 46 52 4f 4d 20 65 76 65 6e 74 20 4c 49 4d ) FROM event LIM
47c0: 49 54 20 31 29 20 41 53 20 60 73 74 61 74 73 5f IT 1) AS `stats_
47d0: 64 65 76 65 6c 6f 70 65 72 73 60 2c 0a 20 20 20 developers`,.
47e0: 20 20 28 53 45 4c 45 43 54 20 63 6f 75 6e 74 28 (SELECT count(
47f0: 44 49 53 54 49 4e 43 54 20 76 61 6c 75 65 29 20 DISTINCT value)
4800: 46 52 4f 4d 20 74 61 67 78 72 65 66 20 57 48 45 FROM tagxref WHE
4810: 52 45 20 74 61 67 69 64 3d 38 29 20 41 53 20 60 RE tagid=8) AS `
4820: 73 74 61 74 73 5f 62 72 61 6e 63 68 65 73 60 2c stats_branches`,
4830: 0a 20 20 20 20 20 28 53 45 4c 45 43 54 20 63 6f . (SELECT co
4840: 75 6e 74 28 74 61 67 6e 61 6d 65 29 20 46 52 4f unt(tagname) FRO
4850: 4d 20 74 61 67 20 57 48 45 52 45 20 74 61 67 6e M tag WHERE tagn
4860: 61 6d 65 20 4c 49 4b 45 20 27 27 73 79 6d 2d 25 ame LIKE ''sym-%
4870: 27 27 29 20 41 53 20 60 73 74 61 74 73 5f 74 61 '') AS `stats_ta
4880: 67 73 60 2c 0a 20 20 20 20 20 28 53 45 4c 45 43 gs`,. (SELEC
4890: 54 20 63 6f 75 6e 74 28 74 61 67 6e 61 6d 65 29 T count(tagname)
48a0: 20 46 52 4f 4d 20 74 61 67 20 57 48 45 52 45 20 FROM tag WHERE
48b0: 74 61 67 6e 61 6d 65 20 52 45 47 45 58 50 20 27 tagname REGEXP '
48c0: 27 5e 73 79 6d 5b 5c 5c 2d 5c 5c 77 5f 2e 5d 2b '^sym[\\-\\w_.]+
48d0: 5c 5c 64 2b 5c 5c 2e 5c 5c 64 2b 27 27 29 20 41 \\d+\\.\\d+'') A
48e0: 53 20 60 73 74 61 74 73 5f 72 65 6c 65 61 73 65 S `stats_release
48f0: 73 60 0a 20 20 20 7d 20 7b 7d 20 7d 0a 7d 0a 0a s`. } {} }.}..
4900: 0a 23 2d 2d 20 4c 61 6e 67 75 61 67 65 2f 43 6f .#-- Language/Co
4910: 6e 74 65 6e 74 20 73 74 61 74 69 73 74 69 63 73 ntent statistics
4920: 20 28 6f 75 74 70 75 74 73 20 63 6f 6c 6f 72 65 (outputs colore
4930: 64 20 62 61 72 20 67 72 61 70 68 29 0a 70 72 6f d bar graph).pro
4940: 63 20 75 69 3a 3a 6c 61 6e 67 5f 73 74 61 74 73 c ui::lang_stats
4950: 20 7b 7d 20 7b 0a 20 20 20 23 20 66 65 74 63 68 {} {. # fetch
4960: 20 24 6c 61 6e 67 28 6a 73 2f 2e 2e 2e 29 2c 20 $lang(js/...),
4970: 24 6c 61 6e 67 5f 63 6f 6c 6f 72 28 6a 73 29 2c $lang_color(js),
4980: 20 24 6c 61 6e 67 5f 6c 69 73 74 2c 20 24 74 6f $lang_list, $to
4990: 74 61 6c 5f 73 69 7a 65 0a 20 20 20 71 75 65 72 tal_size. quer
49a0: 79 20 7b 53 45 4c 45 43 54 20 6e 61 6d 65 2c 20 y {SELECT name,
49b0: 76 61 6c 75 65 20 46 52 4f 4d 20 66 78 5f 73 74 value FROM fx_st
49c0: 61 74 73 20 4f 52 44 45 52 20 62 79 20 56 41 4c ats ORDER by VAL
49d0: 55 45 20 44 45 53 43 7d 20 7b 0a 20 20 20 20 20 UE DESC} {.
49e0: 20 73 65 74 20 24 6e 61 6d 65 20 24 76 61 6c 75 set $name $valu
49f0: 65 0a 20 20 20 7d 0a 20 20 20 23 20 6f 75 74 70 e. }. # outp
4a00: 75 74 20 63 6f 6c 6f 72 20 62 61 72 20 66 6f 72 ut color bar for
4a10: 20 6c 61 6e 67 75 61 67 65 20 70 72 6f 70 6f 72 language propor
4a20: 74 69 6f 6e 73 0a 20 20 20 23 68 74 6d 6c 20 22 tions. #html "
4a30: 3c 64 69 76 20 63 6c 61 73 73 3d 6c 61 6e 67 75 <div class=langu
4a40: 61 67 65 2d 62 61 72 20 73 74 79 6c 65 3d 27 27 age-bar style=''
4a50: 77 69 64 74 68 3a 31 30 30 25 3b 20 68 65 69 67 width:100%; heig
4a60: 68 74 3a 33 70 74 3b 20 62 6f 78 2d 73 69 7a 69 ht:3pt; box-sizi
4a70: 6e 67 3a 62 6f 72 64 65 72 2d 62 6f 78 3b 27 27 ng:border-box;''
4a80: 3e 22 0a 20 20 20 66 6f 72 65 61 63 68 20 6e 61 >". foreach na
4a90: 6d 65 20 24 6c 61 6e 67 5f 6c 69 73 74 20 7b 0a me $lang_list {.
4aa0: 20 20 20 20 20 20 73 65 74 20 70 65 72 63 65 6e set percen
4ab0: 74 20 22 5b 65 78 70 72 20 24 6c 61 6e 67 28 24 t "[expr $lang($
4ac0: 6e 61 6d 65 29 2a 31 30 30 5d 25 22 0a 20 20 20 name)*100]%".
4ad0: 20 20 20 68 74 6d 6c 20 22 3c 73 70 61 6e 20 63 html "<span c
4ae0: 6c 61 73 73 3d 63 6f 64 65 2d 72 61 74 65 2d 24 lass=code-rate-$
4af0: 6e 61 6d 65 20 73 74 79 6c 65 3d 27 27 68 65 69 name style=''hei
4b00: 67 68 74 3a 31 30 30 25 3b 20 77 69 64 74 68 3a ght:100%; width:
4b10: 24 70 65 72 63 65 6e 74 3b 20 64 69 73 70 6c 61 $percent; displa
4b20: 79 3a 69 6e 6c 69 6e 65 2d 62 6c 6f 63 6b 3b 20 y:inline-block;
4b30: 62 61 63 6b 67 72 6f 75 6e 64 2d 63 6f 6c 6f 72 background-color
4b40: 3a 23 24 6c 61 6e 67 5f 63 6f 6c 6f 72 28 24 6e :#$lang_color($n
4b50: 61 6d 65 29 27 27 20 74 69 74 6c 65 3d 27 27 24 ame)'' title=''$
4b60: 70 65 72 63 65 6e 74 20 24 6e 61 6d 65 27 27 3e percent $name''>
4b70: 3c 2f 73 70 61 6e 3e 22 3b 0a 20 20 20 7d 0a 20 </span>";. }.
4b80: 20 20 23 68 74 6d 6c 20 22 3c 2f 64 69 76 3e 22 #html "</div>"
4b90: 3b 0a 7d 0a 0a 0a 0a 23 2d 2d 20 70 72 69 6e 74 ;.}....#-- print
4ba0: 20 74 77 6f 20 74 61 62 6c 65 20 72 6f 77 73 20 two table rows
4bb0: 66 6f 72 20 6c 61 73 74 20 63 6f 6d 6d 69 74 0a for last commit.
4bc0: 70 72 6f 63 20 75 69 3a 3a 6c 61 73 74 5f 63 6f proc ui::last_co
4bd0: 6d 6d 69 74 20 7b 7d 20 7b 0a 20 20 20 71 75 65 mmit {} {. que
4be0: 72 79 20 7b 53 45 4c 45 43 54 20 2a 2c 20 43 41 ry {SELECT *, CA
4bf0: 53 54 28 6a 75 6c 69 61 6e 64 61 79 28 27 27 6e ST(julianday(''n
4c00: 6f 77 27 27 29 2d 6d 74 69 6d 65 20 41 53 20 49 ow'')-mtime AS I
4c10: 4e 54 29 20 41 53 20 61 67 65 2c 20 73 75 62 73 NT) AS age, subs
4c20: 74 72 28 63 6f 6d 6d 65 6e 74 2c 30 2c 31 39 39 tr(comment,0,199
4c30: 29 20 41 53 20 6d 73 67 2c 20 73 75 62 73 74 72 ) AS msg, substr
4c40: 28 75 75 69 64 2c 20 30 2c 20 31 30 29 20 41 53 (uuid, 0, 10) AS
4c50: 20 73 68 6f 72 74 5f 75 75 69 64 0a 20 20 20 20 short_uuid.
4c60: 20 20 20 20 20 20 46 52 4f 4d 20 65 76 65 6e 74 FROM event
4c70: 20 4a 4f 49 4e 20 62 6c 6f 62 20 4f 4e 20 62 6c JOIN blob ON bl
4c80: 6f 62 2e 72 69 64 3d 65 76 65 6e 74 2e 6f 62 6a ob.rid=event.obj
4c90: 69 64 0a 20 20 20 20 20 20 20 20 20 20 57 48 45 id. WHE
4ca0: 52 45 20 74 79 70 65 3d 27 27 63 69 27 27 20 4f RE type=''ci'' O
4cb0: 52 44 45 52 20 42 59 20 6d 74 69 6d 65 20 44 45 RDER BY mtime DE
4cc0: 53 43 20 4c 49 4d 49 54 20 31 0a 20 20 20 7d 20 SC LIMIT 1. }
4cd0: 7b 0a 20 20 20 20 20 20 68 74 6d 6c 20 22 20 20 {. html "
4ce0: 3c 74 72 3e 3c 74 68 20 63 6f 6c 73 70 61 6e 3d <tr><th colspan=
4cf0: 33 3e 24 6d 73 67 3c 2f 74 68 3e 3c 2f 74 72 3e 3>$msg</th></tr>
4d00: 22 3b 0a 20 20 20 20 20 20 68 74 6d 6c 20 22 20 ";. html "
4d10: 20 3c 74 72 3e 3c 74 68 20 63 6f 6c 73 70 61 6e <tr><th colspan
4d20: 3d 33 20 73 74 79 6c 65 3d 62 61 63 6b 67 72 6f =3 style=backgro
4d30: 75 6e 64 3a 23 66 66 66 3e 3c 61 20 68 72 65 66 und:#fff><a href
4d40: 3d 27 27 74 69 6d 65 6c 69 6e 65 3f 75 3d 24 75 =''timeline?u=$u
4d50: 73 65 72 27 27 20 63 6c 61 73 73 3d 75 73 65 72 ser'' class=user
4d60: 3e 24 75 73 65 72 3c 2f 61 3e 20 61 75 74 68 6f >$user</a> autho
4d70: 72 65 64 20 24 61 67 65 20 64 61 79 73 20 61 67 red $age days ag
4d80: 6f 0a 20 20 20 20 20 20 20 20 20 20 20 20 3c 73 o. <s
4d90: 70 61 6e 20 73 74 79 6c 65 3d 66 6c 6f 61 74 3a pan style=float:
4da0: 72 69 67 68 74 3e 6c 61 73 74 20 63 68 65 63 6b right>last check
4db0: 69 6e 20 3c 61 20 68 72 65 66 3d 27 27 63 69 2f in <a href=''ci/
4dc0: 24 75 75 69 64 27 27 3e 24 73 68 6f 72 74 5f 75 $uuid''>$short_u
4dd0: 75 69 64 3c 2f 61 3e 3c 2f 73 70 61 6e 3e 3c 2f uid</a></span></
4de0: 74 68 3e 3c 2f 74 72 3e 22 3b 0a 20 20 20 7d 0a th></tr>";. }.
4df0: 7d 0a 0a 0a 23 2d 2d 20 6f 75 74 70 75 74 73 20 }...#-- outputs
4e00: 74 61 62 6c 65 20 72 6f 77 73 20 63 6f 6e 74 61 table rows conta
4e10: 69 6e 69 6e 67 20 74 6f 70 2d 6c 65 76 65 6c 20 ining top-level
4e20: 66 69 6c 65 6e 61 6d 65 73 20 61 6e 64 20 72 65 filenames and re
4e30: 63 65 6e 74 20 63 68 65 63 6b 69 6e 20 63 6f 6d cent checkin com
4e40: 6d 65 6e 74 73 0a 70 72 6f 63 20 75 69 3a 3a 72 ments.proc ui::r
4e50: 65 63 65 6e 74 5f 66 69 6c 65 73 20 7b 7d 20 7b ecent_files {} {
4e60: 0a 20 20 20 73 65 74 20 73 65 65 6e 20 22 22 0a . set seen "".
4e70: 0a 20 20 20 23 20 66 69 6c 65 73 0a 20 20 20 71 . # files. q
4e80: 75 65 72 79 20 7b 0a 20 20 20 20 20 20 20 53 45 uery {. SE
4e90: 4c 45 43 54 20 44 49 53 54 49 4e 43 54 0a 20 20 LECT DISTINCT.
4ea0: 20 20 20 20 20 20 20 20 20 20 20 69 6e 73 74 72 instr
4eb0: 28 6e 61 6d 65 2c 20 27 27 2f 27 27 29 20 61 73 (name, ''/'') as
4ec0: 20 64 69 72 2c 0a 20 20 20 20 20 20 20 20 20 20 dir,.
4ed0: 20 20 20 28 43 41 53 45 20 69 6e 73 74 72 28 6e (CASE instr(n
4ee0: 61 6d 65 2c 27 27 2f 27 27 29 20 57 48 45 4e 20 ame,''/'') WHEN
4ef0: 30 20 54 48 45 4e 20 6e 61 6d 65 0a 20 20 20 20 0 THEN name.
4f00: 20 20 20 20 20 20 20 20 20 20 45 4c 53 45 20 73 ELSE s
4f10: 75 62 73 74 72 28 6e 61 6d 65 2c 30 2c 69 6e 73 ubstr(name,0,ins
4f20: 74 72 28 6e 61 6d 65 2c 20 27 27 2f 27 27 29 29 tr(name, ''/''))
4f30: 20 45 4e 44 29 20 41 53 20 6e 61 6d 65 2c 0a 20 END) AS name,.
4f40: 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62 73 subs
4f50: 74 72 28 63 6f 6d 6d 65 6e 74 2c 20 30 2c 20 37 tr(comment, 0, 7
4f60: 30 29 20 41 53 20 63 6f 6d 6d 65 6e 74 2c 0a 20 0) AS comment,.
4f70: 20 20 20 20 20 20 20 20 20 20 20 20 75 75 69 64 uuid
4f80: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 43 ,. C
4f90: 41 53 54 28 6a 75 6c 69 61 6e 64 61 79 28 27 27 AST(julianday(''
4fa0: 6e 6f 77 27 27 29 2d 6d 74 69 6d 65 20 41 53 20 now'')-mtime AS
4fb0: 49 4e 54 29 20 41 53 20 61 67 65 0a 20 20 20 20 INT) AS age.
4fc0: 20 20 20 46 52 4f 4d 20 66 69 6c 65 6e 61 6d 65 FROM filename
4fd0: 0a 20 20 20 20 20 20 20 4a 4f 49 4e 20 6d 6c 69 . JOIN mli
4fe0: 6e 6b 20 4f 4e 20 66 69 6c 65 6e 61 6d 65 2e 66 nk ON filename.f
4ff0: 6e 69 64 3d 6d 6c 69 6e 6b 2e 66 6e 69 64 0a 20 nid=mlink.fnid.
5000: 20 20 20 20 20 20 4a 4f 49 4e 20 65 76 65 6e 74 JOIN event
5010: 20 4f 4e 20 6d 6c 69 6e 6b 2e 6d 69 64 3d 65 76 ON mlink.mid=ev
5020: 65 6e 74 2e 6f 62 6a 69 64 0a 20 20 20 20 20 20 ent.objid.
5030: 20 4a 4f 49 4e 20 62 6c 6f 62 20 4f 4e 20 62 6c JOIN blob ON bl
5040: 6f 62 2e 72 69 64 3d 65 76 65 6e 74 2e 6f 62 6a ob.rid=event.obj
5050: 69 64 0a 20 20 20 20 20 20 20 47 52 4f 55 50 20 id. GROUP
5060: 42 59 20 6e 61 6d 65 20 4f 52 44 45 52 20 42 59 BY name ORDER BY
5070: 20 64 69 72 20 44 45 53 43 2c 20 6d 74 69 6d 65 dir DESC, mtime
5080: 20 44 45 53 43 0a 20 20 20 7d 20 7b 0a 20 20 20 DESC. } {.
5090: 20 20 20 69 66 20 7b 24 64 69 72 20 26 26 20 5b if {$dir && [
50a0: 73 74 72 3a 3a 63 6f 6e 74 61 69 6e 73 20 24 6e str::contains $n
50b0: 61 6d 65 20 24 73 65 65 6e 5d 7d 20 7b 20 63 6f ame $seen]} { co
50c0: 6e 74 69 6e 75 65 20 7d 20 65 6c 73 65 20 7b 20 ntinue } else {
50d0: 73 65 74 20 73 65 65 6e 20 22 24 6e 61 6d 65 2c set seen "$name,
50e0: 24 73 65 65 6e 22 20 7d 0a 20 20 20 20 20 20 68 $seen" }. h
50f0: 74 6d 6c 20 22 20 20 20 20 20 20 20 20 20 20 20 tml "
5100: 20 20 20 20 3c 74 72 3e 3c 74 64 3e 22 3b 0a 20 <tr><td>";.
5110: 20 20 20 20 20 69 66 20 7b 24 64 69 72 20 3e 20 if {$dir >
5120: 30 7d 20 7b 0a 20 20 20 20 20 20 20 20 20 20 68 0} {. h
5130: 74 6d 6c 20 22 3c 61 20 63 6c 61 73 73 3d 64 69 tml "<a class=di
5140: 72 20 68 72 65 66 3d 27 27 74 72 65 65 3f 6e 61 r href=''tree?na
5150: 6d 65 3d 5b 68 74 6d 6c 69 7a 65 20 24 6e 61 6d me=[htmlize $nam
5160: 65 5d 27 27 3e 3c 62 20 63 6c 61 73 73 3d 67 6c e]''><b class=gl
5170: 79 70 68 3e f0 9f 93 82 3c 2f 62 3e 20 5b 68 74 yph>📂</b> [ht
5180: 6d 6c 69 7a 65 20 24 6e 61 6d 65 5d 3c 2f 61 3e mlize $name]</a>
5190: 22 3b 0a 20 20 20 20 20 20 7d 20 65 6c 73 65 20 ";. } else
51a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 68 74 6d 6c {. html
51b0: 20 22 3c 61 20 63 6c 61 73 73 3d 66 69 6c 65 20 "<a class=file
51c0: 68 72 65 66 3d 27 27 63 69 2f 24 75 75 69 64 3f href=''ci/$uuid?
51d0: 73 62 73 3d 30 27 27 3e 3c 62 20 63 6c 61 73 73 sbs=0''><b class
51e0: 3d 67 6c 79 70 68 3e f0 9f 93 84 3c 2f 62 3e 20 =glyph>📄</b>
51f0: 5b 68 74 6d 6c 69 7a 65 20 24 6e 61 6d 65 5d 3c [htmlize $name]<
5200: 2f 61 3e 22 3b 0a 20 20 20 20 20 20 7d 0a 20 20 /a>";. }.
5210: 20 20 20 20 68 74 6d 6c 20 22 3c 2f 74 64 3e 20 html "</td>
5220: 3c 74 64 3e 5b 68 74 6d 6c 69 7a 65 20 24 63 6f <td>[htmlize $co
5230: 6d 6d 65 6e 74 5d 3c 2f 74 64 3e 20 3c 74 64 3e mment]</td> <td>
5240: 5b 68 74 6d 6c 69 7a 65 20 24 61 67 65 5d 20 64 [htmlize $age] d
5250: 61 79 73 20 61 67 6f 3c 2f 74 64 3e 3c 2f 74 72 ays ago</td></tr
5260: 3e 5c 6e 22 3b 0a 20 20 20 7d 0a 7d 27 0a >\n";. }.}'.