xref: /vim-8.2.3635/src/version.c (revision f0b03c4e)
1 /* vi:set ts=8 sts=4 sw=4 noet:
2  *
3  * VIM - Vi IMproved		by Bram Moolenaar
4  *
5  * Do ":help uganda"  in Vim to read copying and usage conditions.
6  * Do ":help credits" in Vim to see a list of people who contributed.
7  * See README.txt for an overview of the Vim source code.
8  */
9 
10 #include "vim.h"
11 
12 #ifdef AMIGA
13 # include <time.h>	/* for time() */
14 #endif
15 
16 /*
17  * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
18  * It has been changed beyond recognition since then.
19  *
20  * Differences between version 7.4 and 8.x can be found with ":help version8".
21  * Differences between version 6.4 and 7.x can be found with ":help version7".
22  * Differences between version 5.8 and 6.x can be found with ":help version6".
23  * Differences between version 4.x and 5.x can be found with ":help version5".
24  * Differences between version 3.0 and 4.x can be found with ":help version4".
25  * All the remarks about older versions have been removed, they are not very
26  * interesting.
27  */
28 
29 #include "version.h"
30 
31 char		*Version = VIM_VERSION_SHORT;
32 static char	*mediumVersion = VIM_VERSION_MEDIUM;
33 
34 #if defined(HAVE_DATE_TIME) || defined(PROTO)
35 # if (defined(VMS) && defined(VAXC)) || defined(PROTO)
36 char	longVersion[sizeof(VIM_VERSION_LONG_DATE) + sizeof(__DATE__)
37 						      + sizeof(__TIME__) + 3];
38 
39     void
40 make_version(void)
41 {
42     /*
43      * Construct the long version string.  Necessary because
44      * VAX C can't catenate strings in the preprocessor.
45      */
46     strcpy(longVersion, VIM_VERSION_LONG_DATE);
47     strcat(longVersion, __DATE__);
48     strcat(longVersion, " ");
49     strcat(longVersion, __TIME__);
50     strcat(longVersion, ")");
51 }
52 # else
53 char	*longVersion = VIM_VERSION_LONG_DATE __DATE__ " " __TIME__ ")";
54 # endif
55 #else
56 char	*longVersion = VIM_VERSION_LONG;
57 #endif
58 
59 static void list_features(void);
60 static void version_msg(char *s);
61 
62 static char *(features[]) =
63 {
64 #ifdef HAVE_ACL
65 	"+acl",
66 #else
67 	"-acl",
68 #endif
69 #ifdef AMIGA		/* only for Amiga systems */
70 # ifdef FEAT_ARP
71 	"+ARP",
72 # else
73 	"-ARP",
74 # endif
75 #endif
76 #ifdef FEAT_ARABIC
77 	"+arabic",
78 #else
79 	"-arabic",
80 #endif
81 #ifdef FEAT_AUTOCMD
82 	"+autocmd",
83 #else
84 	"-autocmd",
85 #endif
86 #ifdef FEAT_AUTOSERVERNAME
87 	"+autoservername",
88 #else
89 	"-autoservername",
90 #endif
91 #ifdef FEAT_BEVAL_GUI
92 	"+balloon_eval",
93 #else
94 	"-balloon_eval",
95 #endif
96 #ifdef FEAT_BEVAL_TERM
97 	"+balloon_eval_term",
98 #else
99 	"-balloon_eval_term",
100 #endif
101 #ifdef FEAT_BROWSE
102 	"+browse",
103 #else
104 	"-browse",
105 #endif
106 #ifdef NO_BUILTIN_TCAPS
107 	"-builtin_terms",
108 #endif
109 #ifdef SOME_BUILTIN_TCAPS
110 	"+builtin_terms",
111 #endif
112 #ifdef ALL_BUILTIN_TCAPS
113 	"++builtin_terms",
114 #endif
115 #ifdef FEAT_BYTEOFF
116 	"+byte_offset",
117 #else
118 	"-byte_offset",
119 #endif
120 #ifdef FEAT_JOB_CHANNEL
121 	"+channel",
122 #else
123 	"-channel",
124 #endif
125 #ifdef FEAT_CINDENT
126 	"+cindent",
127 #else
128 	"-cindent",
129 #endif
130 #ifdef FEAT_CLIENTSERVER
131 	"+clientserver",
132 #else
133 	"-clientserver",
134 #endif
135 #ifdef FEAT_CLIPBOARD
136 	"+clipboard",
137 #else
138 	"-clipboard",
139 #endif
140 #ifdef FEAT_CMDL_COMPL
141 	"+cmdline_compl",
142 #else
143 	"-cmdline_compl",
144 #endif
145 #ifdef FEAT_CMDHIST
146 	"+cmdline_hist",
147 #else
148 	"-cmdline_hist",
149 #endif
150 #ifdef FEAT_CMDL_INFO
151 	"+cmdline_info",
152 #else
153 	"-cmdline_info",
154 #endif
155 #ifdef FEAT_COMMENTS
156 	"+comments",
157 #else
158 	"-comments",
159 #endif
160 #ifdef FEAT_CONCEAL
161 	"+conceal",
162 #else
163 	"-conceal",
164 #endif
165 #ifdef FEAT_CRYPT
166 	"+cryptv",
167 #else
168 	"-cryptv",
169 #endif
170 #ifdef FEAT_CSCOPE
171 	"+cscope",
172 #else
173 	"-cscope",
174 #endif
175 #ifdef FEAT_CURSORBIND
176 	"+cursorbind",
177 #else
178 	"-cursorbind",
179 #endif
180 #ifdef CURSOR_SHAPE
181 	"+cursorshape",
182 #else
183 	"-cursorshape",
184 #endif
185 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG)
186 	"+dialog_con_gui",
187 #else
188 # if defined(FEAT_CON_DIALOG)
189 	"+dialog_con",
190 # else
191 #  if defined(FEAT_GUI_DIALOG)
192 	"+dialog_gui",
193 #  else
194 	"-dialog",
195 #  endif
196 # endif
197 #endif
198 #ifdef FEAT_DIFF
199 	"+diff",
200 #else
201 	"-diff",
202 #endif
203 #ifdef FEAT_DIGRAPHS
204 	"+digraphs",
205 #else
206 	"-digraphs",
207 #endif
208 #ifdef FEAT_GUI_W32
209 # ifdef FEAT_DIRECTX
210 	"+directx",
211 # else
212 	"-directx",
213 # endif
214 #endif
215 #ifdef FEAT_DND
216 	"+dnd",
217 #else
218 	"-dnd",
219 #endif
220 #ifdef EBCDIC
221 	"+ebcdic",
222 #else
223 	"-ebcdic",
224 #endif
225 #ifdef FEAT_EMACS_TAGS
226 	"+emacs_tags",
227 #else
228 	"-emacs_tags",
229 #endif
230 #ifdef FEAT_EVAL
231 	"+eval",
232 #else
233 	"-eval",
234 #endif
235 	"+ex_extra",
236 #ifdef FEAT_SEARCH_EXTRA
237 	"+extra_search",
238 #else
239 	"-extra_search",
240 #endif
241 #ifdef FEAT_FKMAP
242 	"+farsi",
243 #else
244 	"-farsi",
245 #endif
246 #ifdef FEAT_SEARCHPATH
247 	"+file_in_path",
248 #else
249 	"-file_in_path",
250 #endif
251 #ifdef FEAT_FIND_ID
252 	"+find_in_path",
253 #else
254 	"-find_in_path",
255 #endif
256 #ifdef FEAT_FLOAT
257 	"+float",
258 #else
259 	"-float",
260 #endif
261 #ifdef FEAT_FOLDING
262 	"+folding",
263 #else
264 	"-folding",
265 #endif
266 #ifdef FEAT_FOOTER
267 	"+footer",
268 #else
269 	"-footer",
270 #endif
271 	    /* only interesting on Unix systems */
272 #if !defined(USE_SYSTEM) && defined(UNIX)
273 	"+fork()",
274 #endif
275 #ifdef FEAT_GETTEXT
276 # ifdef DYNAMIC_GETTEXT
277 	"+gettext/dyn",
278 # else
279 	"+gettext",
280 # endif
281 #else
282 	"-gettext",
283 #endif
284 #ifdef FEAT_HANGULIN
285 	"+hangul_input",
286 #else
287 	"-hangul_input",
288 #endif
289 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV)
290 # ifdef DYNAMIC_ICONV
291 	"+iconv/dyn",
292 # else
293 	"+iconv",
294 # endif
295 #else
296 	"-iconv",
297 #endif
298 #ifdef FEAT_INS_EXPAND
299 	"+insert_expand",
300 #else
301 	"-insert_expand",
302 #endif
303 #ifdef FEAT_JOB_CHANNEL
304 	"+job",
305 #else
306 	"-job",
307 #endif
308 #ifdef FEAT_JUMPLIST
309 	"+jumplist",
310 #else
311 	"-jumplist",
312 #endif
313 #ifdef FEAT_KEYMAP
314 	"+keymap",
315 #else
316 	"-keymap",
317 #endif
318 #ifdef FEAT_EVAL
319 	"+lambda",
320 #else
321 	"-lambda",
322 #endif
323 #ifdef FEAT_LANGMAP
324 	"+langmap",
325 #else
326 	"-langmap",
327 #endif
328 #ifdef FEAT_LIBCALL
329 	"+libcall",
330 #else
331 	"-libcall",
332 #endif
333 #ifdef FEAT_LINEBREAK
334 	"+linebreak",
335 #else
336 	"-linebreak",
337 #endif
338 #ifdef FEAT_LISP
339 	"+lispindent",
340 #else
341 	"-lispindent",
342 #endif
343 #ifdef FEAT_LISTCMDS
344 	"+listcmds",
345 #else
346 	"-listcmds",
347 #endif
348 #ifdef FEAT_LOCALMAP
349 	"+localmap",
350 #else
351 	"-localmap",
352 #endif
353 #ifdef FEAT_LUA
354 # ifdef DYNAMIC_LUA
355 	"+lua/dyn",
356 # else
357 	"+lua",
358 # endif
359 #else
360 	"-lua",
361 #endif
362 #ifdef FEAT_MENU
363 	"+menu",
364 #else
365 	"-menu",
366 #endif
367 #ifdef FEAT_SESSION
368 	"+mksession",
369 #else
370 	"-mksession",
371 #endif
372 #ifdef FEAT_MODIFY_FNAME
373 	"+modify_fname",
374 #else
375 	"-modify_fname",
376 #endif
377 #ifdef FEAT_MOUSE
378 	"+mouse",
379 #  ifdef FEAT_MOUSESHAPE
380 	"+mouseshape",
381 #  else
382 	"-mouseshape",
383 #  endif
384 # else
385 	"-mouse",
386 #endif
387 
388 #if defined(UNIX) || defined(VMS)
389 # ifdef FEAT_MOUSE_DEC
390 	"+mouse_dec",
391 # else
392 	"-mouse_dec",
393 # endif
394 # ifdef FEAT_MOUSE_GPM
395 	"+mouse_gpm",
396 # else
397 	"-mouse_gpm",
398 # endif
399 # ifdef FEAT_MOUSE_JSB
400 	"+mouse_jsbterm",
401 # else
402 	"-mouse_jsbterm",
403 # endif
404 # ifdef FEAT_MOUSE_NET
405 	"+mouse_netterm",
406 # else
407 	"-mouse_netterm",
408 # endif
409 #endif
410 
411 #ifdef __QNX__
412 # ifdef FEAT_MOUSE_PTERM
413 	"+mouse_pterm",
414 # else
415 	"-mouse_pterm",
416 # endif
417 #endif
418 
419 #if defined(UNIX) || defined(VMS)
420 # ifdef FEAT_MOUSE_SGR
421 	"+mouse_sgr",
422 # else
423 	"-mouse_sgr",
424 # endif
425 # ifdef FEAT_SYSMOUSE
426 	"+mouse_sysmouse",
427 # else
428 	"-mouse_sysmouse",
429 # endif
430 # ifdef FEAT_MOUSE_URXVT
431 	"+mouse_urxvt",
432 # else
433 	"-mouse_urxvt",
434 # endif
435 # ifdef FEAT_MOUSE_XTERM
436 	"+mouse_xterm",
437 # else
438 	"-mouse_xterm",
439 # endif
440 #endif
441 
442 #ifdef FEAT_MBYTE_IME
443 # ifdef DYNAMIC_IME
444 	"+multi_byte_ime/dyn",
445 # else
446 	"+multi_byte_ime",
447 # endif
448 #else
449 # ifdef FEAT_MBYTE
450 	"+multi_byte",
451 # else
452 	"-multi_byte",
453 # endif
454 #endif
455 #ifdef FEAT_MULTI_LANG
456 	"+multi_lang",
457 #else
458 	"-multi_lang",
459 #endif
460 #ifdef FEAT_MZSCHEME
461 # ifdef DYNAMIC_MZSCHEME
462 	"+mzscheme/dyn",
463 # else
464 	"+mzscheme",
465 # endif
466 #else
467 	"-mzscheme",
468 #endif
469 #ifdef FEAT_NETBEANS_INTG
470 	"+netbeans_intg",
471 #else
472 	"-netbeans_intg",
473 #endif
474 #ifdef FEAT_NUM64
475 	"+num64",
476 #else
477 	"-num64",
478 #endif
479 #ifdef FEAT_GUI_W32
480 # ifdef FEAT_OLE
481 	"+ole",
482 # else
483 	"-ole",
484 # endif
485 #endif
486 	"+packages",
487 #ifdef FEAT_PATH_EXTRA
488 	"+path_extra",
489 #else
490 	"-path_extra",
491 #endif
492 #ifdef FEAT_PERL
493 # ifdef DYNAMIC_PERL
494 	"+perl/dyn",
495 # else
496 	"+perl",
497 # endif
498 #else
499 	"-perl",
500 #endif
501 #ifdef FEAT_PERSISTENT_UNDO
502 	"+persistent_undo",
503 #else
504 	"-persistent_undo",
505 #endif
506 #ifdef FEAT_PRINTER
507 # ifdef FEAT_POSTSCRIPT
508 	"+postscript",
509 # else
510 	"-postscript",
511 # endif
512 	"+printer",
513 #else
514 	"-printer",
515 #endif
516 #ifdef FEAT_PROFILE
517 	"+profile",
518 #else
519 	"-profile",
520 #endif
521 #ifdef FEAT_PYTHON
522 # ifdef DYNAMIC_PYTHON
523 	"+python/dyn",
524 # else
525 	"+python",
526 # endif
527 #else
528 	"-python",
529 #endif
530 #ifdef FEAT_PYTHON3
531 # ifdef DYNAMIC_PYTHON3
532 	"+python3/dyn",
533 # else
534 	"+python3",
535 # endif
536 #else
537 	"-python3",
538 #endif
539 #ifdef FEAT_QUICKFIX
540 	"+quickfix",
541 #else
542 	"-quickfix",
543 #endif
544 #ifdef FEAT_RELTIME
545 	"+reltime",
546 #else
547 	"-reltime",
548 #endif
549 #ifdef FEAT_RIGHTLEFT
550 	"+rightleft",
551 #else
552 	"-rightleft",
553 #endif
554 #ifdef FEAT_RUBY
555 # ifdef DYNAMIC_RUBY
556 	"+ruby/dyn",
557 # else
558 	"+ruby",
559 # endif
560 #else
561 	"-ruby",
562 #endif
563 #ifdef FEAT_SCROLLBIND
564 	"+scrollbind",
565 #else
566 	"-scrollbind",
567 #endif
568 #ifdef FEAT_SIGNS
569 	"+signs",
570 #else
571 	"-signs",
572 #endif
573 #ifdef FEAT_SMARTINDENT
574 	"+smartindent",
575 #else
576 	"-smartindent",
577 #endif
578 #ifdef STARTUPTIME
579 	"+startuptime",
580 #else
581 	"-startuptime",
582 #endif
583 #ifdef FEAT_STL_OPT
584 	"+statusline",
585 #else
586 	"-statusline",
587 #endif
588 #ifdef FEAT_SUN_WORKSHOP
589 	"+sun_workshop",
590 #else
591 	"-sun_workshop",
592 #endif
593 #ifdef FEAT_SYN_HL
594 	"+syntax",
595 #else
596 	"-syntax",
597 #endif
598 	    /* only interesting on Unix systems */
599 #if defined(USE_SYSTEM) && defined(UNIX)
600 	"+system()",
601 #endif
602 #ifdef FEAT_TAG_BINS
603 	"+tag_binary",
604 #else
605 	"-tag_binary",
606 #endif
607 #ifdef FEAT_TAG_OLDSTATIC
608 	"+tag_old_static",
609 #else
610 	"-tag_old_static",
611 #endif
612 #ifdef FEAT_TAG_ANYWHITE
613 	"+tag_any_white",
614 #else
615 	"-tag_any_white",
616 #endif
617 #ifdef FEAT_TCL
618 # ifdef DYNAMIC_TCL
619 	"+tcl/dyn",
620 # else
621 	"+tcl",
622 # endif
623 #else
624 	"-tcl",
625 #endif
626 #ifdef FEAT_TERMGUICOLORS
627 	"+termguicolors",
628 #else
629 	"-termguicolors",
630 #endif
631 #ifdef FEAT_TERMINAL
632 	"+terminal",
633 #else
634 	"-terminal",
635 #endif
636 #if defined(UNIX)
637 /* only Unix can have terminfo instead of termcap */
638 # ifdef TERMINFO
639 	"+terminfo",
640 # else
641 	"-terminfo",
642 # endif
643 #else		    /* unix always includes termcap support */
644 # ifdef HAVE_TGETENT
645 	"+tgetent",
646 # else
647 	"-tgetent",
648 # endif
649 #endif
650 #ifdef FEAT_TERMRESPONSE
651 	"+termresponse",
652 #else
653 	"-termresponse",
654 #endif
655 #ifdef FEAT_TEXTOBJ
656 	"+textobjects",
657 #else
658 	"-textobjects",
659 #endif
660 #ifdef FEAT_TIMERS
661 	"+timers",
662 #else
663 	"-timers",
664 #endif
665 #ifdef FEAT_TITLE
666 	"+title",
667 #else
668 	"-title",
669 #endif
670 #ifdef FEAT_TOOLBAR
671 	"+toolbar",
672 #else
673 	"-toolbar",
674 #endif
675 #ifdef FEAT_USR_CMDS
676 	"+user_commands",
677 #else
678 	"-user_commands",
679 #endif
680 	"+vertsplit",
681 #ifdef FEAT_VIRTUALEDIT
682 	"+virtualedit",
683 #else
684 	"-virtualedit",
685 #endif
686 	"+visual",
687 #ifdef FEAT_VISUALEXTRA
688 	"+visualextra",
689 #else
690 	"-visualextra",
691 #endif
692 #ifdef FEAT_VIMINFO
693 	"+viminfo",
694 #else
695 	"-viminfo",
696 #endif
697 #ifdef FEAT_VREPLACE
698 	"+vreplace",
699 #else
700 	"-vreplace",
701 #endif
702 #ifdef FEAT_WILDIGN
703 	"+wildignore",
704 #else
705 	"-wildignore",
706 #endif
707 #ifdef FEAT_WILDMENU
708 	"+wildmenu",
709 #else
710 	"-wildmenu",
711 #endif
712 	"+windows",
713 #ifdef FEAT_WRITEBACKUP
714 	"+writebackup",
715 #else
716 	"-writebackup",
717 #endif
718 #if defined(UNIX) || defined(VMS)
719 # ifdef FEAT_X11
720 	"+X11",
721 # else
722 	"-X11",
723 # endif
724 #endif
725 #ifdef FEAT_XFONTSET
726 	"+xfontset",
727 #else
728 	"-xfontset",
729 #endif
730 #ifdef FEAT_XIM
731 	"+xim",
732 #else
733 	"-xim",
734 #endif
735 #ifdef WIN3264
736 # ifdef FEAT_XPM_W32
737 	"+xpm_w32",
738 # else
739 	"-xpm_w32",
740 # endif
741 #else
742 # ifdef HAVE_XPM
743 	"+xpm",
744 # else
745 	"-xpm",
746 # endif
747 #endif
748 #if defined(UNIX) || defined(VMS)
749 # ifdef USE_XSMP_INTERACT
750 	"+xsmp_interact",
751 # else
752 #  ifdef USE_XSMP
753 	"+xsmp",
754 #  else
755 	"-xsmp",
756 #  endif
757 # endif
758 # ifdef FEAT_XCLIPBOARD
759 	"+xterm_clipboard",
760 # else
761 	"-xterm_clipboard",
762 # endif
763 #endif
764 #ifdef FEAT_XTERM_SAVE
765 	"+xterm_save",
766 #else
767 	"-xterm_save",
768 #endif
769 	NULL
770 };
771 
772 static int included_patches[] =
773 {   /* Add new patch number below this line */
774 /**/
775     1400,
776 /**/
777     1399,
778 /**/
779     1398,
780 /**/
781     1397,
782 /**/
783     1396,
784 /**/
785     1395,
786 /**/
787     1394,
788 /**/
789     1393,
790 /**/
791     1392,
792 /**/
793     1391,
794 /**/
795     1390,
796 /**/
797     1389,
798 /**/
799     1388,
800 /**/
801     1387,
802 /**/
803     1386,
804 /**/
805     1385,
806 /**/
807     1384,
808 /**/
809     1383,
810 /**/
811     1382,
812 /**/
813     1381,
814 /**/
815     1380,
816 /**/
817     1379,
818 /**/
819     1378,
820 /**/
821     1377,
822 /**/
823     1376,
824 /**/
825     1375,
826 /**/
827     1374,
828 /**/
829     1373,
830 /**/
831     1372,
832 /**/
833     1371,
834 /**/
835     1370,
836 /**/
837     1369,
838 /**/
839     1368,
840 /**/
841     1367,
842 /**/
843     1366,
844 /**/
845     1365,
846 /**/
847     1364,
848 /**/
849     1363,
850 /**/
851     1362,
852 /**/
853     1361,
854 /**/
855     1360,
856 /**/
857     1359,
858 /**/
859     1358,
860 /**/
861     1357,
862 /**/
863     1356,
864 /**/
865     1355,
866 /**/
867     1354,
868 /**/
869     1353,
870 /**/
871     1352,
872 /**/
873     1351,
874 /**/
875     1350,
876 /**/
877     1349,
878 /**/
879     1348,
880 /**/
881     1347,
882 /**/
883     1346,
884 /**/
885     1345,
886 /**/
887     1344,
888 /**/
889     1343,
890 /**/
891     1342,
892 /**/
893     1341,
894 /**/
895     1340,
896 /**/
897     1339,
898 /**/
899     1338,
900 /**/
901     1337,
902 /**/
903     1336,
904 /**/
905     1335,
906 /**/
907     1334,
908 /**/
909     1333,
910 /**/
911     1332,
912 /**/
913     1331,
914 /**/
915     1330,
916 /**/
917     1329,
918 /**/
919     1328,
920 /**/
921     1327,
922 /**/
923     1326,
924 /**/
925     1325,
926 /**/
927     1324,
928 /**/
929     1323,
930 /**/
931     1322,
932 /**/
933     1321,
934 /**/
935     1320,
936 /**/
937     1319,
938 /**/
939     1318,
940 /**/
941     1317,
942 /**/
943     1316,
944 /**/
945     1315,
946 /**/
947     1314,
948 /**/
949     1313,
950 /**/
951     1312,
952 /**/
953     1311,
954 /**/
955     1310,
956 /**/
957     1309,
958 /**/
959     1308,
960 /**/
961     1307,
962 /**/
963     1306,
964 /**/
965     1305,
966 /**/
967     1304,
968 /**/
969     1303,
970 /**/
971     1302,
972 /**/
973     1301,
974 /**/
975     1300,
976 /**/
977     1299,
978 /**/
979     1298,
980 /**/
981     1297,
982 /**/
983     1296,
984 /**/
985     1295,
986 /**/
987     1294,
988 /**/
989     1293,
990 /**/
991     1292,
992 /**/
993     1291,
994 /**/
995     1290,
996 /**/
997     1289,
998 /**/
999     1288,
1000 /**/
1001     1287,
1002 /**/
1003     1286,
1004 /**/
1005     1285,
1006 /**/
1007     1284,
1008 /**/
1009     1283,
1010 /**/
1011     1282,
1012 /**/
1013     1281,
1014 /**/
1015     1280,
1016 /**/
1017     1279,
1018 /**/
1019     1278,
1020 /**/
1021     1277,
1022 /**/
1023     1276,
1024 /**/
1025     1275,
1026 /**/
1027     1274,
1028 /**/
1029     1273,
1030 /**/
1031     1272,
1032 /**/
1033     1271,
1034 /**/
1035     1270,
1036 /**/
1037     1269,
1038 /**/
1039     1268,
1040 /**/
1041     1267,
1042 /**/
1043     1266,
1044 /**/
1045     1265,
1046 /**/
1047     1264,
1048 /**/
1049     1263,
1050 /**/
1051     1262,
1052 /**/
1053     1261,
1054 /**/
1055     1260,
1056 /**/
1057     1259,
1058 /**/
1059     1258,
1060 /**/
1061     1257,
1062 /**/
1063     1256,
1064 /**/
1065     1255,
1066 /**/
1067     1254,
1068 /**/
1069     1253,
1070 /**/
1071     1252,
1072 /**/
1073     1251,
1074 /**/
1075     1250,
1076 /**/
1077     1249,
1078 /**/
1079     1248,
1080 /**/
1081     1247,
1082 /**/
1083     1246,
1084 /**/
1085     1245,
1086 /**/
1087     1244,
1088 /**/
1089     1243,
1090 /**/
1091     1242,
1092 /**/
1093     1241,
1094 /**/
1095     1240,
1096 /**/
1097     1239,
1098 /**/
1099     1238,
1100 /**/
1101     1237,
1102 /**/
1103     1236,
1104 /**/
1105     1235,
1106 /**/
1107     1234,
1108 /**/
1109     1233,
1110 /**/
1111     1232,
1112 /**/
1113     1231,
1114 /**/
1115     1230,
1116 /**/
1117     1229,
1118 /**/
1119     1228,
1120 /**/
1121     1227,
1122 /**/
1123     1226,
1124 /**/
1125     1225,
1126 /**/
1127     1224,
1128 /**/
1129     1223,
1130 /**/
1131     1222,
1132 /**/
1133     1221,
1134 /**/
1135     1220,
1136 /**/
1137     1219,
1138 /**/
1139     1218,
1140 /**/
1141     1217,
1142 /**/
1143     1216,
1144 /**/
1145     1215,
1146 /**/
1147     1214,
1148 /**/
1149     1213,
1150 /**/
1151     1212,
1152 /**/
1153     1211,
1154 /**/
1155     1210,
1156 /**/
1157     1209,
1158 /**/
1159     1208,
1160 /**/
1161     1207,
1162 /**/
1163     1206,
1164 /**/
1165     1205,
1166 /**/
1167     1204,
1168 /**/
1169     1203,
1170 /**/
1171     1202,
1172 /**/
1173     1201,
1174 /**/
1175     1200,
1176 /**/
1177     1199,
1178 /**/
1179     1198,
1180 /**/
1181     1197,
1182 /**/
1183     1196,
1184 /**/
1185     1195,
1186 /**/
1187     1194,
1188 /**/
1189     1193,
1190 /**/
1191     1192,
1192 /**/
1193     1191,
1194 /**/
1195     1190,
1196 /**/
1197     1189,
1198 /**/
1199     1188,
1200 /**/
1201     1187,
1202 /**/
1203     1186,
1204 /**/
1205     1185,
1206 /**/
1207     1184,
1208 /**/
1209     1183,
1210 /**/
1211     1182,
1212 /**/
1213     1181,
1214 /**/
1215     1180,
1216 /**/
1217     1179,
1218 /**/
1219     1178,
1220 /**/
1221     1177,
1222 /**/
1223     1176,
1224 /**/
1225     1175,
1226 /**/
1227     1174,
1228 /**/
1229     1173,
1230 /**/
1231     1172,
1232 /**/
1233     1171,
1234 /**/
1235     1170,
1236 /**/
1237     1169,
1238 /**/
1239     1168,
1240 /**/
1241     1167,
1242 /**/
1243     1166,
1244 /**/
1245     1165,
1246 /**/
1247     1164,
1248 /**/
1249     1163,
1250 /**/
1251     1162,
1252 /**/
1253     1161,
1254 /**/
1255     1160,
1256 /**/
1257     1159,
1258 /**/
1259     1158,
1260 /**/
1261     1157,
1262 /**/
1263     1156,
1264 /**/
1265     1155,
1266 /**/
1267     1154,
1268 /**/
1269     1153,
1270 /**/
1271     1152,
1272 /**/
1273     1151,
1274 /**/
1275     1150,
1276 /**/
1277     1149,
1278 /**/
1279     1148,
1280 /**/
1281     1147,
1282 /**/
1283     1146,
1284 /**/
1285     1145,
1286 /**/
1287     1144,
1288 /**/
1289     1143,
1290 /**/
1291     1142,
1292 /**/
1293     1141,
1294 /**/
1295     1140,
1296 /**/
1297     1139,
1298 /**/
1299     1138,
1300 /**/
1301     1137,
1302 /**/
1303     1136,
1304 /**/
1305     1135,
1306 /**/
1307     1134,
1308 /**/
1309     1133,
1310 /**/
1311     1132,
1312 /**/
1313     1131,
1314 /**/
1315     1130,
1316 /**/
1317     1129,
1318 /**/
1319     1128,
1320 /**/
1321     1127,
1322 /**/
1323     1126,
1324 /**/
1325     1125,
1326 /**/
1327     1124,
1328 /**/
1329     1123,
1330 /**/
1331     1122,
1332 /**/
1333     1121,
1334 /**/
1335     1120,
1336 /**/
1337     1119,
1338 /**/
1339     1118,
1340 /**/
1341     1117,
1342 /**/
1343     1116,
1344 /**/
1345     1115,
1346 /**/
1347     1114,
1348 /**/
1349     1113,
1350 /**/
1351     1112,
1352 /**/
1353     1111,
1354 /**/
1355     1110,
1356 /**/
1357     1109,
1358 /**/
1359     1108,
1360 /**/
1361     1107,
1362 /**/
1363     1106,
1364 /**/
1365     1105,
1366 /**/
1367     1104,
1368 /**/
1369     1103,
1370 /**/
1371     1102,
1372 /**/
1373     1101,
1374 /**/
1375     1100,
1376 /**/
1377     1099,
1378 /**/
1379     1098,
1380 /**/
1381     1097,
1382 /**/
1383     1096,
1384 /**/
1385     1095,
1386 /**/
1387     1094,
1388 /**/
1389     1093,
1390 /**/
1391     1092,
1392 /**/
1393     1091,
1394 /**/
1395     1090,
1396 /**/
1397     1089,
1398 /**/
1399     1088,
1400 /**/
1401     1087,
1402 /**/
1403     1086,
1404 /**/
1405     1085,
1406 /**/
1407     1084,
1408 /**/
1409     1083,
1410 /**/
1411     1082,
1412 /**/
1413     1081,
1414 /**/
1415     1080,
1416 /**/
1417     1079,
1418 /**/
1419     1078,
1420 /**/
1421     1077,
1422 /**/
1423     1076,
1424 /**/
1425     1075,
1426 /**/
1427     1074,
1428 /**/
1429     1073,
1430 /**/
1431     1072,
1432 /**/
1433     1071,
1434 /**/
1435     1070,
1436 /**/
1437     1069,
1438 /**/
1439     1068,
1440 /**/
1441     1067,
1442 /**/
1443     1066,
1444 /**/
1445     1065,
1446 /**/
1447     1064,
1448 /**/
1449     1063,
1450 /**/
1451     1062,
1452 /**/
1453     1061,
1454 /**/
1455     1060,
1456 /**/
1457     1059,
1458 /**/
1459     1058,
1460 /**/
1461     1057,
1462 /**/
1463     1056,
1464 /**/
1465     1055,
1466 /**/
1467     1054,
1468 /**/
1469     1053,
1470 /**/
1471     1052,
1472 /**/
1473     1051,
1474 /**/
1475     1050,
1476 /**/
1477     1049,
1478 /**/
1479     1048,
1480 /**/
1481     1047,
1482 /**/
1483     1046,
1484 /**/
1485     1045,
1486 /**/
1487     1044,
1488 /**/
1489     1043,
1490 /**/
1491     1042,
1492 /**/
1493     1041,
1494 /**/
1495     1040,
1496 /**/
1497     1039,
1498 /**/
1499     1038,
1500 /**/
1501     1037,
1502 /**/
1503     1036,
1504 /**/
1505     1035,
1506 /**/
1507     1034,
1508 /**/
1509     1033,
1510 /**/
1511     1032,
1512 /**/
1513     1031,
1514 /**/
1515     1030,
1516 /**/
1517     1029,
1518 /**/
1519     1028,
1520 /**/
1521     1027,
1522 /**/
1523     1026,
1524 /**/
1525     1025,
1526 /**/
1527     1024,
1528 /**/
1529     1023,
1530 /**/
1531     1022,
1532 /**/
1533     1021,
1534 /**/
1535     1020,
1536 /**/
1537     1019,
1538 /**/
1539     1018,
1540 /**/
1541     1017,
1542 /**/
1543     1016,
1544 /**/
1545     1015,
1546 /**/
1547     1014,
1548 /**/
1549     1013,
1550 /**/
1551     1012,
1552 /**/
1553     1011,
1554 /**/
1555     1010,
1556 /**/
1557     1009,
1558 /**/
1559     1008,
1560 /**/
1561     1007,
1562 /**/
1563     1006,
1564 /**/
1565     1005,
1566 /**/
1567     1004,
1568 /**/
1569     1003,
1570 /**/
1571     1002,
1572 /**/
1573     1001,
1574 /**/
1575     1000,
1576 /**/
1577     999,
1578 /**/
1579     998,
1580 /**/
1581     997,
1582 /**/
1583     996,
1584 /**/
1585     995,
1586 /**/
1587     994,
1588 /**/
1589     993,
1590 /**/
1591     992,
1592 /**/
1593     991,
1594 /**/
1595     990,
1596 /**/
1597     989,
1598 /**/
1599     988,
1600 /**/
1601     987,
1602 /**/
1603     986,
1604 /**/
1605     985,
1606 /**/
1607     984,
1608 /**/
1609     983,
1610 /**/
1611     982,
1612 /**/
1613     981,
1614 /**/
1615     980,
1616 /**/
1617     979,
1618 /**/
1619     978,
1620 /**/
1621     977,
1622 /**/
1623     976,
1624 /**/
1625     975,
1626 /**/
1627     974,
1628 /**/
1629     973,
1630 /**/
1631     972,
1632 /**/
1633     971,
1634 /**/
1635     970,
1636 /**/
1637     969,
1638 /**/
1639     968,
1640 /**/
1641     967,
1642 /**/
1643     966,
1644 /**/
1645     965,
1646 /**/
1647     964,
1648 /**/
1649     963,
1650 /**/
1651     962,
1652 /**/
1653     961,
1654 /**/
1655     960,
1656 /**/
1657     959,
1658 /**/
1659     958,
1660 /**/
1661     957,
1662 /**/
1663     956,
1664 /**/
1665     955,
1666 /**/
1667     954,
1668 /**/
1669     953,
1670 /**/
1671     952,
1672 /**/
1673     951,
1674 /**/
1675     950,
1676 /**/
1677     949,
1678 /**/
1679     948,
1680 /**/
1681     947,
1682 /**/
1683     946,
1684 /**/
1685     945,
1686 /**/
1687     944,
1688 /**/
1689     943,
1690 /**/
1691     942,
1692 /**/
1693     941,
1694 /**/
1695     940,
1696 /**/
1697     939,
1698 /**/
1699     938,
1700 /**/
1701     937,
1702 /**/
1703     936,
1704 /**/
1705     935,
1706 /**/
1707     934,
1708 /**/
1709     933,
1710 /**/
1711     932,
1712 /**/
1713     931,
1714 /**/
1715     930,
1716 /**/
1717     929,
1718 /**/
1719     928,
1720 /**/
1721     927,
1722 /**/
1723     926,
1724 /**/
1725     925,
1726 /**/
1727     924,
1728 /**/
1729     923,
1730 /**/
1731     922,
1732 /**/
1733     921,
1734 /**/
1735     920,
1736 /**/
1737     919,
1738 /**/
1739     918,
1740 /**/
1741     917,
1742 /**/
1743     916,
1744 /**/
1745     915,
1746 /**/
1747     914,
1748 /**/
1749     913,
1750 /**/
1751     912,
1752 /**/
1753     911,
1754 /**/
1755     910,
1756 /**/
1757     909,
1758 /**/
1759     908,
1760 /**/
1761     907,
1762 /**/
1763     906,
1764 /**/
1765     905,
1766 /**/
1767     904,
1768 /**/
1769     903,
1770 /**/
1771     902,
1772 /**/
1773     901,
1774 /**/
1775     900,
1776 /**/
1777     899,
1778 /**/
1779     898,
1780 /**/
1781     897,
1782 /**/
1783     896,
1784 /**/
1785     895,
1786 /**/
1787     894,
1788 /**/
1789     893,
1790 /**/
1791     892,
1792 /**/
1793     891,
1794 /**/
1795     890,
1796 /**/
1797     889,
1798 /**/
1799     888,
1800 /**/
1801     887,
1802 /**/
1803     886,
1804 /**/
1805     885,
1806 /**/
1807     884,
1808 /**/
1809     883,
1810 /**/
1811     882,
1812 /**/
1813     881,
1814 /**/
1815     880,
1816 /**/
1817     879,
1818 /**/
1819     878,
1820 /**/
1821     877,
1822 /**/
1823     876,
1824 /**/
1825     875,
1826 /**/
1827     874,
1828 /**/
1829     873,
1830 /**/
1831     872,
1832 /**/
1833     871,
1834 /**/
1835     870,
1836 /**/
1837     869,
1838 /**/
1839     868,
1840 /**/
1841     867,
1842 /**/
1843     866,
1844 /**/
1845     865,
1846 /**/
1847     864,
1848 /**/
1849     863,
1850 /**/
1851     862,
1852 /**/
1853     861,
1854 /**/
1855     860,
1856 /**/
1857     859,
1858 /**/
1859     858,
1860 /**/
1861     857,
1862 /**/
1863     856,
1864 /**/
1865     855,
1866 /**/
1867     854,
1868 /**/
1869     853,
1870 /**/
1871     852,
1872 /**/
1873     851,
1874 /**/
1875     850,
1876 /**/
1877     849,
1878 /**/
1879     848,
1880 /**/
1881     847,
1882 /**/
1883     846,
1884 /**/
1885     845,
1886 /**/
1887     844,
1888 /**/
1889     843,
1890 /**/
1891     842,
1892 /**/
1893     841,
1894 /**/
1895     840,
1896 /**/
1897     839,
1898 /**/
1899     838,
1900 /**/
1901     837,
1902 /**/
1903     836,
1904 /**/
1905     835,
1906 /**/
1907     834,
1908 /**/
1909     833,
1910 /**/
1911     832,
1912 /**/
1913     831,
1914 /**/
1915     830,
1916 /**/
1917     829,
1918 /**/
1919     828,
1920 /**/
1921     827,
1922 /**/
1923     826,
1924 /**/
1925     825,
1926 /**/
1927     824,
1928 /**/
1929     823,
1930 /**/
1931     822,
1932 /**/
1933     821,
1934 /**/
1935     820,
1936 /**/
1937     819,
1938 /**/
1939     818,
1940 /**/
1941     817,
1942 /**/
1943     816,
1944 /**/
1945     815,
1946 /**/
1947     814,
1948 /**/
1949     813,
1950 /**/
1951     812,
1952 /**/
1953     811,
1954 /**/
1955     810,
1956 /**/
1957     809,
1958 /**/
1959     808,
1960 /**/
1961     807,
1962 /**/
1963     806,
1964 /**/
1965     805,
1966 /**/
1967     804,
1968 /**/
1969     803,
1970 /**/
1971     802,
1972 /**/
1973     801,
1974 /**/
1975     800,
1976 /**/
1977     799,
1978 /**/
1979     798,
1980 /**/
1981     797,
1982 /**/
1983     796,
1984 /**/
1985     795,
1986 /**/
1987     794,
1988 /**/
1989     793,
1990 /**/
1991     792,
1992 /**/
1993     791,
1994 /**/
1995     790,
1996 /**/
1997     789,
1998 /**/
1999     788,
2000 /**/
2001     787,
2002 /**/
2003     786,
2004 /**/
2005     785,
2006 /**/
2007     784,
2008 /**/
2009     783,
2010 /**/
2011     782,
2012 /**/
2013     781,
2014 /**/
2015     780,
2016 /**/
2017     779,
2018 /**/
2019     778,
2020 /**/
2021     777,
2022 /**/
2023     776,
2024 /**/
2025     775,
2026 /**/
2027     774,
2028 /**/
2029     773,
2030 /**/
2031     772,
2032 /**/
2033     771,
2034 /**/
2035     770,
2036 /**/
2037     769,
2038 /**/
2039     768,
2040 /**/
2041     767,
2042 /**/
2043     766,
2044 /**/
2045     765,
2046 /**/
2047     764,
2048 /**/
2049     763,
2050 /**/
2051     762,
2052 /**/
2053     761,
2054 /**/
2055     760,
2056 /**/
2057     759,
2058 /**/
2059     758,
2060 /**/
2061     757,
2062 /**/
2063     756,
2064 /**/
2065     755,
2066 /**/
2067     754,
2068 /**/
2069     753,
2070 /**/
2071     752,
2072 /**/
2073     751,
2074 /**/
2075     750,
2076 /**/
2077     749,
2078 /**/
2079     748,
2080 /**/
2081     747,
2082 /**/
2083     746,
2084 /**/
2085     745,
2086 /**/
2087     744,
2088 /**/
2089     743,
2090 /**/
2091     742,
2092 /**/
2093     741,
2094 /**/
2095     740,
2096 /**/
2097     739,
2098 /**/
2099     738,
2100 /**/
2101     737,
2102 /**/
2103     736,
2104 /**/
2105     735,
2106 /**/
2107     734,
2108 /**/
2109     733,
2110 /**/
2111     732,
2112 /**/
2113     731,
2114 /**/
2115     730,
2116 /**/
2117     729,
2118 /**/
2119     728,
2120 /**/
2121     727,
2122 /**/
2123     726,
2124 /**/
2125     725,
2126 /**/
2127     724,
2128 /**/
2129     723,
2130 /**/
2131     722,
2132 /**/
2133     721,
2134 /**/
2135     720,
2136 /**/
2137     719,
2138 /**/
2139     718,
2140 /**/
2141     717,
2142 /**/
2143     716,
2144 /**/
2145     715,
2146 /**/
2147     714,
2148 /**/
2149     713,
2150 /**/
2151     712,
2152 /**/
2153     711,
2154 /**/
2155     710,
2156 /**/
2157     709,
2158 /**/
2159     708,
2160 /**/
2161     707,
2162 /**/
2163     706,
2164 /**/
2165     705,
2166 /**/
2167     704,
2168 /**/
2169     703,
2170 /**/
2171     702,
2172 /**/
2173     701,
2174 /**/
2175     700,
2176 /**/
2177     699,
2178 /**/
2179     698,
2180 /**/
2181     697,
2182 /**/
2183     696,
2184 /**/
2185     695,
2186 /**/
2187     694,
2188 /**/
2189     693,
2190 /**/
2191     692,
2192 /**/
2193     691,
2194 /**/
2195     690,
2196 /**/
2197     689,
2198 /**/
2199     688,
2200 /**/
2201     687,
2202 /**/
2203     686,
2204 /**/
2205     685,
2206 /**/
2207     684,
2208 /**/
2209     683,
2210 /**/
2211     682,
2212 /**/
2213     681,
2214 /**/
2215     680,
2216 /**/
2217     679,
2218 /**/
2219     678,
2220 /**/
2221     677,
2222 /**/
2223     676,
2224 /**/
2225     675,
2226 /**/
2227     674,
2228 /**/
2229     673,
2230 /**/
2231     672,
2232 /**/
2233     671,
2234 /**/
2235     670,
2236 /**/
2237     669,
2238 /**/
2239     668,
2240 /**/
2241     667,
2242 /**/
2243     666,
2244 /**/
2245     665,
2246 /**/
2247     664,
2248 /**/
2249     663,
2250 /**/
2251     662,
2252 /**/
2253     661,
2254 /**/
2255     660,
2256 /**/
2257     659,
2258 /**/
2259     658,
2260 /**/
2261     657,
2262 /**/
2263     656,
2264 /**/
2265     655,
2266 /**/
2267     654,
2268 /**/
2269     653,
2270 /**/
2271     652,
2272 /**/
2273     651,
2274 /**/
2275     650,
2276 /**/
2277     649,
2278 /**/
2279     648,
2280 /**/
2281     647,
2282 /**/
2283     646,
2284 /**/
2285     645,
2286 /**/
2287     644,
2288 /**/
2289     643,
2290 /**/
2291     642,
2292 /**/
2293     641,
2294 /**/
2295     640,
2296 /**/
2297     639,
2298 /**/
2299     638,
2300 /**/
2301     637,
2302 /**/
2303     636,
2304 /**/
2305     635,
2306 /**/
2307     634,
2308 /**/
2309     633,
2310 /**/
2311     632,
2312 /**/
2313     631,
2314 /**/
2315     630,
2316 /**/
2317     629,
2318 /**/
2319     628,
2320 /**/
2321     627,
2322 /**/
2323     626,
2324 /**/
2325     625,
2326 /**/
2327     624,
2328 /**/
2329     623,
2330 /**/
2331     622,
2332 /**/
2333     621,
2334 /**/
2335     620,
2336 /**/
2337     619,
2338 /**/
2339     618,
2340 /**/
2341     617,
2342 /**/
2343     616,
2344 /**/
2345     615,
2346 /**/
2347     614,
2348 /**/
2349     613,
2350 /**/
2351     612,
2352 /**/
2353     611,
2354 /**/
2355     610,
2356 /**/
2357     609,
2358 /**/
2359     608,
2360 /**/
2361     607,
2362 /**/
2363     606,
2364 /**/
2365     605,
2366 /**/
2367     604,
2368 /**/
2369     603,
2370 /**/
2371     602,
2372 /**/
2373     601,
2374 /**/
2375     600,
2376 /**/
2377     599,
2378 /**/
2379     598,
2380 /**/
2381     597,
2382 /**/
2383     596,
2384 /**/
2385     595,
2386 /**/
2387     594,
2388 /**/
2389     593,
2390 /**/
2391     592,
2392 /**/
2393     591,
2394 /**/
2395     590,
2396 /**/
2397     589,
2398 /**/
2399     588,
2400 /**/
2401     587,
2402 /**/
2403     586,
2404 /**/
2405     585,
2406 /**/
2407     584,
2408 /**/
2409     583,
2410 /**/
2411     582,
2412 /**/
2413     581,
2414 /**/
2415     580,
2416 /**/
2417     579,
2418 /**/
2419     578,
2420 /**/
2421     577,
2422 /**/
2423     576,
2424 /**/
2425     575,
2426 /**/
2427     574,
2428 /**/
2429     573,
2430 /**/
2431     572,
2432 /**/
2433     571,
2434 /**/
2435     570,
2436 /**/
2437     569,
2438 /**/
2439     568,
2440 /**/
2441     567,
2442 /**/
2443     566,
2444 /**/
2445     565,
2446 /**/
2447     564,
2448 /**/
2449     563,
2450 /**/
2451     562,
2452 /**/
2453     561,
2454 /**/
2455     560,
2456 /**/
2457     559,
2458 /**/
2459     558,
2460 /**/
2461     557,
2462 /**/
2463     556,
2464 /**/
2465     555,
2466 /**/
2467     554,
2468 /**/
2469     553,
2470 /**/
2471     552,
2472 /**/
2473     551,
2474 /**/
2475     550,
2476 /**/
2477     549,
2478 /**/
2479     548,
2480 /**/
2481     547,
2482 /**/
2483     546,
2484 /**/
2485     545,
2486 /**/
2487     544,
2488 /**/
2489     543,
2490 /**/
2491     542,
2492 /**/
2493     541,
2494 /**/
2495     540,
2496 /**/
2497     539,
2498 /**/
2499     538,
2500 /**/
2501     537,
2502 /**/
2503     536,
2504 /**/
2505     535,
2506 /**/
2507     534,
2508 /**/
2509     533,
2510 /**/
2511     532,
2512 /**/
2513     531,
2514 /**/
2515     530,
2516 /**/
2517     529,
2518 /**/
2519     528,
2520 /**/
2521     527,
2522 /**/
2523     526,
2524 /**/
2525     525,
2526 /**/
2527     524,
2528 /**/
2529     523,
2530 /**/
2531     522,
2532 /**/
2533     521,
2534 /**/
2535     520,
2536 /**/
2537     519,
2538 /**/
2539     518,
2540 /**/
2541     517,
2542 /**/
2543     516,
2544 /**/
2545     515,
2546 /**/
2547     514,
2548 /**/
2549     513,
2550 /**/
2551     512,
2552 /**/
2553     511,
2554 /**/
2555     510,
2556 /**/
2557     509,
2558 /**/
2559     508,
2560 /**/
2561     507,
2562 /**/
2563     506,
2564 /**/
2565     505,
2566 /**/
2567     504,
2568 /**/
2569     503,
2570 /**/
2571     502,
2572 /**/
2573     501,
2574 /**/
2575     500,
2576 /**/
2577     499,
2578 /**/
2579     498,
2580 /**/
2581     497,
2582 /**/
2583     496,
2584 /**/
2585     495,
2586 /**/
2587     494,
2588 /**/
2589     493,
2590 /**/
2591     492,
2592 /**/
2593     491,
2594 /**/
2595     490,
2596 /**/
2597     489,
2598 /**/
2599     488,
2600 /**/
2601     487,
2602 /**/
2603     486,
2604 /**/
2605     485,
2606 /**/
2607     484,
2608 /**/
2609     483,
2610 /**/
2611     482,
2612 /**/
2613     481,
2614 /**/
2615     480,
2616 /**/
2617     479,
2618 /**/
2619     478,
2620 /**/
2621     477,
2622 /**/
2623     476,
2624 /**/
2625     475,
2626 /**/
2627     474,
2628 /**/
2629     473,
2630 /**/
2631     472,
2632 /**/
2633     471,
2634 /**/
2635     470,
2636 /**/
2637     469,
2638 /**/
2639     468,
2640 /**/
2641     467,
2642 /**/
2643     466,
2644 /**/
2645     465,
2646 /**/
2647     464,
2648 /**/
2649     463,
2650 /**/
2651     462,
2652 /**/
2653     461,
2654 /**/
2655     460,
2656 /**/
2657     459,
2658 /**/
2659     458,
2660 /**/
2661     457,
2662 /**/
2663     456,
2664 /**/
2665     455,
2666 /**/
2667     454,
2668 /**/
2669     453,
2670 /**/
2671     452,
2672 /**/
2673     451,
2674 /**/
2675     450,
2676 /**/
2677     449,
2678 /**/
2679     448,
2680 /**/
2681     447,
2682 /**/
2683     446,
2684 /**/
2685     445,
2686 /**/
2687     444,
2688 /**/
2689     443,
2690 /**/
2691     442,
2692 /**/
2693     441,
2694 /**/
2695     440,
2696 /**/
2697     439,
2698 /**/
2699     438,
2700 /**/
2701     437,
2702 /**/
2703     436,
2704 /**/
2705     435,
2706 /**/
2707     434,
2708 /**/
2709     433,
2710 /**/
2711     432,
2712 /**/
2713     431,
2714 /**/
2715     430,
2716 /**/
2717     429,
2718 /**/
2719     428,
2720 /**/
2721     427,
2722 /**/
2723     426,
2724 /**/
2725     425,
2726 /**/
2727     424,
2728 /**/
2729     423,
2730 /**/
2731     422,
2732 /**/
2733     421,
2734 /**/
2735     420,
2736 /**/
2737     419,
2738 /**/
2739     418,
2740 /**/
2741     417,
2742 /**/
2743     416,
2744 /**/
2745     415,
2746 /**/
2747     414,
2748 /**/
2749     413,
2750 /**/
2751     412,
2752 /**/
2753     411,
2754 /**/
2755     410,
2756 /**/
2757     409,
2758 /**/
2759     408,
2760 /**/
2761     407,
2762 /**/
2763     406,
2764 /**/
2765     405,
2766 /**/
2767     404,
2768 /**/
2769     403,
2770 /**/
2771     402,
2772 /**/
2773     401,
2774 /**/
2775     400,
2776 /**/
2777     399,
2778 /**/
2779     398,
2780 /**/
2781     397,
2782 /**/
2783     396,
2784 /**/
2785     395,
2786 /**/
2787     394,
2788 /**/
2789     393,
2790 /**/
2791     392,
2792 /**/
2793     391,
2794 /**/
2795     390,
2796 /**/
2797     389,
2798 /**/
2799     388,
2800 /**/
2801     387,
2802 /**/
2803     386,
2804 /**/
2805     385,
2806 /**/
2807     384,
2808 /**/
2809     383,
2810 /**/
2811     382,
2812 /**/
2813     381,
2814 /**/
2815     380,
2816 /**/
2817     379,
2818 /**/
2819     378,
2820 /**/
2821     377,
2822 /**/
2823     376,
2824 /**/
2825     375,
2826 /**/
2827     374,
2828 /**/
2829     373,
2830 /**/
2831     372,
2832 /**/
2833     371,
2834 /**/
2835     370,
2836 /**/
2837     369,
2838 /**/
2839     368,
2840 /**/
2841     367,
2842 /**/
2843     366,
2844 /**/
2845     365,
2846 /**/
2847     364,
2848 /**/
2849     363,
2850 /**/
2851     362,
2852 /**/
2853     361,
2854 /**/
2855     360,
2856 /**/
2857     359,
2858 /**/
2859     358,
2860 /**/
2861     357,
2862 /**/
2863     356,
2864 /**/
2865     355,
2866 /**/
2867     354,
2868 /**/
2869     353,
2870 /**/
2871     352,
2872 /**/
2873     351,
2874 /**/
2875     350,
2876 /**/
2877     349,
2878 /**/
2879     348,
2880 /**/
2881     347,
2882 /**/
2883     346,
2884 /**/
2885     345,
2886 /**/
2887     344,
2888 /**/
2889     343,
2890 /**/
2891     342,
2892 /**/
2893     341,
2894 /**/
2895     340,
2896 /**/
2897     339,
2898 /**/
2899     338,
2900 /**/
2901     337,
2902 /**/
2903     336,
2904 /**/
2905     335,
2906 /**/
2907     334,
2908 /**/
2909     333,
2910 /**/
2911     332,
2912 /**/
2913     331,
2914 /**/
2915     330,
2916 /**/
2917     329,
2918 /**/
2919     328,
2920 /**/
2921     327,
2922 /**/
2923     326,
2924 /**/
2925     325,
2926 /**/
2927     324,
2928 /**/
2929     323,
2930 /**/
2931     322,
2932 /**/
2933     321,
2934 /**/
2935     320,
2936 /**/
2937     319,
2938 /**/
2939     318,
2940 /**/
2941     317,
2942 /**/
2943     316,
2944 /**/
2945     315,
2946 /**/
2947     314,
2948 /**/
2949     313,
2950 /**/
2951     312,
2952 /**/
2953     311,
2954 /**/
2955     310,
2956 /**/
2957     309,
2958 /**/
2959     308,
2960 /**/
2961     307,
2962 /**/
2963     306,
2964 /**/
2965     305,
2966 /**/
2967     304,
2968 /**/
2969     303,
2970 /**/
2971     302,
2972 /**/
2973     301,
2974 /**/
2975     300,
2976 /**/
2977     299,
2978 /**/
2979     298,
2980 /**/
2981     297,
2982 /**/
2983     296,
2984 /**/
2985     295,
2986 /**/
2987     294,
2988 /**/
2989     293,
2990 /**/
2991     292,
2992 /**/
2993     291,
2994 /**/
2995     290,
2996 /**/
2997     289,
2998 /**/
2999     288,
3000 /**/
3001     287,
3002 /**/
3003     286,
3004 /**/
3005     285,
3006 /**/
3007     284,
3008 /**/
3009     283,
3010 /**/
3011     282,
3012 /**/
3013     281,
3014 /**/
3015     280,
3016 /**/
3017     279,
3018 /**/
3019     278,
3020 /**/
3021     277,
3022 /**/
3023     276,
3024 /**/
3025     275,
3026 /**/
3027     274,
3028 /**/
3029     273,
3030 /**/
3031     272,
3032 /**/
3033     271,
3034 /**/
3035     270,
3036 /**/
3037     269,
3038 /**/
3039     268,
3040 /**/
3041     267,
3042 /**/
3043     266,
3044 /**/
3045     265,
3046 /**/
3047     264,
3048 /**/
3049     263,
3050 /**/
3051     262,
3052 /**/
3053     261,
3054 /**/
3055     260,
3056 /**/
3057     259,
3058 /**/
3059     258,
3060 /**/
3061     257,
3062 /**/
3063     256,
3064 /**/
3065     255,
3066 /**/
3067     254,
3068 /**/
3069     253,
3070 /**/
3071     252,
3072 /**/
3073     251,
3074 /**/
3075     250,
3076 /**/
3077     249,
3078 /**/
3079     248,
3080 /**/
3081     247,
3082 /**/
3083     246,
3084 /**/
3085     245,
3086 /**/
3087     244,
3088 /**/
3089     243,
3090 /**/
3091     242,
3092 /**/
3093     241,
3094 /**/
3095     240,
3096 /**/
3097     239,
3098 /**/
3099     238,
3100 /**/
3101     237,
3102 /**/
3103     236,
3104 /**/
3105     235,
3106 /**/
3107     234,
3108 /**/
3109     233,
3110 /**/
3111     232,
3112 /**/
3113     231,
3114 /**/
3115     230,
3116 /**/
3117     229,
3118 /**/
3119     228,
3120 /**/
3121     227,
3122 /**/
3123     226,
3124 /**/
3125     225,
3126 /**/
3127     224,
3128 /**/
3129     223,
3130 /**/
3131     222,
3132 /**/
3133     221,
3134 /**/
3135     220,
3136 /**/
3137     219,
3138 /**/
3139     218,
3140 /**/
3141     217,
3142 /**/
3143     216,
3144 /**/
3145     215,
3146 /**/
3147     214,
3148 /**/
3149     213,
3150 /**/
3151     212,
3152 /**/
3153     211,
3154 /**/
3155     210,
3156 /**/
3157     209,
3158 /**/
3159     208,
3160 /**/
3161     207,
3162 /**/
3163     206,
3164 /**/
3165     205,
3166 /**/
3167     204,
3168 /**/
3169     203,
3170 /**/
3171     202,
3172 /**/
3173     201,
3174 /**/
3175     200,
3176 /**/
3177     199,
3178 /**/
3179     198,
3180 /**/
3181     197,
3182 /**/
3183     196,
3184 /**/
3185     195,
3186 /**/
3187     194,
3188 /**/
3189     193,
3190 /**/
3191     192,
3192 /**/
3193     191,
3194 /**/
3195     190,
3196 /**/
3197     189,
3198 /**/
3199     188,
3200 /**/
3201     187,
3202 /**/
3203     186,
3204 /**/
3205     185,
3206 /**/
3207     184,
3208 /**/
3209     183,
3210 /**/
3211     182,
3212 /**/
3213     181,
3214 /**/
3215     180,
3216 /**/
3217     179,
3218 /**/
3219     178,
3220 /**/
3221     177,
3222 /**/
3223     176,
3224 /**/
3225     175,
3226 /**/
3227     174,
3228 /**/
3229     173,
3230 /**/
3231     172,
3232 /**/
3233     171,
3234 /**/
3235     170,
3236 /**/
3237     169,
3238 /**/
3239     168,
3240 /**/
3241     167,
3242 /**/
3243     166,
3244 /**/
3245     165,
3246 /**/
3247     164,
3248 /**/
3249     163,
3250 /**/
3251     162,
3252 /**/
3253     161,
3254 /**/
3255     160,
3256 /**/
3257     159,
3258 /**/
3259     158,
3260 /**/
3261     157,
3262 /**/
3263     156,
3264 /**/
3265     155,
3266 /**/
3267     154,
3268 /**/
3269     153,
3270 /**/
3271     152,
3272 /**/
3273     151,
3274 /**/
3275     150,
3276 /**/
3277     149,
3278 /**/
3279     148,
3280 /**/
3281     147,
3282 /**/
3283     146,
3284 /**/
3285     145,
3286 /**/
3287     144,
3288 /**/
3289     143,
3290 /**/
3291     142,
3292 /**/
3293     141,
3294 /**/
3295     140,
3296 /**/
3297     139,
3298 /**/
3299     138,
3300 /**/
3301     137,
3302 /**/
3303     136,
3304 /**/
3305     135,
3306 /**/
3307     134,
3308 /**/
3309     133,
3310 /**/
3311     132,
3312 /**/
3313     131,
3314 /**/
3315     130,
3316 /**/
3317     129,
3318 /**/
3319     128,
3320 /**/
3321     127,
3322 /**/
3323     126,
3324 /**/
3325     125,
3326 /**/
3327     124,
3328 /**/
3329     123,
3330 /**/
3331     122,
3332 /**/
3333     121,
3334 /**/
3335     120,
3336 /**/
3337     119,
3338 /**/
3339     118,
3340 /**/
3341     117,
3342 /**/
3343     116,
3344 /**/
3345     115,
3346 /**/
3347     114,
3348 /**/
3349     113,
3350 /**/
3351     112,
3352 /**/
3353     111,
3354 /**/
3355     110,
3356 /**/
3357     109,
3358 /**/
3359     108,
3360 /**/
3361     107,
3362 /**/
3363     106,
3364 /**/
3365     105,
3366 /**/
3367     104,
3368 /**/
3369     103,
3370 /**/
3371     102,
3372 /**/
3373     101,
3374 /**/
3375     100,
3376 /**/
3377     99,
3378 /**/
3379     98,
3380 /**/
3381     97,
3382 /**/
3383     96,
3384 /**/
3385     95,
3386 /**/
3387     94,
3388 /**/
3389     93,
3390 /**/
3391     92,
3392 /**/
3393     91,
3394 /**/
3395     90,
3396 /**/
3397     89,
3398 /**/
3399     88,
3400 /**/
3401     87,
3402 /**/
3403     86,
3404 /**/
3405     85,
3406 /**/
3407     84,
3408 /**/
3409     83,
3410 /**/
3411     82,
3412 /**/
3413     81,
3414 /**/
3415     80,
3416 /**/
3417     79,
3418 /**/
3419     78,
3420 /**/
3421     77,
3422 /**/
3423     76,
3424 /**/
3425     75,
3426 /**/
3427     74,
3428 /**/
3429     73,
3430 /**/
3431     72,
3432 /**/
3433     71,
3434 /**/
3435     70,
3436 /**/
3437     69,
3438 /**/
3439     68,
3440 /**/
3441     67,
3442 /**/
3443     66,
3444 /**/
3445     65,
3446 /**/
3447     64,
3448 /**/
3449     63,
3450 /**/
3451     62,
3452 /**/
3453     61,
3454 /**/
3455     60,
3456 /**/
3457     59,
3458 /**/
3459     58,
3460 /**/
3461     57,
3462 /**/
3463     56,
3464 /**/
3465     55,
3466 /**/
3467     54,
3468 /**/
3469     53,
3470 /**/
3471     52,
3472 /**/
3473     51,
3474 /**/
3475     50,
3476 /**/
3477     49,
3478 /**/
3479     48,
3480 /**/
3481     47,
3482 /**/
3483     46,
3484 /**/
3485     45,
3486 /**/
3487     44,
3488 /**/
3489     43,
3490 /**/
3491     42,
3492 /**/
3493     41,
3494 /**/
3495     40,
3496 /**/
3497     39,
3498 /**/
3499     38,
3500 /**/
3501     37,
3502 /**/
3503     36,
3504 /**/
3505     35,
3506 /**/
3507     34,
3508 /**/
3509     33,
3510 /**/
3511     32,
3512 /**/
3513     31,
3514 /**/
3515     30,
3516 /**/
3517     29,
3518 /**/
3519     28,
3520 /**/
3521     27,
3522 /**/
3523     26,
3524 /**/
3525     25,
3526 /**/
3527     24,
3528 /**/
3529     23,
3530 /**/
3531     22,
3532 /**/
3533     21,
3534 /**/
3535     20,
3536 /**/
3537     19,
3538 /**/
3539     18,
3540 /**/
3541     17,
3542 /**/
3543     16,
3544 /**/
3545     15,
3546 /**/
3547     14,
3548 /**/
3549     13,
3550 /**/
3551     12,
3552 /**/
3553     11,
3554 /**/
3555     10,
3556 /**/
3557     9,
3558 /**/
3559     8,
3560 /**/
3561     7,
3562 /**/
3563     6,
3564 /**/
3565     5,
3566 /**/
3567     4,
3568 /**/
3569     3,
3570 /**/
3571     2,
3572 /**/
3573     1,
3574 /**/
3575     0
3576 };
3577 
3578 /*
3579  * Place to put a short description when adding a feature with a patch.
3580  * Keep it short, e.g.,: "relative numbers", "persistent undo".
3581  * Also add a comment marker to separate the lines.
3582  * See the official Vim patches for the diff format: It must use a context of
3583  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
3584  */
3585 static char *(extra_patches[]) =
3586 {   /* Add your patch description below this line */
3587 /**/
3588     NULL
3589 };
3590 
3591     int
3592 highest_patch(void)
3593 {
3594     int		i;
3595     int		h = 0;
3596 
3597     for (i = 0; included_patches[i] != 0; ++i)
3598 	if (included_patches[i] > h)
3599 	    h = included_patches[i];
3600     return h;
3601 }
3602 
3603 #if defined(FEAT_EVAL) || defined(PROTO)
3604 /*
3605  * Return TRUE if patch "n" has been included.
3606  */
3607     int
3608 has_patch(int n)
3609 {
3610     int		i;
3611 
3612     for (i = 0; included_patches[i] != 0; ++i)
3613 	if (included_patches[i] == n)
3614 	    return TRUE;
3615     return FALSE;
3616 }
3617 #endif
3618 
3619     void
3620 ex_version(exarg_T *eap)
3621 {
3622     /*
3623      * Ignore a ":version 9.99" command.
3624      */
3625     if (*eap->arg == NUL)
3626     {
3627 	msg_putchar('\n');
3628 	list_version();
3629     }
3630 }
3631 
3632 /*
3633  * List all features aligned in columns, dictionary style.
3634  */
3635     static void
3636 list_features(void)
3637 {
3638     int		i;
3639     int		ncol;
3640     int		nrow;
3641     int		nfeat = 0;
3642     int		width = 0;
3643 
3644     /* Find the length of the longest feature name, use that + 1 as the column
3645      * width */
3646     for (i = 0; features[i] != NULL; ++i)
3647     {
3648 	int l = (int)STRLEN(features[i]);
3649 
3650 	if (l > width)
3651 	    width = l;
3652 	++nfeat;
3653     }
3654     width += 1;
3655 
3656     if (Columns < width)
3657     {
3658 	/* Not enough screen columns - show one per line */
3659 	for (i = 0; features[i] != NULL; ++i)
3660 	{
3661 	    version_msg(features[i]);
3662 	    if (msg_col > 0)
3663 		msg_putchar('\n');
3664 	}
3665 	return;
3666     }
3667 
3668     /* The rightmost column doesn't need a separator.
3669      * Sacrifice it to fit in one more column if possible. */
3670     ncol = (int) (Columns + 1) / width;
3671     nrow = nfeat / ncol + (nfeat % ncol ? 1 : 0);
3672 
3673     /* i counts columns then rows.  idx counts rows then columns. */
3674     for (i = 0; !got_int && i < nrow * ncol; ++i)
3675     {
3676 	int idx = (i / ncol) + (i % ncol) * nrow;
3677 
3678 	if (idx < nfeat)
3679 	{
3680 	    int last_col = (i + 1) % ncol == 0;
3681 
3682 	    msg_puts((char_u *)features[idx]);
3683 	    if (last_col)
3684 	    {
3685 		if (msg_col > 0)
3686 		    msg_putchar('\n');
3687 	    }
3688 	    else
3689 	    {
3690 		while (msg_col % width)
3691 		    msg_putchar(' ');
3692 	    }
3693 	}
3694 	else
3695 	{
3696 	    if (msg_col > 0)
3697 		msg_putchar('\n');
3698 	}
3699     }
3700 }
3701 
3702     void
3703 list_version(void)
3704 {
3705     int		i;
3706     int		first;
3707     char	*s = "";
3708 
3709     /*
3710      * When adding features here, don't forget to update the list of
3711      * internal variables in eval.c!
3712      */
3713     MSG(longVersion);
3714 #ifdef WIN3264
3715 # ifdef FEAT_GUI_W32
3716 #  ifdef _WIN64
3717     MSG_PUTS(_("\nMS-Windows 64-bit GUI version"));
3718 #  else
3719     MSG_PUTS(_("\nMS-Windows 32-bit GUI version"));
3720 #  endif
3721 # ifdef FEAT_OLE
3722     MSG_PUTS(_(" with OLE support"));
3723 # endif
3724 # else
3725 #  ifdef _WIN64
3726     MSG_PUTS(_("\nMS-Windows 64-bit console version"));
3727 #  else
3728     MSG_PUTS(_("\nMS-Windows 32-bit console version"));
3729 #  endif
3730 # endif
3731 #endif
3732 #if defined(MACOS_X)
3733 # if defined(MACOS_X_DARWIN)
3734     MSG_PUTS(_("\nmacOS version"));
3735 # else
3736     MSG_PUTS(_("\nmacOS version w/o darwin feat."));
3737 # endif
3738 #endif
3739 
3740 #ifdef VMS
3741     MSG_PUTS(_("\nOpenVMS version"));
3742 # ifdef HAVE_PATHDEF
3743     if (*compiled_arch != NUL)
3744     {
3745 	MSG_PUTS(" - ");
3746 	MSG_PUTS(compiled_arch);
3747     }
3748 # endif
3749 
3750 #endif
3751 
3752     /* Print the list of patch numbers if there is at least one. */
3753     /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */
3754     if (included_patches[0] != 0)
3755     {
3756 	MSG_PUTS(_("\nIncluded patches: "));
3757 	first = -1;
3758 	/* find last one */
3759 	for (i = 0; included_patches[i] != 0; ++i)
3760 	    ;
3761 	while (--i >= 0)
3762 	{
3763 	    if (first < 0)
3764 		first = included_patches[i];
3765 	    if (i == 0 || included_patches[i - 1] != included_patches[i] + 1)
3766 	    {
3767 		MSG_PUTS(s);
3768 		s = ", ";
3769 		msg_outnum((long)first);
3770 		if (first != included_patches[i])
3771 		{
3772 		    MSG_PUTS("-");
3773 		    msg_outnum((long)included_patches[i]);
3774 		}
3775 		first = -1;
3776 	    }
3777 	}
3778     }
3779 
3780     /* Print the list of extra patch descriptions if there is at least one. */
3781     if (extra_patches[0] != NULL)
3782     {
3783 	MSG_PUTS(_("\nExtra patches: "));
3784 	s = "";
3785 	for (i = 0; extra_patches[i] != NULL; ++i)
3786 	{
3787 	    MSG_PUTS(s);
3788 	    s = ", ";
3789 	    MSG_PUTS(extra_patches[i]);
3790 	}
3791     }
3792 
3793 #ifdef MODIFIED_BY
3794     MSG_PUTS("\n");
3795     MSG_PUTS(_("Modified by "));
3796     MSG_PUTS(MODIFIED_BY);
3797 #endif
3798 
3799 #ifdef HAVE_PATHDEF
3800     if (*compiled_user != NUL || *compiled_sys != NUL)
3801     {
3802 	MSG_PUTS(_("\nCompiled "));
3803 	if (*compiled_user != NUL)
3804 	{
3805 	    MSG_PUTS(_("by "));
3806 	    MSG_PUTS(compiled_user);
3807 	}
3808 	if (*compiled_sys != NUL)
3809 	{
3810 	    MSG_PUTS("@");
3811 	    MSG_PUTS(compiled_sys);
3812 	}
3813     }
3814 #endif
3815 
3816 #ifdef FEAT_HUGE
3817     MSG_PUTS(_("\nHuge version "));
3818 #else
3819 # ifdef FEAT_BIG
3820     MSG_PUTS(_("\nBig version "));
3821 # else
3822 #  ifdef FEAT_NORMAL
3823     MSG_PUTS(_("\nNormal version "));
3824 #  else
3825 #   ifdef FEAT_SMALL
3826     MSG_PUTS(_("\nSmall version "));
3827 #   else
3828     MSG_PUTS(_("\nTiny version "));
3829 #   endif
3830 #  endif
3831 # endif
3832 #endif
3833 #ifndef FEAT_GUI
3834     MSG_PUTS(_("without GUI."));
3835 #else
3836 # ifdef FEAT_GUI_GTK
3837 #  ifdef USE_GTK3
3838     MSG_PUTS(_("with GTK3 GUI."));
3839 #  else
3840 #   ifdef FEAT_GUI_GNOME
3841      MSG_PUTS(_("with GTK2-GNOME GUI."));
3842 #   else
3843      MSG_PUTS(_("with GTK2 GUI."));
3844 #   endif
3845 # endif
3846 # else
3847 #  ifdef FEAT_GUI_MOTIF
3848     MSG_PUTS(_("with X11-Motif GUI."));
3849 #  else
3850 #   ifdef FEAT_GUI_ATHENA
3851 #    ifdef FEAT_GUI_NEXTAW
3852     MSG_PUTS(_("with X11-neXtaw GUI."));
3853 #    else
3854     MSG_PUTS(_("with X11-Athena GUI."));
3855 #    endif
3856 #   else
3857 #     ifdef FEAT_GUI_PHOTON
3858     MSG_PUTS(_("with Photon GUI."));
3859 #     else
3860 #      if defined(MSWIN)
3861     MSG_PUTS(_("with GUI."));
3862 #      else
3863 #	if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON
3864     MSG_PUTS(_("with Carbon GUI."));
3865 #	else
3866 #	 if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX
3867     MSG_PUTS(_("with Cocoa GUI."));
3868 #	 else
3869 #	 endif
3870 #	endif
3871 #      endif
3872 #    endif
3873 #   endif
3874 #  endif
3875 # endif
3876 #endif
3877     version_msg(_("  Features included (+) or not (-):\n"));
3878 
3879     list_features();
3880 
3881 #ifdef SYS_VIMRC_FILE
3882     version_msg(_("   system vimrc file: \""));
3883     version_msg(SYS_VIMRC_FILE);
3884     version_msg("\"\n");
3885 #endif
3886 #ifdef USR_VIMRC_FILE
3887     version_msg(_("     user vimrc file: \""));
3888     version_msg(USR_VIMRC_FILE);
3889     version_msg("\"\n");
3890 #endif
3891 #ifdef USR_VIMRC_FILE2
3892     version_msg(_(" 2nd user vimrc file: \""));
3893     version_msg(USR_VIMRC_FILE2);
3894     version_msg("\"\n");
3895 #endif
3896 #ifdef USR_VIMRC_FILE3
3897     version_msg(_(" 3rd user vimrc file: \""));
3898     version_msg(USR_VIMRC_FILE3);
3899     version_msg("\"\n");
3900 #endif
3901 #ifdef USR_EXRC_FILE
3902     version_msg(_("      user exrc file: \""));
3903     version_msg(USR_EXRC_FILE);
3904     version_msg("\"\n");
3905 #endif
3906 #ifdef USR_EXRC_FILE2
3907     version_msg(_("  2nd user exrc file: \""));
3908     version_msg(USR_EXRC_FILE2);
3909     version_msg("\"\n");
3910 #endif
3911 #ifdef FEAT_GUI
3912 # ifdef SYS_GVIMRC_FILE
3913     version_msg(_("  system gvimrc file: \""));
3914     version_msg(SYS_GVIMRC_FILE);
3915     version_msg("\"\n");
3916 # endif
3917     version_msg(_("    user gvimrc file: \""));
3918     version_msg(USR_GVIMRC_FILE);
3919     version_msg("\"\n");
3920 # ifdef USR_GVIMRC_FILE2
3921     version_msg(_("2nd user gvimrc file: \""));
3922     version_msg(USR_GVIMRC_FILE2);
3923     version_msg("\"\n");
3924 # endif
3925 # ifdef USR_GVIMRC_FILE3
3926     version_msg(_("3rd user gvimrc file: \""));
3927     version_msg(USR_GVIMRC_FILE3);
3928     version_msg("\"\n");
3929 # endif
3930 #endif
3931     version_msg(_("       defaults file: \""));
3932     version_msg(VIM_DEFAULTS_FILE);
3933     version_msg("\"\n");
3934 #ifdef FEAT_GUI
3935 # ifdef SYS_MENU_FILE
3936     version_msg(_("    system menu file: \""));
3937     version_msg(SYS_MENU_FILE);
3938     version_msg("\"\n");
3939 # endif
3940 #endif
3941 #ifdef HAVE_PATHDEF
3942     if (*default_vim_dir != NUL)
3943     {
3944 	version_msg(_("  fall-back for $VIM: \""));
3945 	version_msg((char *)default_vim_dir);
3946 	version_msg("\"\n");
3947     }
3948     if (*default_vimruntime_dir != NUL)
3949     {
3950 	version_msg(_(" f-b for $VIMRUNTIME: \""));
3951 	version_msg((char *)default_vimruntime_dir);
3952 	version_msg("\"\n");
3953     }
3954     version_msg(_("Compilation: "));
3955     version_msg((char *)all_cflags);
3956     version_msg("\n");
3957 #ifdef VMS
3958     if (*compiler_version != NUL)
3959     {
3960 	version_msg(_("Compiler: "));
3961 	version_msg((char *)compiler_version);
3962 	version_msg("\n");
3963     }
3964 #endif
3965     version_msg(_("Linking: "));
3966     version_msg((char *)all_lflags);
3967 #endif
3968 #ifdef DEBUG
3969     version_msg("\n");
3970     version_msg(_("  DEBUG BUILD"));
3971 #endif
3972 }
3973 
3974 /*
3975  * Output a string for the version message.  If it's going to wrap, output a
3976  * newline, unless the message is too long to fit on the screen anyway.
3977  */
3978     static void
3979 version_msg(char *s)
3980 {
3981     int		len = (int)STRLEN(s);
3982 
3983     if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns
3984 								&& *s != '\n')
3985 	msg_putchar('\n');
3986     if (!got_int)
3987 	MSG_PUTS(s);
3988 }
3989 
3990 static void do_intro_line(int row, char_u *mesg, int add_version, int attr);
3991 
3992 /*
3993  * Show the intro message when not editing a file.
3994  */
3995     void
3996 maybe_intro_message(void)
3997 {
3998     if (BUFEMPTY()
3999 	    && curbuf->b_fname == NULL
4000 	    && firstwin->w_next == NULL
4001 	    && vim_strchr(p_shm, SHM_INTRO) == NULL)
4002 	intro_message(FALSE);
4003 }
4004 
4005 /*
4006  * Give an introductory message about Vim.
4007  * Only used when starting Vim on an empty file, without a file name.
4008  * Or with the ":intro" command (for Sven :-).
4009  */
4010     void
4011 intro_message(
4012     int		colon)		/* TRUE for ":intro" */
4013 {
4014     int		i;
4015     int		row;
4016     int		blanklines;
4017     int		sponsor;
4018     char	*p;
4019     static char	*(lines[]) =
4020     {
4021 	N_("VIM - Vi IMproved"),
4022 	"",
4023 	N_("version "),
4024 	N_("by Bram Moolenaar et al."),
4025 #ifdef MODIFIED_BY
4026 	" ",
4027 #endif
4028 	N_("Vim is open source and freely distributable"),
4029 	"",
4030 	N_("Help poor children in Uganda!"),
4031 	N_("type  :help iccf<Enter>       for information "),
4032 	"",
4033 	N_("type  :q<Enter>               to exit         "),
4034 	N_("type  :help<Enter>  or  <F1>  for on-line help"),
4035 	N_("type  :help version8<Enter>   for version info"),
4036 	NULL,
4037 	"",
4038 	N_("Running in Vi compatible mode"),
4039 	N_("type  :set nocp<Enter>        for Vim defaults"),
4040 	N_("type  :help cp-default<Enter> for info on this"),
4041     };
4042 #ifdef FEAT_GUI
4043     static char	*(gui_lines[]) =
4044     {
4045 	NULL,
4046 	NULL,
4047 	NULL,
4048 	NULL,
4049 #ifdef MODIFIED_BY
4050 	NULL,
4051 #endif
4052 	NULL,
4053 	NULL,
4054 	NULL,
4055 	N_("menu  Help->Orphans           for information    "),
4056 	NULL,
4057 	N_("Running modeless, typed text is inserted"),
4058 	N_("menu  Edit->Global Settings->Toggle Insert Mode  "),
4059 	N_("                              for two modes      "),
4060 	NULL,
4061 	NULL,
4062 	NULL,
4063 	N_("menu  Edit->Global Settings->Toggle Vi Compatible"),
4064 	N_("                              for Vim defaults   "),
4065     };
4066 #endif
4067 
4068     /* blanklines = screen height - # message lines */
4069     blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1);
4070     if (!p_cp)
4071 	blanklines += 4;  /* add 4 for not showing "Vi compatible" message */
4072 
4073     /* Don't overwrite a statusline.  Depends on 'cmdheight'. */
4074     if (p_ls > 1)
4075 	blanklines -= Rows - topframe->fr_height;
4076     if (blanklines < 0)
4077 	blanklines = 0;
4078 
4079     /* Show the sponsor and register message one out of four times, the Uganda
4080      * message two out of four times. */
4081     sponsor = (int)time(NULL);
4082     sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
4083 
4084     /* start displaying the message lines after half of the blank lines */
4085     row = blanklines / 2;
4086     if ((row >= 2 && Columns >= 50) || colon)
4087     {
4088 	for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i)
4089 	{
4090 	    p = lines[i];
4091 #ifdef FEAT_GUI
4092 	    if (p_im && gui.in_use && gui_lines[i] != NULL)
4093 		p = gui_lines[i];
4094 #endif
4095 	    if (p == NULL)
4096 	    {
4097 		if (!p_cp)
4098 		    break;
4099 		continue;
4100 	    }
4101 	    if (sponsor != 0)
4102 	    {
4103 		if (strstr(p, "children") != NULL)
4104 		    p = sponsor < 0
4105 			? N_("Sponsor Vim development!")
4106 			: N_("Become a registered Vim user!");
4107 		else if (strstr(p, "iccf") != NULL)
4108 		    p = sponsor < 0
4109 			? N_("type  :help sponsor<Enter>    for information ")
4110 			: N_("type  :help register<Enter>   for information ");
4111 		else if (strstr(p, "Orphans") != NULL)
4112 		    p = N_("menu  Help->Sponsor/Register  for information    ");
4113 	    }
4114 	    if (*p != NUL)
4115 		do_intro_line(row, (char_u *)_(p), i == 2, 0);
4116 	    ++row;
4117 	}
4118     }
4119 
4120     /* Make the wait-return message appear just below the text. */
4121     if (colon)
4122 	msg_row = row;
4123 }
4124 
4125     static void
4126 do_intro_line(
4127     int		row,
4128     char_u	*mesg,
4129     int		add_version,
4130     int		attr)
4131 {
4132     char_u	vers[20];
4133     int		col;
4134     char_u	*p;
4135     int		l;
4136     int		clen;
4137 #ifdef MODIFIED_BY
4138 # define MODBY_LEN 150
4139     char_u	modby[MODBY_LEN];
4140 
4141     if (*mesg == ' ')
4142     {
4143 	vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1);
4144 	l = (int)STRLEN(modby);
4145 	vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1);
4146 	mesg = modby;
4147     }
4148 #endif
4149 
4150     /* Center the message horizontally. */
4151     col = vim_strsize(mesg);
4152     if (add_version)
4153     {
4154 	STRCPY(vers, mediumVersion);
4155 	if (highest_patch())
4156 	{
4157 	    /* Check for 9.9x or 9.9xx, alpha/beta version */
4158 	    if (isalpha((int)vers[3]))
4159 	    {
4160 		int len = (isalpha((int)vers[4])) ? 5 : 4;
4161 		sprintf((char *)vers + len, ".%d%s", highest_patch(),
4162 							 mediumVersion + len);
4163 	    }
4164 	    else
4165 		sprintf((char *)vers + 3, ".%d", highest_patch());
4166 	}
4167 	col += (int)STRLEN(vers);
4168     }
4169     col = (Columns - col) / 2;
4170     if (col < 0)
4171 	col = 0;
4172 
4173     /* Split up in parts to highlight <> items differently. */
4174     for (p = mesg; *p != NUL; p += l)
4175     {
4176 	clen = 0;
4177 	for (l = 0; p[l] != NUL
4178 			 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
4179 	{
4180 #ifdef FEAT_MBYTE
4181 	    if (has_mbyte)
4182 	    {
4183 		clen += ptr2cells(p + l);
4184 		l += (*mb_ptr2len)(p + l) - 1;
4185 	    }
4186 	    else
4187 #endif
4188 		clen += byte2cells(p[l]);
4189 	}
4190 	screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr);
4191 	col += clen;
4192     }
4193 
4194     /* Add the version number to the version line. */
4195     if (add_version)
4196 	screen_puts(vers, row, col, 0);
4197 }
4198 
4199 /*
4200  * ":intro": clear screen, display intro screen and wait for return.
4201  */
4202     void
4203 ex_intro(exarg_T *eap UNUSED)
4204 {
4205     screenclear();
4206     intro_message(TRUE);
4207     wait_return(TRUE);
4208 }
4209