xref: /vim-8.2.3635/src/version.c (revision 5be4ceec)
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 init_longVersion(void)
41 {
42     /*
43      * Construct the long version string.  Necessary because
44      * VAX C can't concatenate 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 
53 # else
54     void
55 init_longVersion(void)
56 {
57     char *date_time = __DATE__ " " __TIME__;
58     char *msg = _("%s (%s, compiled %s)");
59     size_t len = strlen(msg)
60 		+ strlen(VIM_VERSION_LONG_ONLY)
61 		+ strlen(VIM_VERSION_DATE_ONLY)
62 		+ strlen(date_time);
63 
64     longVersion = alloc(len);
65     if (longVersion == NULL)
66 	longVersion = VIM_VERSION_LONG;
67     else
68 	vim_snprintf(longVersion, len, msg,
69 		      VIM_VERSION_LONG_ONLY, VIM_VERSION_DATE_ONLY, date_time);
70 }
71 # endif
72 #else
73 char	*longVersion = VIM_VERSION_LONG;
74 
75     void
76 init_longVersion(void)
77 {
78     // nothing to do
79 }
80 #endif
81 
82 static char *(features[]) =
83 {
84 #ifdef HAVE_ACL
85 	"+acl",
86 #else
87 	"-acl",
88 #endif
89 #ifdef AMIGA		/* only for Amiga systems */
90 # ifdef FEAT_ARP
91 	"+ARP",
92 # else
93 	"-ARP",
94 # endif
95 #endif
96 #ifdef FEAT_ARABIC
97 	"+arabic",
98 #else
99 	"-arabic",
100 #endif
101 	"+autocmd",
102 #ifdef FEAT_AUTOCHDIR
103        "+autochdir",
104 #else
105        "-autochdir",
106 #endif
107 #ifdef FEAT_AUTOSERVERNAME
108 	"+autoservername",
109 #else
110 	"-autoservername",
111 #endif
112 #ifdef FEAT_BEVAL_GUI
113 	"+balloon_eval",
114 #else
115 	"-balloon_eval",
116 #endif
117 #ifdef FEAT_BEVAL_TERM
118 	"+balloon_eval_term",
119 #else
120 	"-balloon_eval_term",
121 #endif
122 #ifdef FEAT_BROWSE
123 	"+browse",
124 #else
125 	"-browse",
126 #endif
127 #ifdef NO_BUILTIN_TCAPS
128 	"-builtin_terms",
129 #endif
130 #ifdef SOME_BUILTIN_TCAPS
131 	"+builtin_terms",
132 #endif
133 #ifdef ALL_BUILTIN_TCAPS
134 	"++builtin_terms",
135 #endif
136 #ifdef FEAT_BYTEOFF
137 	"+byte_offset",
138 #else
139 	"-byte_offset",
140 #endif
141 #ifdef FEAT_JOB_CHANNEL
142 	"+channel",
143 #else
144 	"-channel",
145 #endif
146 #ifdef FEAT_CINDENT
147 	"+cindent",
148 #else
149 	"-cindent",
150 #endif
151 #ifdef FEAT_CLIENTSERVER
152 	"+clientserver",
153 #else
154 	"-clientserver",
155 #endif
156 #ifdef FEAT_CLIPBOARD
157 	"+clipboard",
158 #else
159 	"-clipboard",
160 #endif
161 	"+cmdline_compl",
162 	"+cmdline_hist",
163 #ifdef FEAT_CMDL_INFO
164 	"+cmdline_info",
165 #else
166 	"-cmdline_info",
167 #endif
168 #ifdef FEAT_COMMENTS
169 	"+comments",
170 #else
171 	"-comments",
172 #endif
173 #ifdef FEAT_CONCEAL
174 	"+conceal",
175 #else
176 	"-conceal",
177 #endif
178 #ifdef FEAT_CRYPT
179 	"+cryptv",
180 #else
181 	"-cryptv",
182 #endif
183 #ifdef FEAT_CSCOPE
184 	"+cscope",
185 #else
186 	"-cscope",
187 #endif
188 	"+cursorbind",
189 #ifdef CURSOR_SHAPE
190 	"+cursorshape",
191 #else
192 	"-cursorshape",
193 #endif
194 #if defined(FEAT_CON_DIALOG) && defined(FEAT_GUI_DIALOG)
195 	"+dialog_con_gui",
196 #else
197 # if defined(FEAT_CON_DIALOG)
198 	"+dialog_con",
199 # else
200 #  if defined(FEAT_GUI_DIALOG)
201 	"+dialog_gui",
202 #  else
203 	"-dialog",
204 #  endif
205 # endif
206 #endif
207 #ifdef FEAT_DIFF
208 	"+diff",
209 #else
210 	"-diff",
211 #endif
212 #ifdef FEAT_DIGRAPHS
213 	"+digraphs",
214 #else
215 	"-digraphs",
216 #endif
217 #ifdef FEAT_GUI_MSWIN
218 # ifdef FEAT_DIRECTX
219 	"+directx",
220 # else
221 	"-directx",
222 # endif
223 #endif
224 #ifdef FEAT_DND
225 	"+dnd",
226 #else
227 	"-dnd",
228 #endif
229 #ifdef EBCDIC
230 	"+ebcdic",
231 #else
232 	"-ebcdic",
233 #endif
234 #ifdef FEAT_EMACS_TAGS
235 	"+emacs_tags",
236 #else
237 	"-emacs_tags",
238 #endif
239 #ifdef FEAT_EVAL
240 	"+eval",
241 #else
242 	"-eval",
243 #endif
244 	"+ex_extra",
245 #ifdef FEAT_SEARCH_EXTRA
246 	"+extra_search",
247 #else
248 	"-extra_search",
249 #endif
250 	"-farsi",
251 #ifdef FEAT_SEARCHPATH
252 	"+file_in_path",
253 #else
254 	"-file_in_path",
255 #endif
256 #ifdef FEAT_FIND_ID
257 	"+find_in_path",
258 #else
259 	"-find_in_path",
260 #endif
261 #ifdef FEAT_FLOAT
262 	"+float",
263 #else
264 	"-float",
265 #endif
266 #ifdef FEAT_FOLDING
267 	"+folding",
268 #else
269 	"-folding",
270 #endif
271 #ifdef FEAT_FOOTER
272 	"+footer",
273 #else
274 	"-footer",
275 #endif
276 	    /* only interesting on Unix systems */
277 #if !defined(USE_SYSTEM) && defined(UNIX)
278 	"+fork()",
279 #endif
280 #ifdef FEAT_GETTEXT
281 # ifdef DYNAMIC_GETTEXT
282 	"+gettext/dyn",
283 # else
284 	"+gettext",
285 # endif
286 #else
287 	"-gettext",
288 #endif
289 #ifdef FEAT_HANGULIN
290 	"+hangul_input",
291 #else
292 	"-hangul_input",
293 #endif
294 #if (defined(HAVE_ICONV_H) && defined(USE_ICONV)) || defined(DYNAMIC_ICONV)
295 # ifdef DYNAMIC_ICONV
296 	"+iconv/dyn",
297 # else
298 	"+iconv",
299 # endif
300 #else
301 	"-iconv",
302 #endif
303 	"+insert_expand",
304 #ifdef FEAT_JOB_CHANNEL
305 	"+job",
306 #else
307 	"-job",
308 #endif
309 #ifdef FEAT_JUMPLIST
310 	"+jumplist",
311 #else
312 	"-jumplist",
313 #endif
314 #ifdef FEAT_KEYMAP
315 	"+keymap",
316 #else
317 	"-keymap",
318 #endif
319 #ifdef FEAT_EVAL
320 	"+lambda",
321 #else
322 	"-lambda",
323 #endif
324 #ifdef FEAT_LANGMAP
325 	"+langmap",
326 #else
327 	"-langmap",
328 #endif
329 #ifdef FEAT_LIBCALL
330 	"+libcall",
331 #else
332 	"-libcall",
333 #endif
334 #ifdef FEAT_LINEBREAK
335 	"+linebreak",
336 #else
337 	"-linebreak",
338 #endif
339 #ifdef FEAT_LISP
340 	"+lispindent",
341 #else
342 	"-lispindent",
343 #endif
344 	"+listcmds",
345 	"+localmap",
346 #ifdef FEAT_LUA
347 # ifdef DYNAMIC_LUA
348 	"+lua/dyn",
349 # else
350 	"+lua",
351 # endif
352 #else
353 	"-lua",
354 #endif
355 #ifdef FEAT_MENU
356 	"+menu",
357 #else
358 	"-menu",
359 #endif
360 #ifdef FEAT_SESSION
361 	"+mksession",
362 #else
363 	"-mksession",
364 #endif
365 	"+modify_fname",
366 #ifdef FEAT_MOUSE
367 	"+mouse",
368 #  ifdef FEAT_MOUSESHAPE
369 	"+mouseshape",
370 #  else
371 	"-mouseshape",
372 #  endif
373 # else
374 	"-mouse",
375 #endif
376 
377 #if defined(UNIX) || defined(VMS)
378 # ifdef FEAT_MOUSE_DEC
379 	"+mouse_dec",
380 # else
381 	"-mouse_dec",
382 # endif
383 # ifdef FEAT_MOUSE_GPM
384 	"+mouse_gpm",
385 # else
386 	"-mouse_gpm",
387 # endif
388 # ifdef FEAT_MOUSE_JSB
389 	"+mouse_jsbterm",
390 # else
391 	"-mouse_jsbterm",
392 # endif
393 # ifdef FEAT_MOUSE_NET
394 	"+mouse_netterm",
395 # else
396 	"-mouse_netterm",
397 # endif
398 #endif
399 
400 #ifdef __QNX__
401 # ifdef FEAT_MOUSE_PTERM
402 	"+mouse_pterm",
403 # else
404 	"-mouse_pterm",
405 # endif
406 #endif
407 
408 #if defined(UNIX) || defined(VMS)
409 # ifdef FEAT_MOUSE_XTERM
410 	"+mouse_sgr",
411 # else
412 	"-mouse_sgr",
413 # endif
414 # ifdef FEAT_SYSMOUSE
415 	"+mouse_sysmouse",
416 # else
417 	"-mouse_sysmouse",
418 # endif
419 # ifdef FEAT_MOUSE_URXVT
420 	"+mouse_urxvt",
421 # else
422 	"-mouse_urxvt",
423 # endif
424 # ifdef FEAT_MOUSE_XTERM
425 	"+mouse_xterm",
426 # else
427 	"-mouse_xterm",
428 # endif
429 #endif
430 
431 #ifdef FEAT_MBYTE_IME
432 # ifdef DYNAMIC_IME
433 	"+multi_byte_ime/dyn",
434 # else
435 	"+multi_byte_ime",
436 # endif
437 #else
438 	"+multi_byte",
439 #endif
440 #ifdef FEAT_MULTI_LANG
441 	"+multi_lang",
442 #else
443 	"-multi_lang",
444 #endif
445 #ifdef FEAT_MZSCHEME
446 # ifdef DYNAMIC_MZSCHEME
447 	"+mzscheme/dyn",
448 # else
449 	"+mzscheme",
450 # endif
451 #else
452 	"-mzscheme",
453 #endif
454 #ifdef FEAT_NETBEANS_INTG
455 	"+netbeans_intg",
456 #else
457 	"-netbeans_intg",
458 #endif
459 #ifdef FEAT_NUM64
460 	"+num64",
461 #else
462 	"-num64",
463 #endif
464 #ifdef FEAT_GUI_MSWIN
465 # ifdef FEAT_OLE
466 	"+ole",
467 # else
468 	"-ole",
469 # endif
470 #endif
471 #ifdef FEAT_EVAL
472 	"+packages",
473 #else
474 	"-packages",
475 #endif
476 #ifdef FEAT_PATH_EXTRA
477 	"+path_extra",
478 #else
479 	"-path_extra",
480 #endif
481 #ifdef FEAT_PERL
482 # ifdef DYNAMIC_PERL
483 	"+perl/dyn",
484 # else
485 	"+perl",
486 # endif
487 #else
488 	"-perl",
489 #endif
490 #ifdef FEAT_PERSISTENT_UNDO
491 	"+persistent_undo",
492 #else
493 	"-persistent_undo",
494 #endif
495 #ifdef FEAT_PRINTER
496 # ifdef FEAT_POSTSCRIPT
497 	"+postscript",
498 # else
499 	"-postscript",
500 # endif
501 	"+printer",
502 #else
503 	"-printer",
504 #endif
505 #ifdef FEAT_PROFILE
506 	"+profile",
507 #else
508 	"-profile",
509 #endif
510 #ifdef FEAT_PYTHON
511 # ifdef DYNAMIC_PYTHON
512 	"+python/dyn",
513 # else
514 	"+python",
515 # endif
516 #else
517 	"-python",
518 #endif
519 #ifdef FEAT_PYTHON3
520 # ifdef DYNAMIC_PYTHON3
521 	"+python3/dyn",
522 # else
523 	"+python3",
524 # endif
525 #else
526 	"-python3",
527 #endif
528 #ifdef FEAT_QUICKFIX
529 	"+quickfix",
530 #else
531 	"-quickfix",
532 #endif
533 #ifdef FEAT_RELTIME
534 	"+reltime",
535 #else
536 	"-reltime",
537 #endif
538 #ifdef FEAT_RIGHTLEFT
539 	"+rightleft",
540 #else
541 	"-rightleft",
542 #endif
543 #ifdef FEAT_RUBY
544 # ifdef DYNAMIC_RUBY
545 	"+ruby/dyn",
546 # else
547 	"+ruby",
548 # endif
549 #else
550 	"-ruby",
551 #endif
552 	"+scrollbind",
553 #ifdef FEAT_SIGNS
554 	"+signs",
555 #else
556 	"-signs",
557 #endif
558 #ifdef FEAT_SMARTINDENT
559 	"+smartindent",
560 #else
561 	"-smartindent",
562 #endif
563 #ifdef FEAT_SOUND
564 	"+sound",
565 #else
566 	"-sound",
567 #endif
568 #ifdef FEAT_SPELL
569 	"+spell",
570 #else
571 	"-spell",
572 #endif
573 #ifdef STARTUPTIME
574 	"+startuptime",
575 #else
576 	"-startuptime",
577 #endif
578 #ifdef FEAT_STL_OPT
579 	"+statusline",
580 #else
581 	"-statusline",
582 #endif
583 	"-sun_workshop",
584 #ifdef FEAT_SYN_HL
585 	"+syntax",
586 #else
587 	"-syntax",
588 #endif
589 	    /* only interesting on Unix systems */
590 #if defined(USE_SYSTEM) && defined(UNIX)
591 	"+system()",
592 #endif
593 #ifdef FEAT_TAG_BINS
594 	"+tag_binary",
595 #else
596 	"-tag_binary",
597 #endif
598 	"-tag_old_static",
599 	"-tag_any_white",
600 #ifdef FEAT_TCL
601 # ifdef DYNAMIC_TCL
602 	"+tcl/dyn",
603 # else
604 	"+tcl",
605 # endif
606 #else
607 	"-tcl",
608 #endif
609 #ifdef FEAT_TERMGUICOLORS
610 	"+termguicolors",
611 #else
612 	"-termguicolors",
613 #endif
614 #ifdef FEAT_TERMINAL
615 	"+terminal",
616 #else
617 	"-terminal",
618 #endif
619 #if defined(UNIX)
620 /* only Unix can have terminfo instead of termcap */
621 # ifdef TERMINFO
622 	"+terminfo",
623 # else
624 	"-terminfo",
625 # endif
626 #endif
627 #ifdef FEAT_TERMRESPONSE
628 	"+termresponse",
629 #else
630 	"-termresponse",
631 #endif
632 #ifdef FEAT_TEXTOBJ
633 	"+textobjects",
634 #else
635 	"-textobjects",
636 #endif
637 #ifdef FEAT_TEXT_PROP
638 	"+textprop",
639 #else
640 	"-textprop",
641 #endif
642 #if !defined(UNIX)
643 /* unix always includes termcap support */
644 # ifdef HAVE_TGETENT
645 	"+tgetent",
646 # else
647 	"-tgetent",
648 # endif
649 #endif
650 #ifdef FEAT_TIMERS
651 	"+timers",
652 #else
653 	"-timers",
654 #endif
655 #ifdef FEAT_TITLE
656 	"+title",
657 #else
658 	"-title",
659 #endif
660 #ifdef FEAT_TOOLBAR
661 	"+toolbar",
662 #else
663 	"-toolbar",
664 #endif
665 	"+user_commands",
666 #ifdef FEAT_VARTABS
667 	"+vartabs",
668 #else
669 	"-vartabs",
670 #endif
671 	"+vertsplit",
672 	"+virtualedit",
673 	"+visual",
674 	"+visualextra",
675 #ifdef FEAT_VIMINFO
676 	"+viminfo",
677 #else
678 	"-viminfo",
679 #endif
680 	"+vreplace",
681 #ifdef MSWIN
682 # ifdef FEAT_VTP
683 	"+vtp",
684 # else
685 	"-vtp",
686 # endif
687 #endif
688 #ifdef FEAT_WILDIGN
689 	"+wildignore",
690 #else
691 	"-wildignore",
692 #endif
693 #ifdef FEAT_WILDMENU
694 	"+wildmenu",
695 #else
696 	"-wildmenu",
697 #endif
698 	"+windows",
699 #ifdef FEAT_WRITEBACKUP
700 	"+writebackup",
701 #else
702 	"-writebackup",
703 #endif
704 #if defined(UNIX) || defined(VMS)
705 # ifdef FEAT_X11
706 	"+X11",
707 # else
708 	"-X11",
709 # endif
710 #endif
711 #ifdef FEAT_XFONTSET
712 	"+xfontset",
713 #else
714 	"-xfontset",
715 #endif
716 #ifdef FEAT_XIM
717 	"+xim",
718 #else
719 	"-xim",
720 #endif
721 #ifdef MSWIN
722 # ifdef FEAT_XPM_W32
723 	"+xpm_w32",
724 # else
725 	"-xpm_w32",
726 # endif
727 #else
728 # ifdef HAVE_XPM
729 	"+xpm",
730 # else
731 	"-xpm",
732 # endif
733 #endif
734 #if defined(UNIX) || defined(VMS)
735 # ifdef USE_XSMP_INTERACT
736 	"+xsmp_interact",
737 # else
738 #  ifdef USE_XSMP
739 	"+xsmp",
740 #  else
741 	"-xsmp",
742 #  endif
743 # endif
744 # ifdef FEAT_XCLIPBOARD
745 	"+xterm_clipboard",
746 # else
747 	"-xterm_clipboard",
748 # endif
749 #endif
750 #ifdef FEAT_XTERM_SAVE
751 	"+xterm_save",
752 #else
753 	"-xterm_save",
754 #endif
755 	NULL
756 };
757 
758 static int included_patches[] =
759 {   /* Add new patch number below this line */
760 /**/
761     2087,
762 /**/
763     2086,
764 /**/
765     2085,
766 /**/
767     2084,
768 /**/
769     2083,
770 /**/
771     2082,
772 /**/
773     2081,
774 /**/
775     2080,
776 /**/
777     2079,
778 /**/
779     2078,
780 /**/
781     2077,
782 /**/
783     2076,
784 /**/
785     2075,
786 /**/
787     2074,
788 /**/
789     2073,
790 /**/
791     2072,
792 /**/
793     2071,
794 /**/
795     2070,
796 /**/
797     2069,
798 /**/
799     2068,
800 /**/
801     2067,
802 /**/
803     2066,
804 /**/
805     2065,
806 /**/
807     2064,
808 /**/
809     2063,
810 /**/
811     2062,
812 /**/
813     2061,
814 /**/
815     2060,
816 /**/
817     2059,
818 /**/
819     2058,
820 /**/
821     2057,
822 /**/
823     2056,
824 /**/
825     2055,
826 /**/
827     2054,
828 /**/
829     2053,
830 /**/
831     2052,
832 /**/
833     2051,
834 /**/
835     2050,
836 /**/
837     2049,
838 /**/
839     2048,
840 /**/
841     2047,
842 /**/
843     2046,
844 /**/
845     2045,
846 /**/
847     2044,
848 /**/
849     2043,
850 /**/
851     2042,
852 /**/
853     2041,
854 /**/
855     2040,
856 /**/
857     2039,
858 /**/
859     2038,
860 /**/
861     2037,
862 /**/
863     2036,
864 /**/
865     2035,
866 /**/
867     2034,
868 /**/
869     2033,
870 /**/
871     2032,
872 /**/
873     2031,
874 /**/
875     2030,
876 /**/
877     2029,
878 /**/
879     2028,
880 /**/
881     2027,
882 /**/
883     2026,
884 /**/
885     2025,
886 /**/
887     2024,
888 /**/
889     2023,
890 /**/
891     2022,
892 /**/
893     2021,
894 /**/
895     2020,
896 /**/
897     2019,
898 /**/
899     2018,
900 /**/
901     2017,
902 /**/
903     2016,
904 /**/
905     2015,
906 /**/
907     2014,
908 /**/
909     2013,
910 /**/
911     2012,
912 /**/
913     2011,
914 /**/
915     2010,
916 /**/
917     2009,
918 /**/
919     2008,
920 /**/
921     2007,
922 /**/
923     2006,
924 /**/
925     2005,
926 /**/
927     2004,
928 /**/
929     2003,
930 /**/
931     2002,
932 /**/
933     2001,
934 /**/
935     2000,
936 /**/
937     1999,
938 /**/
939     1998,
940 /**/
941     1997,
942 /**/
943     1996,
944 /**/
945     1995,
946 /**/
947     1994,
948 /**/
949     1993,
950 /**/
951     1992,
952 /**/
953     1991,
954 /**/
955     1990,
956 /**/
957     1989,
958 /**/
959     1988,
960 /**/
961     1987,
962 /**/
963     1986,
964 /**/
965     1985,
966 /**/
967     1984,
968 /**/
969     1983,
970 /**/
971     1982,
972 /**/
973     1981,
974 /**/
975     1980,
976 /**/
977     1979,
978 /**/
979     1978,
980 /**/
981     1977,
982 /**/
983     1976,
984 /**/
985     1975,
986 /**/
987     1974,
988 /**/
989     1973,
990 /**/
991     1972,
992 /**/
993     1971,
994 /**/
995     1970,
996 /**/
997     1969,
998 /**/
999     1968,
1000 /**/
1001     1967,
1002 /**/
1003     1966,
1004 /**/
1005     1965,
1006 /**/
1007     1964,
1008 /**/
1009     1963,
1010 /**/
1011     1962,
1012 /**/
1013     1961,
1014 /**/
1015     1960,
1016 /**/
1017     1959,
1018 /**/
1019     1958,
1020 /**/
1021     1957,
1022 /**/
1023     1956,
1024 /**/
1025     1955,
1026 /**/
1027     1954,
1028 /**/
1029     1953,
1030 /**/
1031     1952,
1032 /**/
1033     1951,
1034 /**/
1035     1950,
1036 /**/
1037     1949,
1038 /**/
1039     1948,
1040 /**/
1041     1947,
1042 /**/
1043     1946,
1044 /**/
1045     1945,
1046 /**/
1047     1944,
1048 /**/
1049     1943,
1050 /**/
1051     1942,
1052 /**/
1053     1941,
1054 /**/
1055     1940,
1056 /**/
1057     1939,
1058 /**/
1059     1938,
1060 /**/
1061     1937,
1062 /**/
1063     1936,
1064 /**/
1065     1935,
1066 /**/
1067     1934,
1068 /**/
1069     1933,
1070 /**/
1071     1932,
1072 /**/
1073     1931,
1074 /**/
1075     1930,
1076 /**/
1077     1929,
1078 /**/
1079     1928,
1080 /**/
1081     1927,
1082 /**/
1083     1926,
1084 /**/
1085     1925,
1086 /**/
1087     1924,
1088 /**/
1089     1923,
1090 /**/
1091     1922,
1092 /**/
1093     1921,
1094 /**/
1095     1920,
1096 /**/
1097     1919,
1098 /**/
1099     1918,
1100 /**/
1101     1917,
1102 /**/
1103     1916,
1104 /**/
1105     1915,
1106 /**/
1107     1914,
1108 /**/
1109     1913,
1110 /**/
1111     1912,
1112 /**/
1113     1911,
1114 /**/
1115     1910,
1116 /**/
1117     1909,
1118 /**/
1119     1908,
1120 /**/
1121     1907,
1122 /**/
1123     1906,
1124 /**/
1125     1905,
1126 /**/
1127     1904,
1128 /**/
1129     1903,
1130 /**/
1131     1902,
1132 /**/
1133     1901,
1134 /**/
1135     1900,
1136 /**/
1137     1899,
1138 /**/
1139     1898,
1140 /**/
1141     1897,
1142 /**/
1143     1896,
1144 /**/
1145     1895,
1146 /**/
1147     1894,
1148 /**/
1149     1893,
1150 /**/
1151     1892,
1152 /**/
1153     1891,
1154 /**/
1155     1890,
1156 /**/
1157     1889,
1158 /**/
1159     1888,
1160 /**/
1161     1887,
1162 /**/
1163     1886,
1164 /**/
1165     1885,
1166 /**/
1167     1884,
1168 /**/
1169     1883,
1170 /**/
1171     1882,
1172 /**/
1173     1881,
1174 /**/
1175     1880,
1176 /**/
1177     1879,
1178 /**/
1179     1878,
1180 /**/
1181     1877,
1182 /**/
1183     1876,
1184 /**/
1185     1875,
1186 /**/
1187     1874,
1188 /**/
1189     1873,
1190 /**/
1191     1872,
1192 /**/
1193     1871,
1194 /**/
1195     1870,
1196 /**/
1197     1869,
1198 /**/
1199     1868,
1200 /**/
1201     1867,
1202 /**/
1203     1866,
1204 /**/
1205     1865,
1206 /**/
1207     1864,
1208 /**/
1209     1863,
1210 /**/
1211     1862,
1212 /**/
1213     1861,
1214 /**/
1215     1860,
1216 /**/
1217     1859,
1218 /**/
1219     1858,
1220 /**/
1221     1857,
1222 /**/
1223     1856,
1224 /**/
1225     1855,
1226 /**/
1227     1854,
1228 /**/
1229     1853,
1230 /**/
1231     1852,
1232 /**/
1233     1851,
1234 /**/
1235     1850,
1236 /**/
1237     1849,
1238 /**/
1239     1848,
1240 /**/
1241     1847,
1242 /**/
1243     1846,
1244 /**/
1245     1845,
1246 /**/
1247     1844,
1248 /**/
1249     1843,
1250 /**/
1251     1842,
1252 /**/
1253     1841,
1254 /**/
1255     1840,
1256 /**/
1257     1839,
1258 /**/
1259     1838,
1260 /**/
1261     1837,
1262 /**/
1263     1836,
1264 /**/
1265     1835,
1266 /**/
1267     1834,
1268 /**/
1269     1833,
1270 /**/
1271     1832,
1272 /**/
1273     1831,
1274 /**/
1275     1830,
1276 /**/
1277     1829,
1278 /**/
1279     1828,
1280 /**/
1281     1827,
1282 /**/
1283     1826,
1284 /**/
1285     1825,
1286 /**/
1287     1824,
1288 /**/
1289     1823,
1290 /**/
1291     1822,
1292 /**/
1293     1821,
1294 /**/
1295     1820,
1296 /**/
1297     1819,
1298 /**/
1299     1818,
1300 /**/
1301     1817,
1302 /**/
1303     1816,
1304 /**/
1305     1815,
1306 /**/
1307     1814,
1308 /**/
1309     1813,
1310 /**/
1311     1812,
1312 /**/
1313     1811,
1314 /**/
1315     1810,
1316 /**/
1317     1809,
1318 /**/
1319     1808,
1320 /**/
1321     1807,
1322 /**/
1323     1806,
1324 /**/
1325     1805,
1326 /**/
1327     1804,
1328 /**/
1329     1803,
1330 /**/
1331     1802,
1332 /**/
1333     1801,
1334 /**/
1335     1800,
1336 /**/
1337     1799,
1338 /**/
1339     1798,
1340 /**/
1341     1797,
1342 /**/
1343     1796,
1344 /**/
1345     1795,
1346 /**/
1347     1794,
1348 /**/
1349     1793,
1350 /**/
1351     1792,
1352 /**/
1353     1791,
1354 /**/
1355     1790,
1356 /**/
1357     1789,
1358 /**/
1359     1788,
1360 /**/
1361     1787,
1362 /**/
1363     1786,
1364 /**/
1365     1785,
1366 /**/
1367     1784,
1368 /**/
1369     1783,
1370 /**/
1371     1782,
1372 /**/
1373     1781,
1374 /**/
1375     1780,
1376 /**/
1377     1779,
1378 /**/
1379     1778,
1380 /**/
1381     1777,
1382 /**/
1383     1776,
1384 /**/
1385     1775,
1386 /**/
1387     1774,
1388 /**/
1389     1773,
1390 /**/
1391     1772,
1392 /**/
1393     1771,
1394 /**/
1395     1770,
1396 /**/
1397     1769,
1398 /**/
1399     1768,
1400 /**/
1401     1767,
1402 /**/
1403     1766,
1404 /**/
1405     1765,
1406 /**/
1407     1764,
1408 /**/
1409     1763,
1410 /**/
1411     1762,
1412 /**/
1413     1761,
1414 /**/
1415     1760,
1416 /**/
1417     1759,
1418 /**/
1419     1758,
1420 /**/
1421     1757,
1422 /**/
1423     1756,
1424 /**/
1425     1755,
1426 /**/
1427     1754,
1428 /**/
1429     1753,
1430 /**/
1431     1752,
1432 /**/
1433     1751,
1434 /**/
1435     1750,
1436 /**/
1437     1749,
1438 /**/
1439     1748,
1440 /**/
1441     1747,
1442 /**/
1443     1746,
1444 /**/
1445     1745,
1446 /**/
1447     1744,
1448 /**/
1449     1743,
1450 /**/
1451     1742,
1452 /**/
1453     1741,
1454 /**/
1455     1740,
1456 /**/
1457     1739,
1458 /**/
1459     1738,
1460 /**/
1461     1737,
1462 /**/
1463     1736,
1464 /**/
1465     1735,
1466 /**/
1467     1734,
1468 /**/
1469     1733,
1470 /**/
1471     1732,
1472 /**/
1473     1731,
1474 /**/
1475     1730,
1476 /**/
1477     1729,
1478 /**/
1479     1728,
1480 /**/
1481     1727,
1482 /**/
1483     1726,
1484 /**/
1485     1725,
1486 /**/
1487     1724,
1488 /**/
1489     1723,
1490 /**/
1491     1722,
1492 /**/
1493     1721,
1494 /**/
1495     1720,
1496 /**/
1497     1719,
1498 /**/
1499     1718,
1500 /**/
1501     1717,
1502 /**/
1503     1716,
1504 /**/
1505     1715,
1506 /**/
1507     1714,
1508 /**/
1509     1713,
1510 /**/
1511     1712,
1512 /**/
1513     1711,
1514 /**/
1515     1710,
1516 /**/
1517     1709,
1518 /**/
1519     1708,
1520 /**/
1521     1707,
1522 /**/
1523     1706,
1524 /**/
1525     1705,
1526 /**/
1527     1704,
1528 /**/
1529     1703,
1530 /**/
1531     1702,
1532 /**/
1533     1701,
1534 /**/
1535     1700,
1536 /**/
1537     1699,
1538 /**/
1539     1698,
1540 /**/
1541     1697,
1542 /**/
1543     1696,
1544 /**/
1545     1695,
1546 /**/
1547     1694,
1548 /**/
1549     1693,
1550 /**/
1551     1692,
1552 /**/
1553     1691,
1554 /**/
1555     1690,
1556 /**/
1557     1689,
1558 /**/
1559     1688,
1560 /**/
1561     1687,
1562 /**/
1563     1686,
1564 /**/
1565     1685,
1566 /**/
1567     1684,
1568 /**/
1569     1683,
1570 /**/
1571     1682,
1572 /**/
1573     1681,
1574 /**/
1575     1680,
1576 /**/
1577     1679,
1578 /**/
1579     1678,
1580 /**/
1581     1677,
1582 /**/
1583     1676,
1584 /**/
1585     1675,
1586 /**/
1587     1674,
1588 /**/
1589     1673,
1590 /**/
1591     1672,
1592 /**/
1593     1671,
1594 /**/
1595     1670,
1596 /**/
1597     1669,
1598 /**/
1599     1668,
1600 /**/
1601     1667,
1602 /**/
1603     1666,
1604 /**/
1605     1665,
1606 /**/
1607     1664,
1608 /**/
1609     1663,
1610 /**/
1611     1662,
1612 /**/
1613     1661,
1614 /**/
1615     1660,
1616 /**/
1617     1659,
1618 /**/
1619     1658,
1620 /**/
1621     1657,
1622 /**/
1623     1656,
1624 /**/
1625     1655,
1626 /**/
1627     1654,
1628 /**/
1629     1653,
1630 /**/
1631     1652,
1632 /**/
1633     1651,
1634 /**/
1635     1650,
1636 /**/
1637     1649,
1638 /**/
1639     1648,
1640 /**/
1641     1647,
1642 /**/
1643     1646,
1644 /**/
1645     1645,
1646 /**/
1647     1644,
1648 /**/
1649     1643,
1650 /**/
1651     1642,
1652 /**/
1653     1641,
1654 /**/
1655     1640,
1656 /**/
1657     1639,
1658 /**/
1659     1638,
1660 /**/
1661     1637,
1662 /**/
1663     1636,
1664 /**/
1665     1635,
1666 /**/
1667     1634,
1668 /**/
1669     1633,
1670 /**/
1671     1632,
1672 /**/
1673     1631,
1674 /**/
1675     1630,
1676 /**/
1677     1629,
1678 /**/
1679     1628,
1680 /**/
1681     1627,
1682 /**/
1683     1626,
1684 /**/
1685     1625,
1686 /**/
1687     1624,
1688 /**/
1689     1623,
1690 /**/
1691     1622,
1692 /**/
1693     1621,
1694 /**/
1695     1620,
1696 /**/
1697     1619,
1698 /**/
1699     1618,
1700 /**/
1701     1617,
1702 /**/
1703     1616,
1704 /**/
1705     1615,
1706 /**/
1707     1614,
1708 /**/
1709     1613,
1710 /**/
1711     1612,
1712 /**/
1713     1611,
1714 /**/
1715     1610,
1716 /**/
1717     1609,
1718 /**/
1719     1608,
1720 /**/
1721     1607,
1722 /**/
1723     1606,
1724 /**/
1725     1605,
1726 /**/
1727     1604,
1728 /**/
1729     1603,
1730 /**/
1731     1602,
1732 /**/
1733     1601,
1734 /**/
1735     1600,
1736 /**/
1737     1599,
1738 /**/
1739     1598,
1740 /**/
1741     1597,
1742 /**/
1743     1596,
1744 /**/
1745     1595,
1746 /**/
1747     1594,
1748 /**/
1749     1593,
1750 /**/
1751     1592,
1752 /**/
1753     1591,
1754 /**/
1755     1590,
1756 /**/
1757     1589,
1758 /**/
1759     1588,
1760 /**/
1761     1587,
1762 /**/
1763     1586,
1764 /**/
1765     1585,
1766 /**/
1767     1584,
1768 /**/
1769     1583,
1770 /**/
1771     1582,
1772 /**/
1773     1581,
1774 /**/
1775     1580,
1776 /**/
1777     1579,
1778 /**/
1779     1578,
1780 /**/
1781     1577,
1782 /**/
1783     1576,
1784 /**/
1785     1575,
1786 /**/
1787     1574,
1788 /**/
1789     1573,
1790 /**/
1791     1572,
1792 /**/
1793     1571,
1794 /**/
1795     1570,
1796 /**/
1797     1569,
1798 /**/
1799     1568,
1800 /**/
1801     1567,
1802 /**/
1803     1566,
1804 /**/
1805     1565,
1806 /**/
1807     1564,
1808 /**/
1809     1563,
1810 /**/
1811     1562,
1812 /**/
1813     1561,
1814 /**/
1815     1560,
1816 /**/
1817     1559,
1818 /**/
1819     1558,
1820 /**/
1821     1557,
1822 /**/
1823     1556,
1824 /**/
1825     1555,
1826 /**/
1827     1554,
1828 /**/
1829     1553,
1830 /**/
1831     1552,
1832 /**/
1833     1551,
1834 /**/
1835     1550,
1836 /**/
1837     1549,
1838 /**/
1839     1548,
1840 /**/
1841     1547,
1842 /**/
1843     1546,
1844 /**/
1845     1545,
1846 /**/
1847     1544,
1848 /**/
1849     1543,
1850 /**/
1851     1542,
1852 /**/
1853     1541,
1854 /**/
1855     1540,
1856 /**/
1857     1539,
1858 /**/
1859     1538,
1860 /**/
1861     1537,
1862 /**/
1863     1536,
1864 /**/
1865     1535,
1866 /**/
1867     1534,
1868 /**/
1869     1533,
1870 /**/
1871     1532,
1872 /**/
1873     1531,
1874 /**/
1875     1530,
1876 /**/
1877     1529,
1878 /**/
1879     1528,
1880 /**/
1881     1527,
1882 /**/
1883     1526,
1884 /**/
1885     1525,
1886 /**/
1887     1524,
1888 /**/
1889     1523,
1890 /**/
1891     1522,
1892 /**/
1893     1521,
1894 /**/
1895     1520,
1896 /**/
1897     1519,
1898 /**/
1899     1518,
1900 /**/
1901     1517,
1902 /**/
1903     1516,
1904 /**/
1905     1515,
1906 /**/
1907     1514,
1908 /**/
1909     1513,
1910 /**/
1911     1512,
1912 /**/
1913     1511,
1914 /**/
1915     1510,
1916 /**/
1917     1509,
1918 /**/
1919     1508,
1920 /**/
1921     1507,
1922 /**/
1923     1506,
1924 /**/
1925     1505,
1926 /**/
1927     1504,
1928 /**/
1929     1503,
1930 /**/
1931     1502,
1932 /**/
1933     1501,
1934 /**/
1935     1500,
1936 /**/
1937     1499,
1938 /**/
1939     1498,
1940 /**/
1941     1497,
1942 /**/
1943     1496,
1944 /**/
1945     1495,
1946 /**/
1947     1494,
1948 /**/
1949     1493,
1950 /**/
1951     1492,
1952 /**/
1953     1491,
1954 /**/
1955     1490,
1956 /**/
1957     1489,
1958 /**/
1959     1488,
1960 /**/
1961     1487,
1962 /**/
1963     1486,
1964 /**/
1965     1485,
1966 /**/
1967     1484,
1968 /**/
1969     1483,
1970 /**/
1971     1482,
1972 /**/
1973     1481,
1974 /**/
1975     1480,
1976 /**/
1977     1479,
1978 /**/
1979     1478,
1980 /**/
1981     1477,
1982 /**/
1983     1476,
1984 /**/
1985     1475,
1986 /**/
1987     1474,
1988 /**/
1989     1473,
1990 /**/
1991     1472,
1992 /**/
1993     1471,
1994 /**/
1995     1470,
1996 /**/
1997     1469,
1998 /**/
1999     1468,
2000 /**/
2001     1467,
2002 /**/
2003     1466,
2004 /**/
2005     1465,
2006 /**/
2007     1464,
2008 /**/
2009     1463,
2010 /**/
2011     1462,
2012 /**/
2013     1461,
2014 /**/
2015     1460,
2016 /**/
2017     1459,
2018 /**/
2019     1458,
2020 /**/
2021     1457,
2022 /**/
2023     1456,
2024 /**/
2025     1455,
2026 /**/
2027     1454,
2028 /**/
2029     1453,
2030 /**/
2031     1452,
2032 /**/
2033     1451,
2034 /**/
2035     1450,
2036 /**/
2037     1449,
2038 /**/
2039     1448,
2040 /**/
2041     1447,
2042 /**/
2043     1446,
2044 /**/
2045     1445,
2046 /**/
2047     1444,
2048 /**/
2049     1443,
2050 /**/
2051     1442,
2052 /**/
2053     1441,
2054 /**/
2055     1440,
2056 /**/
2057     1439,
2058 /**/
2059     1438,
2060 /**/
2061     1437,
2062 /**/
2063     1436,
2064 /**/
2065     1435,
2066 /**/
2067     1434,
2068 /**/
2069     1433,
2070 /**/
2071     1432,
2072 /**/
2073     1431,
2074 /**/
2075     1430,
2076 /**/
2077     1429,
2078 /**/
2079     1428,
2080 /**/
2081     1427,
2082 /**/
2083     1426,
2084 /**/
2085     1425,
2086 /**/
2087     1424,
2088 /**/
2089     1423,
2090 /**/
2091     1422,
2092 /**/
2093     1421,
2094 /**/
2095     1420,
2096 /**/
2097     1419,
2098 /**/
2099     1418,
2100 /**/
2101     1417,
2102 /**/
2103     1416,
2104 /**/
2105     1415,
2106 /**/
2107     1414,
2108 /**/
2109     1413,
2110 /**/
2111     1412,
2112 /**/
2113     1411,
2114 /**/
2115     1410,
2116 /**/
2117     1409,
2118 /**/
2119     1408,
2120 /**/
2121     1407,
2122 /**/
2123     1406,
2124 /**/
2125     1405,
2126 /**/
2127     1404,
2128 /**/
2129     1403,
2130 /**/
2131     1402,
2132 /**/
2133     1401,
2134 /**/
2135     1400,
2136 /**/
2137     1399,
2138 /**/
2139     1398,
2140 /**/
2141     1397,
2142 /**/
2143     1396,
2144 /**/
2145     1395,
2146 /**/
2147     1394,
2148 /**/
2149     1393,
2150 /**/
2151     1392,
2152 /**/
2153     1391,
2154 /**/
2155     1390,
2156 /**/
2157     1389,
2158 /**/
2159     1388,
2160 /**/
2161     1387,
2162 /**/
2163     1386,
2164 /**/
2165     1385,
2166 /**/
2167     1384,
2168 /**/
2169     1383,
2170 /**/
2171     1382,
2172 /**/
2173     1381,
2174 /**/
2175     1380,
2176 /**/
2177     1379,
2178 /**/
2179     1378,
2180 /**/
2181     1377,
2182 /**/
2183     1376,
2184 /**/
2185     1375,
2186 /**/
2187     1374,
2188 /**/
2189     1373,
2190 /**/
2191     1372,
2192 /**/
2193     1371,
2194 /**/
2195     1370,
2196 /**/
2197     1369,
2198 /**/
2199     1368,
2200 /**/
2201     1367,
2202 /**/
2203     1366,
2204 /**/
2205     1365,
2206 /**/
2207     1364,
2208 /**/
2209     1363,
2210 /**/
2211     1362,
2212 /**/
2213     1361,
2214 /**/
2215     1360,
2216 /**/
2217     1359,
2218 /**/
2219     1358,
2220 /**/
2221     1357,
2222 /**/
2223     1356,
2224 /**/
2225     1355,
2226 /**/
2227     1354,
2228 /**/
2229     1353,
2230 /**/
2231     1352,
2232 /**/
2233     1351,
2234 /**/
2235     1350,
2236 /**/
2237     1349,
2238 /**/
2239     1348,
2240 /**/
2241     1347,
2242 /**/
2243     1346,
2244 /**/
2245     1345,
2246 /**/
2247     1344,
2248 /**/
2249     1343,
2250 /**/
2251     1342,
2252 /**/
2253     1341,
2254 /**/
2255     1340,
2256 /**/
2257     1339,
2258 /**/
2259     1338,
2260 /**/
2261     1337,
2262 /**/
2263     1336,
2264 /**/
2265     1335,
2266 /**/
2267     1334,
2268 /**/
2269     1333,
2270 /**/
2271     1332,
2272 /**/
2273     1331,
2274 /**/
2275     1330,
2276 /**/
2277     1329,
2278 /**/
2279     1328,
2280 /**/
2281     1327,
2282 /**/
2283     1326,
2284 /**/
2285     1325,
2286 /**/
2287     1324,
2288 /**/
2289     1323,
2290 /**/
2291     1322,
2292 /**/
2293     1321,
2294 /**/
2295     1320,
2296 /**/
2297     1319,
2298 /**/
2299     1318,
2300 /**/
2301     1317,
2302 /**/
2303     1316,
2304 /**/
2305     1315,
2306 /**/
2307     1314,
2308 /**/
2309     1313,
2310 /**/
2311     1312,
2312 /**/
2313     1311,
2314 /**/
2315     1310,
2316 /**/
2317     1309,
2318 /**/
2319     1308,
2320 /**/
2321     1307,
2322 /**/
2323     1306,
2324 /**/
2325     1305,
2326 /**/
2327     1304,
2328 /**/
2329     1303,
2330 /**/
2331     1302,
2332 /**/
2333     1301,
2334 /**/
2335     1300,
2336 /**/
2337     1299,
2338 /**/
2339     1298,
2340 /**/
2341     1297,
2342 /**/
2343     1296,
2344 /**/
2345     1295,
2346 /**/
2347     1294,
2348 /**/
2349     1293,
2350 /**/
2351     1292,
2352 /**/
2353     1291,
2354 /**/
2355     1290,
2356 /**/
2357     1289,
2358 /**/
2359     1288,
2360 /**/
2361     1287,
2362 /**/
2363     1286,
2364 /**/
2365     1285,
2366 /**/
2367     1284,
2368 /**/
2369     1283,
2370 /**/
2371     1282,
2372 /**/
2373     1281,
2374 /**/
2375     1280,
2376 /**/
2377     1279,
2378 /**/
2379     1278,
2380 /**/
2381     1277,
2382 /**/
2383     1276,
2384 /**/
2385     1275,
2386 /**/
2387     1274,
2388 /**/
2389     1273,
2390 /**/
2391     1272,
2392 /**/
2393     1271,
2394 /**/
2395     1270,
2396 /**/
2397     1269,
2398 /**/
2399     1268,
2400 /**/
2401     1267,
2402 /**/
2403     1266,
2404 /**/
2405     1265,
2406 /**/
2407     1264,
2408 /**/
2409     1263,
2410 /**/
2411     1262,
2412 /**/
2413     1261,
2414 /**/
2415     1260,
2416 /**/
2417     1259,
2418 /**/
2419     1258,
2420 /**/
2421     1257,
2422 /**/
2423     1256,
2424 /**/
2425     1255,
2426 /**/
2427     1254,
2428 /**/
2429     1253,
2430 /**/
2431     1252,
2432 /**/
2433     1251,
2434 /**/
2435     1250,
2436 /**/
2437     1249,
2438 /**/
2439     1248,
2440 /**/
2441     1247,
2442 /**/
2443     1246,
2444 /**/
2445     1245,
2446 /**/
2447     1244,
2448 /**/
2449     1243,
2450 /**/
2451     1242,
2452 /**/
2453     1241,
2454 /**/
2455     1240,
2456 /**/
2457     1239,
2458 /**/
2459     1238,
2460 /**/
2461     1237,
2462 /**/
2463     1236,
2464 /**/
2465     1235,
2466 /**/
2467     1234,
2468 /**/
2469     1233,
2470 /**/
2471     1232,
2472 /**/
2473     1231,
2474 /**/
2475     1230,
2476 /**/
2477     1229,
2478 /**/
2479     1228,
2480 /**/
2481     1227,
2482 /**/
2483     1226,
2484 /**/
2485     1225,
2486 /**/
2487     1224,
2488 /**/
2489     1223,
2490 /**/
2491     1222,
2492 /**/
2493     1221,
2494 /**/
2495     1220,
2496 /**/
2497     1219,
2498 /**/
2499     1218,
2500 /**/
2501     1217,
2502 /**/
2503     1216,
2504 /**/
2505     1215,
2506 /**/
2507     1214,
2508 /**/
2509     1213,
2510 /**/
2511     1212,
2512 /**/
2513     1211,
2514 /**/
2515     1210,
2516 /**/
2517     1209,
2518 /**/
2519     1208,
2520 /**/
2521     1207,
2522 /**/
2523     1206,
2524 /**/
2525     1205,
2526 /**/
2527     1204,
2528 /**/
2529     1203,
2530 /**/
2531     1202,
2532 /**/
2533     1201,
2534 /**/
2535     1200,
2536 /**/
2537     1199,
2538 /**/
2539     1198,
2540 /**/
2541     1197,
2542 /**/
2543     1196,
2544 /**/
2545     1195,
2546 /**/
2547     1194,
2548 /**/
2549     1193,
2550 /**/
2551     1192,
2552 /**/
2553     1191,
2554 /**/
2555     1190,
2556 /**/
2557     1189,
2558 /**/
2559     1188,
2560 /**/
2561     1187,
2562 /**/
2563     1186,
2564 /**/
2565     1185,
2566 /**/
2567     1184,
2568 /**/
2569     1183,
2570 /**/
2571     1182,
2572 /**/
2573     1181,
2574 /**/
2575     1180,
2576 /**/
2577     1179,
2578 /**/
2579     1178,
2580 /**/
2581     1177,
2582 /**/
2583     1176,
2584 /**/
2585     1175,
2586 /**/
2587     1174,
2588 /**/
2589     1173,
2590 /**/
2591     1172,
2592 /**/
2593     1171,
2594 /**/
2595     1170,
2596 /**/
2597     1169,
2598 /**/
2599     1168,
2600 /**/
2601     1167,
2602 /**/
2603     1166,
2604 /**/
2605     1165,
2606 /**/
2607     1164,
2608 /**/
2609     1163,
2610 /**/
2611     1162,
2612 /**/
2613     1161,
2614 /**/
2615     1160,
2616 /**/
2617     1159,
2618 /**/
2619     1158,
2620 /**/
2621     1157,
2622 /**/
2623     1156,
2624 /**/
2625     1155,
2626 /**/
2627     1154,
2628 /**/
2629     1153,
2630 /**/
2631     1152,
2632 /**/
2633     1151,
2634 /**/
2635     1150,
2636 /**/
2637     1149,
2638 /**/
2639     1148,
2640 /**/
2641     1147,
2642 /**/
2643     1146,
2644 /**/
2645     1145,
2646 /**/
2647     1144,
2648 /**/
2649     1143,
2650 /**/
2651     1142,
2652 /**/
2653     1141,
2654 /**/
2655     1140,
2656 /**/
2657     1139,
2658 /**/
2659     1138,
2660 /**/
2661     1137,
2662 /**/
2663     1136,
2664 /**/
2665     1135,
2666 /**/
2667     1134,
2668 /**/
2669     1133,
2670 /**/
2671     1132,
2672 /**/
2673     1131,
2674 /**/
2675     1130,
2676 /**/
2677     1129,
2678 /**/
2679     1128,
2680 /**/
2681     1127,
2682 /**/
2683     1126,
2684 /**/
2685     1125,
2686 /**/
2687     1124,
2688 /**/
2689     1123,
2690 /**/
2691     1122,
2692 /**/
2693     1121,
2694 /**/
2695     1120,
2696 /**/
2697     1119,
2698 /**/
2699     1118,
2700 /**/
2701     1117,
2702 /**/
2703     1116,
2704 /**/
2705     1115,
2706 /**/
2707     1114,
2708 /**/
2709     1113,
2710 /**/
2711     1112,
2712 /**/
2713     1111,
2714 /**/
2715     1110,
2716 /**/
2717     1109,
2718 /**/
2719     1108,
2720 /**/
2721     1107,
2722 /**/
2723     1106,
2724 /**/
2725     1105,
2726 /**/
2727     1104,
2728 /**/
2729     1103,
2730 /**/
2731     1102,
2732 /**/
2733     1101,
2734 /**/
2735     1100,
2736 /**/
2737     1099,
2738 /**/
2739     1098,
2740 /**/
2741     1097,
2742 /**/
2743     1096,
2744 /**/
2745     1095,
2746 /**/
2747     1094,
2748 /**/
2749     1093,
2750 /**/
2751     1092,
2752 /**/
2753     1091,
2754 /**/
2755     1090,
2756 /**/
2757     1089,
2758 /**/
2759     1088,
2760 /**/
2761     1087,
2762 /**/
2763     1086,
2764 /**/
2765     1085,
2766 /**/
2767     1084,
2768 /**/
2769     1083,
2770 /**/
2771     1082,
2772 /**/
2773     1081,
2774 /**/
2775     1080,
2776 /**/
2777     1079,
2778 /**/
2779     1078,
2780 /**/
2781     1077,
2782 /**/
2783     1076,
2784 /**/
2785     1075,
2786 /**/
2787     1074,
2788 /**/
2789     1073,
2790 /**/
2791     1072,
2792 /**/
2793     1071,
2794 /**/
2795     1070,
2796 /**/
2797     1069,
2798 /**/
2799     1068,
2800 /**/
2801     1067,
2802 /**/
2803     1066,
2804 /**/
2805     1065,
2806 /**/
2807     1064,
2808 /**/
2809     1063,
2810 /**/
2811     1062,
2812 /**/
2813     1061,
2814 /**/
2815     1060,
2816 /**/
2817     1059,
2818 /**/
2819     1058,
2820 /**/
2821     1057,
2822 /**/
2823     1056,
2824 /**/
2825     1055,
2826 /**/
2827     1054,
2828 /**/
2829     1053,
2830 /**/
2831     1052,
2832 /**/
2833     1051,
2834 /**/
2835     1050,
2836 /**/
2837     1049,
2838 /**/
2839     1048,
2840 /**/
2841     1047,
2842 /**/
2843     1046,
2844 /**/
2845     1045,
2846 /**/
2847     1044,
2848 /**/
2849     1043,
2850 /**/
2851     1042,
2852 /**/
2853     1041,
2854 /**/
2855     1040,
2856 /**/
2857     1039,
2858 /**/
2859     1038,
2860 /**/
2861     1037,
2862 /**/
2863     1036,
2864 /**/
2865     1035,
2866 /**/
2867     1034,
2868 /**/
2869     1033,
2870 /**/
2871     1032,
2872 /**/
2873     1031,
2874 /**/
2875     1030,
2876 /**/
2877     1029,
2878 /**/
2879     1028,
2880 /**/
2881     1027,
2882 /**/
2883     1026,
2884 /**/
2885     1025,
2886 /**/
2887     1024,
2888 /**/
2889     1023,
2890 /**/
2891     1022,
2892 /**/
2893     1021,
2894 /**/
2895     1020,
2896 /**/
2897     1019,
2898 /**/
2899     1018,
2900 /**/
2901     1017,
2902 /**/
2903     1016,
2904 /**/
2905     1015,
2906 /**/
2907     1014,
2908 /**/
2909     1013,
2910 /**/
2911     1012,
2912 /**/
2913     1011,
2914 /**/
2915     1010,
2916 /**/
2917     1009,
2918 /**/
2919     1008,
2920 /**/
2921     1007,
2922 /**/
2923     1006,
2924 /**/
2925     1005,
2926 /**/
2927     1004,
2928 /**/
2929     1003,
2930 /**/
2931     1002,
2932 /**/
2933     1001,
2934 /**/
2935     1000,
2936 /**/
2937     999,
2938 /**/
2939     998,
2940 /**/
2941     997,
2942 /**/
2943     996,
2944 /**/
2945     995,
2946 /**/
2947     994,
2948 /**/
2949     993,
2950 /**/
2951     992,
2952 /**/
2953     991,
2954 /**/
2955     990,
2956 /**/
2957     989,
2958 /**/
2959     988,
2960 /**/
2961     987,
2962 /**/
2963     986,
2964 /**/
2965     985,
2966 /**/
2967     984,
2968 /**/
2969     983,
2970 /**/
2971     982,
2972 /**/
2973     981,
2974 /**/
2975     980,
2976 /**/
2977     979,
2978 /**/
2979     978,
2980 /**/
2981     977,
2982 /**/
2983     976,
2984 /**/
2985     975,
2986 /**/
2987     974,
2988 /**/
2989     973,
2990 /**/
2991     972,
2992 /**/
2993     971,
2994 /**/
2995     970,
2996 /**/
2997     969,
2998 /**/
2999     968,
3000 /**/
3001     967,
3002 /**/
3003     966,
3004 /**/
3005     965,
3006 /**/
3007     964,
3008 /**/
3009     963,
3010 /**/
3011     962,
3012 /**/
3013     961,
3014 /**/
3015     960,
3016 /**/
3017     959,
3018 /**/
3019     958,
3020 /**/
3021     957,
3022 /**/
3023     956,
3024 /**/
3025     955,
3026 /**/
3027     954,
3028 /**/
3029     953,
3030 /**/
3031     952,
3032 /**/
3033     951,
3034 /**/
3035     950,
3036 /**/
3037     949,
3038 /**/
3039     948,
3040 /**/
3041     947,
3042 /**/
3043     946,
3044 /**/
3045     945,
3046 /**/
3047     944,
3048 /**/
3049     943,
3050 /**/
3051     942,
3052 /**/
3053     941,
3054 /**/
3055     940,
3056 /**/
3057     939,
3058 /**/
3059     938,
3060 /**/
3061     937,
3062 /**/
3063     936,
3064 /**/
3065     935,
3066 /**/
3067     934,
3068 /**/
3069     933,
3070 /**/
3071     932,
3072 /**/
3073     931,
3074 /**/
3075     930,
3076 /**/
3077     929,
3078 /**/
3079     928,
3080 /**/
3081     927,
3082 /**/
3083     926,
3084 /**/
3085     925,
3086 /**/
3087     924,
3088 /**/
3089     923,
3090 /**/
3091     922,
3092 /**/
3093     921,
3094 /**/
3095     920,
3096 /**/
3097     919,
3098 /**/
3099     918,
3100 /**/
3101     917,
3102 /**/
3103     916,
3104 /**/
3105     915,
3106 /**/
3107     914,
3108 /**/
3109     913,
3110 /**/
3111     912,
3112 /**/
3113     911,
3114 /**/
3115     910,
3116 /**/
3117     909,
3118 /**/
3119     908,
3120 /**/
3121     907,
3122 /**/
3123     906,
3124 /**/
3125     905,
3126 /**/
3127     904,
3128 /**/
3129     903,
3130 /**/
3131     902,
3132 /**/
3133     901,
3134 /**/
3135     900,
3136 /**/
3137     899,
3138 /**/
3139     898,
3140 /**/
3141     897,
3142 /**/
3143     896,
3144 /**/
3145     895,
3146 /**/
3147     894,
3148 /**/
3149     893,
3150 /**/
3151     892,
3152 /**/
3153     891,
3154 /**/
3155     890,
3156 /**/
3157     889,
3158 /**/
3159     888,
3160 /**/
3161     887,
3162 /**/
3163     886,
3164 /**/
3165     885,
3166 /**/
3167     884,
3168 /**/
3169     883,
3170 /**/
3171     882,
3172 /**/
3173     881,
3174 /**/
3175     880,
3176 /**/
3177     879,
3178 /**/
3179     878,
3180 /**/
3181     877,
3182 /**/
3183     876,
3184 /**/
3185     875,
3186 /**/
3187     874,
3188 /**/
3189     873,
3190 /**/
3191     872,
3192 /**/
3193     871,
3194 /**/
3195     870,
3196 /**/
3197     869,
3198 /**/
3199     868,
3200 /**/
3201     867,
3202 /**/
3203     866,
3204 /**/
3205     865,
3206 /**/
3207     864,
3208 /**/
3209     863,
3210 /**/
3211     862,
3212 /**/
3213     861,
3214 /**/
3215     860,
3216 /**/
3217     859,
3218 /**/
3219     858,
3220 /**/
3221     857,
3222 /**/
3223     856,
3224 /**/
3225     855,
3226 /**/
3227     854,
3228 /**/
3229     853,
3230 /**/
3231     852,
3232 /**/
3233     851,
3234 /**/
3235     850,
3236 /**/
3237     849,
3238 /**/
3239     848,
3240 /**/
3241     847,
3242 /**/
3243     846,
3244 /**/
3245     845,
3246 /**/
3247     844,
3248 /**/
3249     843,
3250 /**/
3251     842,
3252 /**/
3253     841,
3254 /**/
3255     840,
3256 /**/
3257     839,
3258 /**/
3259     838,
3260 /**/
3261     837,
3262 /**/
3263     836,
3264 /**/
3265     835,
3266 /**/
3267     834,
3268 /**/
3269     833,
3270 /**/
3271     832,
3272 /**/
3273     831,
3274 /**/
3275     830,
3276 /**/
3277     829,
3278 /**/
3279     828,
3280 /**/
3281     827,
3282 /**/
3283     826,
3284 /**/
3285     825,
3286 /**/
3287     824,
3288 /**/
3289     823,
3290 /**/
3291     822,
3292 /**/
3293     821,
3294 /**/
3295     820,
3296 /**/
3297     819,
3298 /**/
3299     818,
3300 /**/
3301     817,
3302 /**/
3303     816,
3304 /**/
3305     815,
3306 /**/
3307     814,
3308 /**/
3309     813,
3310 /**/
3311     812,
3312 /**/
3313     811,
3314 /**/
3315     810,
3316 /**/
3317     809,
3318 /**/
3319     808,
3320 /**/
3321     807,
3322 /**/
3323     806,
3324 /**/
3325     805,
3326 /**/
3327     804,
3328 /**/
3329     803,
3330 /**/
3331     802,
3332 /**/
3333     801,
3334 /**/
3335     800,
3336 /**/
3337     799,
3338 /**/
3339     798,
3340 /**/
3341     797,
3342 /**/
3343     796,
3344 /**/
3345     795,
3346 /**/
3347     794,
3348 /**/
3349     793,
3350 /**/
3351     792,
3352 /**/
3353     791,
3354 /**/
3355     790,
3356 /**/
3357     789,
3358 /**/
3359     788,
3360 /**/
3361     787,
3362 /**/
3363     786,
3364 /**/
3365     785,
3366 /**/
3367     784,
3368 /**/
3369     783,
3370 /**/
3371     782,
3372 /**/
3373     781,
3374 /**/
3375     780,
3376 /**/
3377     779,
3378 /**/
3379     778,
3380 /**/
3381     777,
3382 /**/
3383     776,
3384 /**/
3385     775,
3386 /**/
3387     774,
3388 /**/
3389     773,
3390 /**/
3391     772,
3392 /**/
3393     771,
3394 /**/
3395     770,
3396 /**/
3397     769,
3398 /**/
3399     768,
3400 /**/
3401     767,
3402 /**/
3403     766,
3404 /**/
3405     765,
3406 /**/
3407     764,
3408 /**/
3409     763,
3410 /**/
3411     762,
3412 /**/
3413     761,
3414 /**/
3415     760,
3416 /**/
3417     759,
3418 /**/
3419     758,
3420 /**/
3421     757,
3422 /**/
3423     756,
3424 /**/
3425     755,
3426 /**/
3427     754,
3428 /**/
3429     753,
3430 /**/
3431     752,
3432 /**/
3433     751,
3434 /**/
3435     750,
3436 /**/
3437     749,
3438 /**/
3439     748,
3440 /**/
3441     747,
3442 /**/
3443     746,
3444 /**/
3445     745,
3446 /**/
3447     744,
3448 /**/
3449     743,
3450 /**/
3451     742,
3452 /**/
3453     741,
3454 /**/
3455     740,
3456 /**/
3457     739,
3458 /**/
3459     738,
3460 /**/
3461     737,
3462 /**/
3463     736,
3464 /**/
3465     735,
3466 /**/
3467     734,
3468 /**/
3469     733,
3470 /**/
3471     732,
3472 /**/
3473     731,
3474 /**/
3475     730,
3476 /**/
3477     729,
3478 /**/
3479     728,
3480 /**/
3481     727,
3482 /**/
3483     726,
3484 /**/
3485     725,
3486 /**/
3487     724,
3488 /**/
3489     723,
3490 /**/
3491     722,
3492 /**/
3493     721,
3494 /**/
3495     720,
3496 /**/
3497     719,
3498 /**/
3499     718,
3500 /**/
3501     717,
3502 /**/
3503     716,
3504 /**/
3505     715,
3506 /**/
3507     714,
3508 /**/
3509     713,
3510 /**/
3511     712,
3512 /**/
3513     711,
3514 /**/
3515     710,
3516 /**/
3517     709,
3518 /**/
3519     708,
3520 /**/
3521     707,
3522 /**/
3523     706,
3524 /**/
3525     705,
3526 /**/
3527     704,
3528 /**/
3529     703,
3530 /**/
3531     702,
3532 /**/
3533     701,
3534 /**/
3535     700,
3536 /**/
3537     699,
3538 /**/
3539     698,
3540 /**/
3541     697,
3542 /**/
3543     696,
3544 /**/
3545     695,
3546 /**/
3547     694,
3548 /**/
3549     693,
3550 /**/
3551     692,
3552 /**/
3553     691,
3554 /**/
3555     690,
3556 /**/
3557     689,
3558 /**/
3559     688,
3560 /**/
3561     687,
3562 /**/
3563     686,
3564 /**/
3565     685,
3566 /**/
3567     684,
3568 /**/
3569     683,
3570 /**/
3571     682,
3572 /**/
3573     681,
3574 /**/
3575     680,
3576 /**/
3577     679,
3578 /**/
3579     678,
3580 /**/
3581     677,
3582 /**/
3583     676,
3584 /**/
3585     675,
3586 /**/
3587     674,
3588 /**/
3589     673,
3590 /**/
3591     672,
3592 /**/
3593     671,
3594 /**/
3595     670,
3596 /**/
3597     669,
3598 /**/
3599     668,
3600 /**/
3601     667,
3602 /**/
3603     666,
3604 /**/
3605     665,
3606 /**/
3607     664,
3608 /**/
3609     663,
3610 /**/
3611     662,
3612 /**/
3613     661,
3614 /**/
3615     660,
3616 /**/
3617     659,
3618 /**/
3619     658,
3620 /**/
3621     657,
3622 /**/
3623     656,
3624 /**/
3625     655,
3626 /**/
3627     654,
3628 /**/
3629     653,
3630 /**/
3631     652,
3632 /**/
3633     651,
3634 /**/
3635     650,
3636 /**/
3637     649,
3638 /**/
3639     648,
3640 /**/
3641     647,
3642 /**/
3643     646,
3644 /**/
3645     645,
3646 /**/
3647     644,
3648 /**/
3649     643,
3650 /**/
3651     642,
3652 /**/
3653     641,
3654 /**/
3655     640,
3656 /**/
3657     639,
3658 /**/
3659     638,
3660 /**/
3661     637,
3662 /**/
3663     636,
3664 /**/
3665     635,
3666 /**/
3667     634,
3668 /**/
3669     633,
3670 /**/
3671     632,
3672 /**/
3673     631,
3674 /**/
3675     630,
3676 /**/
3677     629,
3678 /**/
3679     628,
3680 /**/
3681     627,
3682 /**/
3683     626,
3684 /**/
3685     625,
3686 /**/
3687     624,
3688 /**/
3689     623,
3690 /**/
3691     622,
3692 /**/
3693     621,
3694 /**/
3695     620,
3696 /**/
3697     619,
3698 /**/
3699     618,
3700 /**/
3701     617,
3702 /**/
3703     616,
3704 /**/
3705     615,
3706 /**/
3707     614,
3708 /**/
3709     613,
3710 /**/
3711     612,
3712 /**/
3713     611,
3714 /**/
3715     610,
3716 /**/
3717     609,
3718 /**/
3719     608,
3720 /**/
3721     607,
3722 /**/
3723     606,
3724 /**/
3725     605,
3726 /**/
3727     604,
3728 /**/
3729     603,
3730 /**/
3731     602,
3732 /**/
3733     601,
3734 /**/
3735     600,
3736 /**/
3737     599,
3738 /**/
3739     598,
3740 /**/
3741     597,
3742 /**/
3743     596,
3744 /**/
3745     595,
3746 /**/
3747     594,
3748 /**/
3749     593,
3750 /**/
3751     592,
3752 /**/
3753     591,
3754 /**/
3755     590,
3756 /**/
3757     589,
3758 /**/
3759     588,
3760 /**/
3761     587,
3762 /**/
3763     586,
3764 /**/
3765     585,
3766 /**/
3767     584,
3768 /**/
3769     583,
3770 /**/
3771     582,
3772 /**/
3773     581,
3774 /**/
3775     580,
3776 /**/
3777     579,
3778 /**/
3779     578,
3780 /**/
3781     577,
3782 /**/
3783     576,
3784 /**/
3785     575,
3786 /**/
3787     574,
3788 /**/
3789     573,
3790 /**/
3791     572,
3792 /**/
3793     571,
3794 /**/
3795     570,
3796 /**/
3797     569,
3798 /**/
3799     568,
3800 /**/
3801     567,
3802 /**/
3803     566,
3804 /**/
3805     565,
3806 /**/
3807     564,
3808 /**/
3809     563,
3810 /**/
3811     562,
3812 /**/
3813     561,
3814 /**/
3815     560,
3816 /**/
3817     559,
3818 /**/
3819     558,
3820 /**/
3821     557,
3822 /**/
3823     556,
3824 /**/
3825     555,
3826 /**/
3827     554,
3828 /**/
3829     553,
3830 /**/
3831     552,
3832 /**/
3833     551,
3834 /**/
3835     550,
3836 /**/
3837     549,
3838 /**/
3839     548,
3840 /**/
3841     547,
3842 /**/
3843     546,
3844 /**/
3845     545,
3846 /**/
3847     544,
3848 /**/
3849     543,
3850 /**/
3851     542,
3852 /**/
3853     541,
3854 /**/
3855     540,
3856 /**/
3857     539,
3858 /**/
3859     538,
3860 /**/
3861     537,
3862 /**/
3863     536,
3864 /**/
3865     535,
3866 /**/
3867     534,
3868 /**/
3869     533,
3870 /**/
3871     532,
3872 /**/
3873     531,
3874 /**/
3875     530,
3876 /**/
3877     529,
3878 /**/
3879     528,
3880 /**/
3881     527,
3882 /**/
3883     526,
3884 /**/
3885     525,
3886 /**/
3887     524,
3888 /**/
3889     523,
3890 /**/
3891     522,
3892 /**/
3893     521,
3894 /**/
3895     520,
3896 /**/
3897     519,
3898 /**/
3899     518,
3900 /**/
3901     517,
3902 /**/
3903     516,
3904 /**/
3905     515,
3906 /**/
3907     514,
3908 /**/
3909     513,
3910 /**/
3911     512,
3912 /**/
3913     511,
3914 /**/
3915     510,
3916 /**/
3917     509,
3918 /**/
3919     508,
3920 /**/
3921     507,
3922 /**/
3923     506,
3924 /**/
3925     505,
3926 /**/
3927     504,
3928 /**/
3929     503,
3930 /**/
3931     502,
3932 /**/
3933     501,
3934 /**/
3935     500,
3936 /**/
3937     499,
3938 /**/
3939     498,
3940 /**/
3941     497,
3942 /**/
3943     496,
3944 /**/
3945     495,
3946 /**/
3947     494,
3948 /**/
3949     493,
3950 /**/
3951     492,
3952 /**/
3953     491,
3954 /**/
3955     490,
3956 /**/
3957     489,
3958 /**/
3959     488,
3960 /**/
3961     487,
3962 /**/
3963     486,
3964 /**/
3965     485,
3966 /**/
3967     484,
3968 /**/
3969     483,
3970 /**/
3971     482,
3972 /**/
3973     481,
3974 /**/
3975     480,
3976 /**/
3977     479,
3978 /**/
3979     478,
3980 /**/
3981     477,
3982 /**/
3983     476,
3984 /**/
3985     475,
3986 /**/
3987     474,
3988 /**/
3989     473,
3990 /**/
3991     472,
3992 /**/
3993     471,
3994 /**/
3995     470,
3996 /**/
3997     469,
3998 /**/
3999     468,
4000 /**/
4001     467,
4002 /**/
4003     466,
4004 /**/
4005     465,
4006 /**/
4007     464,
4008 /**/
4009     463,
4010 /**/
4011     462,
4012 /**/
4013     461,
4014 /**/
4015     460,
4016 /**/
4017     459,
4018 /**/
4019     458,
4020 /**/
4021     457,
4022 /**/
4023     456,
4024 /**/
4025     455,
4026 /**/
4027     454,
4028 /**/
4029     453,
4030 /**/
4031     452,
4032 /**/
4033     451,
4034 /**/
4035     450,
4036 /**/
4037     449,
4038 /**/
4039     448,
4040 /**/
4041     447,
4042 /**/
4043     446,
4044 /**/
4045     445,
4046 /**/
4047     444,
4048 /**/
4049     443,
4050 /**/
4051     442,
4052 /**/
4053     441,
4054 /**/
4055     440,
4056 /**/
4057     439,
4058 /**/
4059     438,
4060 /**/
4061     437,
4062 /**/
4063     436,
4064 /**/
4065     435,
4066 /**/
4067     434,
4068 /**/
4069     433,
4070 /**/
4071     432,
4072 /**/
4073     431,
4074 /**/
4075     430,
4076 /**/
4077     429,
4078 /**/
4079     428,
4080 /**/
4081     427,
4082 /**/
4083     426,
4084 /**/
4085     425,
4086 /**/
4087     424,
4088 /**/
4089     423,
4090 /**/
4091     422,
4092 /**/
4093     421,
4094 /**/
4095     420,
4096 /**/
4097     419,
4098 /**/
4099     418,
4100 /**/
4101     417,
4102 /**/
4103     416,
4104 /**/
4105     415,
4106 /**/
4107     414,
4108 /**/
4109     413,
4110 /**/
4111     412,
4112 /**/
4113     411,
4114 /**/
4115     410,
4116 /**/
4117     409,
4118 /**/
4119     408,
4120 /**/
4121     407,
4122 /**/
4123     406,
4124 /**/
4125     405,
4126 /**/
4127     404,
4128 /**/
4129     403,
4130 /**/
4131     402,
4132 /**/
4133     401,
4134 /**/
4135     400,
4136 /**/
4137     399,
4138 /**/
4139     398,
4140 /**/
4141     397,
4142 /**/
4143     396,
4144 /**/
4145     395,
4146 /**/
4147     394,
4148 /**/
4149     393,
4150 /**/
4151     392,
4152 /**/
4153     391,
4154 /**/
4155     390,
4156 /**/
4157     389,
4158 /**/
4159     388,
4160 /**/
4161     387,
4162 /**/
4163     386,
4164 /**/
4165     385,
4166 /**/
4167     384,
4168 /**/
4169     383,
4170 /**/
4171     382,
4172 /**/
4173     381,
4174 /**/
4175     380,
4176 /**/
4177     379,
4178 /**/
4179     378,
4180 /**/
4181     377,
4182 /**/
4183     376,
4184 /**/
4185     375,
4186 /**/
4187     374,
4188 /**/
4189     373,
4190 /**/
4191     372,
4192 /**/
4193     371,
4194 /**/
4195     370,
4196 /**/
4197     369,
4198 /**/
4199     368,
4200 /**/
4201     367,
4202 /**/
4203     366,
4204 /**/
4205     365,
4206 /**/
4207     364,
4208 /**/
4209     363,
4210 /**/
4211     362,
4212 /**/
4213     361,
4214 /**/
4215     360,
4216 /**/
4217     359,
4218 /**/
4219     358,
4220 /**/
4221     357,
4222 /**/
4223     356,
4224 /**/
4225     355,
4226 /**/
4227     354,
4228 /**/
4229     353,
4230 /**/
4231     352,
4232 /**/
4233     351,
4234 /**/
4235     350,
4236 /**/
4237     349,
4238 /**/
4239     348,
4240 /**/
4241     347,
4242 /**/
4243     346,
4244 /**/
4245     345,
4246 /**/
4247     344,
4248 /**/
4249     343,
4250 /**/
4251     342,
4252 /**/
4253     341,
4254 /**/
4255     340,
4256 /**/
4257     339,
4258 /**/
4259     338,
4260 /**/
4261     337,
4262 /**/
4263     336,
4264 /**/
4265     335,
4266 /**/
4267     334,
4268 /**/
4269     333,
4270 /**/
4271     332,
4272 /**/
4273     331,
4274 /**/
4275     330,
4276 /**/
4277     329,
4278 /**/
4279     328,
4280 /**/
4281     327,
4282 /**/
4283     326,
4284 /**/
4285     325,
4286 /**/
4287     324,
4288 /**/
4289     323,
4290 /**/
4291     322,
4292 /**/
4293     321,
4294 /**/
4295     320,
4296 /**/
4297     319,
4298 /**/
4299     318,
4300 /**/
4301     317,
4302 /**/
4303     316,
4304 /**/
4305     315,
4306 /**/
4307     314,
4308 /**/
4309     313,
4310 /**/
4311     312,
4312 /**/
4313     311,
4314 /**/
4315     310,
4316 /**/
4317     309,
4318 /**/
4319     308,
4320 /**/
4321     307,
4322 /**/
4323     306,
4324 /**/
4325     305,
4326 /**/
4327     304,
4328 /**/
4329     303,
4330 /**/
4331     302,
4332 /**/
4333     301,
4334 /**/
4335     300,
4336 /**/
4337     299,
4338 /**/
4339     298,
4340 /**/
4341     297,
4342 /**/
4343     296,
4344 /**/
4345     295,
4346 /**/
4347     294,
4348 /**/
4349     293,
4350 /**/
4351     292,
4352 /**/
4353     291,
4354 /**/
4355     290,
4356 /**/
4357     289,
4358 /**/
4359     288,
4360 /**/
4361     287,
4362 /**/
4363     286,
4364 /**/
4365     285,
4366 /**/
4367     284,
4368 /**/
4369     283,
4370 /**/
4371     282,
4372 /**/
4373     281,
4374 /**/
4375     280,
4376 /**/
4377     279,
4378 /**/
4379     278,
4380 /**/
4381     277,
4382 /**/
4383     276,
4384 /**/
4385     275,
4386 /**/
4387     274,
4388 /**/
4389     273,
4390 /**/
4391     272,
4392 /**/
4393     271,
4394 /**/
4395     270,
4396 /**/
4397     269,
4398 /**/
4399     268,
4400 /**/
4401     267,
4402 /**/
4403     266,
4404 /**/
4405     265,
4406 /**/
4407     264,
4408 /**/
4409     263,
4410 /**/
4411     262,
4412 /**/
4413     261,
4414 /**/
4415     260,
4416 /**/
4417     259,
4418 /**/
4419     258,
4420 /**/
4421     257,
4422 /**/
4423     256,
4424 /**/
4425     255,
4426 /**/
4427     254,
4428 /**/
4429     253,
4430 /**/
4431     252,
4432 /**/
4433     251,
4434 /**/
4435     250,
4436 /**/
4437     249,
4438 /**/
4439     248,
4440 /**/
4441     247,
4442 /**/
4443     246,
4444 /**/
4445     245,
4446 /**/
4447     244,
4448 /**/
4449     243,
4450 /**/
4451     242,
4452 /**/
4453     241,
4454 /**/
4455     240,
4456 /**/
4457     239,
4458 /**/
4459     238,
4460 /**/
4461     237,
4462 /**/
4463     236,
4464 /**/
4465     235,
4466 /**/
4467     234,
4468 /**/
4469     233,
4470 /**/
4471     232,
4472 /**/
4473     231,
4474 /**/
4475     230,
4476 /**/
4477     229,
4478 /**/
4479     228,
4480 /**/
4481     227,
4482 /**/
4483     226,
4484 /**/
4485     225,
4486 /**/
4487     224,
4488 /**/
4489     223,
4490 /**/
4491     222,
4492 /**/
4493     221,
4494 /**/
4495     220,
4496 /**/
4497     219,
4498 /**/
4499     218,
4500 /**/
4501     217,
4502 /**/
4503     216,
4504 /**/
4505     215,
4506 /**/
4507     214,
4508 /**/
4509     213,
4510 /**/
4511     212,
4512 /**/
4513     211,
4514 /**/
4515     210,
4516 /**/
4517     209,
4518 /**/
4519     208,
4520 /**/
4521     207,
4522 /**/
4523     206,
4524 /**/
4525     205,
4526 /**/
4527     204,
4528 /**/
4529     203,
4530 /**/
4531     202,
4532 /**/
4533     201,
4534 /**/
4535     200,
4536 /**/
4537     199,
4538 /**/
4539     198,
4540 /**/
4541     197,
4542 /**/
4543     196,
4544 /**/
4545     195,
4546 /**/
4547     194,
4548 /**/
4549     193,
4550 /**/
4551     192,
4552 /**/
4553     191,
4554 /**/
4555     190,
4556 /**/
4557     189,
4558 /**/
4559     188,
4560 /**/
4561     187,
4562 /**/
4563     186,
4564 /**/
4565     185,
4566 /**/
4567     184,
4568 /**/
4569     183,
4570 /**/
4571     182,
4572 /**/
4573     181,
4574 /**/
4575     180,
4576 /**/
4577     179,
4578 /**/
4579     178,
4580 /**/
4581     177,
4582 /**/
4583     176,
4584 /**/
4585     175,
4586 /**/
4587     174,
4588 /**/
4589     173,
4590 /**/
4591     172,
4592 /**/
4593     171,
4594 /**/
4595     170,
4596 /**/
4597     169,
4598 /**/
4599     168,
4600 /**/
4601     167,
4602 /**/
4603     166,
4604 /**/
4605     165,
4606 /**/
4607     164,
4608 /**/
4609     163,
4610 /**/
4611     162,
4612 /**/
4613     161,
4614 /**/
4615     160,
4616 /**/
4617     159,
4618 /**/
4619     158,
4620 /**/
4621     157,
4622 /**/
4623     156,
4624 /**/
4625     155,
4626 /**/
4627     154,
4628 /**/
4629     153,
4630 /**/
4631     152,
4632 /**/
4633     151,
4634 /**/
4635     150,
4636 /**/
4637     149,
4638 /**/
4639     148,
4640 /**/
4641     147,
4642 /**/
4643     146,
4644 /**/
4645     145,
4646 /**/
4647     144,
4648 /**/
4649     143,
4650 /**/
4651     142,
4652 /**/
4653     141,
4654 /**/
4655     140,
4656 /**/
4657     139,
4658 /**/
4659     138,
4660 /**/
4661     137,
4662 /**/
4663     136,
4664 /**/
4665     135,
4666 /**/
4667     134,
4668 /**/
4669     133,
4670 /**/
4671     132,
4672 /**/
4673     131,
4674 /**/
4675     130,
4676 /**/
4677     129,
4678 /**/
4679     128,
4680 /**/
4681     127,
4682 /**/
4683     126,
4684 /**/
4685     125,
4686 /**/
4687     124,
4688 /**/
4689     123,
4690 /**/
4691     122,
4692 /**/
4693     121,
4694 /**/
4695     120,
4696 /**/
4697     119,
4698 /**/
4699     118,
4700 /**/
4701     117,
4702 /**/
4703     116,
4704 /**/
4705     115,
4706 /**/
4707     114,
4708 /**/
4709     113,
4710 /**/
4711     112,
4712 /**/
4713     111,
4714 /**/
4715     110,
4716 /**/
4717     109,
4718 /**/
4719     108,
4720 /**/
4721     107,
4722 /**/
4723     106,
4724 /**/
4725     105,
4726 /**/
4727     104,
4728 /**/
4729     103,
4730 /**/
4731     102,
4732 /**/
4733     101,
4734 /**/
4735     100,
4736 /**/
4737     99,
4738 /**/
4739     98,
4740 /**/
4741     97,
4742 /**/
4743     96,
4744 /**/
4745     95,
4746 /**/
4747     94,
4748 /**/
4749     93,
4750 /**/
4751     92,
4752 /**/
4753     91,
4754 /**/
4755     90,
4756 /**/
4757     89,
4758 /**/
4759     88,
4760 /**/
4761     87,
4762 /**/
4763     86,
4764 /**/
4765     85,
4766 /**/
4767     84,
4768 /**/
4769     83,
4770 /**/
4771     82,
4772 /**/
4773     81,
4774 /**/
4775     80,
4776 /**/
4777     79,
4778 /**/
4779     78,
4780 /**/
4781     77,
4782 /**/
4783     76,
4784 /**/
4785     75,
4786 /**/
4787     74,
4788 /**/
4789     73,
4790 /**/
4791     72,
4792 /**/
4793     71,
4794 /**/
4795     70,
4796 /**/
4797     69,
4798 /**/
4799     68,
4800 /**/
4801     67,
4802 /**/
4803     66,
4804 /**/
4805     65,
4806 /**/
4807     64,
4808 /**/
4809     63,
4810 /**/
4811     62,
4812 /**/
4813     61,
4814 /**/
4815     60,
4816 /**/
4817     59,
4818 /**/
4819     58,
4820 /**/
4821     57,
4822 /**/
4823     56,
4824 /**/
4825     55,
4826 /**/
4827     54,
4828 /**/
4829     53,
4830 /**/
4831     52,
4832 /**/
4833     51,
4834 /**/
4835     50,
4836 /**/
4837     49,
4838 /**/
4839     48,
4840 /**/
4841     47,
4842 /**/
4843     46,
4844 /**/
4845     45,
4846 /**/
4847     44,
4848 /**/
4849     43,
4850 /**/
4851     42,
4852 /**/
4853     41,
4854 /**/
4855     40,
4856 /**/
4857     39,
4858 /**/
4859     38,
4860 /**/
4861     37,
4862 /**/
4863     36,
4864 /**/
4865     35,
4866 /**/
4867     34,
4868 /**/
4869     33,
4870 /**/
4871     32,
4872 /**/
4873     31,
4874 /**/
4875     30,
4876 /**/
4877     29,
4878 /**/
4879     28,
4880 /**/
4881     27,
4882 /**/
4883     26,
4884 /**/
4885     25,
4886 /**/
4887     24,
4888 /**/
4889     23,
4890 /**/
4891     22,
4892 /**/
4893     21,
4894 /**/
4895     20,
4896 /**/
4897     19,
4898 /**/
4899     18,
4900 /**/
4901     17,
4902 /**/
4903     16,
4904 /**/
4905     15,
4906 /**/
4907     14,
4908 /**/
4909     13,
4910 /**/
4911     12,
4912 /**/
4913     11,
4914 /**/
4915     10,
4916 /**/
4917     9,
4918 /**/
4919     8,
4920 /**/
4921     7,
4922 /**/
4923     6,
4924 /**/
4925     5,
4926 /**/
4927     4,
4928 /**/
4929     3,
4930 /**/
4931     2,
4932 /**/
4933     1,
4934 /**/
4935     0
4936 };
4937 
4938 /*
4939  * Place to put a short description when adding a feature with a patch.
4940  * Keep it short, e.g.,: "relative numbers", "persistent undo".
4941  * Also add a comment marker to separate the lines.
4942  * See the official Vim patches for the diff format: It must use a context of
4943  * one line only.  Create it by hand or use "diff -C2" and edit the patch.
4944  */
4945 static char *(extra_patches[]) =
4946 {   /* Add your patch description below this line */
4947 /**/
4948     NULL
4949 };
4950 
4951     int
4952 highest_patch(void)
4953 {
4954     // this relies on the highest patch number to be the first entry
4955     return included_patches[0];
4956 }
4957 
4958 #if defined(FEAT_EVAL) || defined(PROTO)
4959 /*
4960  * Return TRUE if patch "n" has been included.
4961  */
4962     int
4963 has_patch(int n)
4964 {
4965     int		i;
4966 
4967     for (i = 0; included_patches[i] != 0; ++i)
4968 	if (included_patches[i] == n)
4969 	    return TRUE;
4970     return FALSE;
4971 }
4972 #endif
4973 
4974     void
4975 ex_version(exarg_T *eap)
4976 {
4977     /*
4978      * Ignore a ":version 9.99" command.
4979      */
4980     if (*eap->arg == NUL)
4981     {
4982 	msg_putchar('\n');
4983 	list_version();
4984     }
4985 }
4986 
4987 /*
4988  * Output a string for the version message.  If it's going to wrap, output a
4989  * newline, unless the message is too long to fit on the screen anyway.
4990  * When "wrap" is TRUE wrap the string in [].
4991  */
4992     static void
4993 version_msg_wrap(char_u *s, int wrap)
4994 {
4995     int		len = (int)vim_strsize(s) + (wrap ? 2 : 0);
4996 
4997     if (!got_int && len < (int)Columns && msg_col + len >= (int)Columns
4998 								&& *s != '\n')
4999 	msg_putchar('\n');
5000     if (!got_int)
5001     {
5002 	if (wrap)
5003 	    msg_puts("[");
5004 	msg_puts((char *)s);
5005 	if (wrap)
5006 	    msg_puts("]");
5007     }
5008 }
5009 
5010     static void
5011 version_msg(char *s)
5012 {
5013     version_msg_wrap((char_u *)s, FALSE);
5014 }
5015 
5016 /*
5017  * List all features aligned in columns, dictionary style.
5018  */
5019     static void
5020 list_features(void)
5021 {
5022     list_in_columns((char_u **)features, -1, -1);
5023 }
5024 
5025 /*
5026  * List string items nicely aligned in columns.
5027  * When "size" is < 0 then the last entry is marked with NULL.
5028  * The entry with index "current" is inclosed in [].
5029  */
5030     void
5031 list_in_columns(char_u **items, int size, int current)
5032 {
5033     int		i;
5034     int		ncol;
5035     int		nrow;
5036     int		cur_row = 1;
5037     int		item_count = 0;
5038     int		width = 0;
5039 #ifdef FEAT_SYN_HL
5040     int		use_highlight = (items == (char_u **)features);
5041 #endif
5042 
5043     /* Find the length of the longest item, use that + 1 as the column
5044      * width. */
5045     for (i = 0; size < 0 ? items[i] != NULL : i < size; ++i)
5046     {
5047 	int l = (int)vim_strsize(items[i]) + (i == current ? 2 : 0);
5048 
5049 	if (l > width)
5050 	    width = l;
5051 	++item_count;
5052     }
5053     width += 1;
5054 
5055     if (Columns < width)
5056     {
5057 	// Not enough screen columns - show one per line
5058 	for (i = 0; i < item_count; ++i)
5059 	{
5060 	    version_msg_wrap(items[i], i == current);
5061 	    if (msg_col > 0 && i < item_count - 1)
5062 		msg_putchar('\n');
5063 	}
5064 	return;
5065     }
5066 
5067     // The rightmost column doesn't need a separator.
5068     // Sacrifice it to fit in one more column if possible.
5069     ncol = (int) (Columns + 1) / width;
5070     nrow = item_count / ncol + (item_count % ncol ? 1 : 0);
5071 
5072     // "i" counts columns then rows.  "idx" counts rows then columns.
5073     for (i = 0; !got_int && i < nrow * ncol; ++i)
5074     {
5075 	int idx = (i / ncol) + (i % ncol) * nrow;
5076 
5077 	if (idx < item_count)
5078 	{
5079 	    int last_col = (i + 1) % ncol == 0;
5080 
5081 	    if (idx == current)
5082 		msg_putchar('[');
5083 #ifdef FEAT_SYN_HL
5084 	    if (use_highlight && items[idx][0] == '-')
5085 		msg_puts_attr((char *)items[idx], HL_ATTR(HLF_W));
5086 	    else
5087 #endif
5088 		msg_puts((char *)items[idx]);
5089 	    if (idx == current)
5090 		msg_putchar(']');
5091 	    if (last_col)
5092 	    {
5093 		if (msg_col > 0 && cur_row < nrow)
5094 		    msg_putchar('\n');
5095 		++cur_row;
5096 	    }
5097 	    else
5098 	    {
5099 		while (msg_col % width)
5100 		    msg_putchar(' ');
5101 	    }
5102 	}
5103 	else
5104 	{
5105 	    // this row is out of items, thus at the end of the row
5106 	    if (msg_col > 0)
5107 	    {
5108 		if (cur_row < nrow)
5109 		    msg_putchar('\n');
5110 		++cur_row;
5111 	    }
5112 	}
5113     }
5114 }
5115 
5116     void
5117 list_version(void)
5118 {
5119     int		i;
5120     int		first;
5121     char	*s = "";
5122 
5123     /*
5124      * When adding features here, don't forget to update the list of
5125      * internal variables in eval.c!
5126      */
5127     init_longVersion();
5128     msg(longVersion);
5129 #ifdef MSWIN
5130 # ifdef FEAT_GUI_MSWIN
5131 #  ifdef VIMDLL
5132 #   ifdef _WIN64
5133     msg_puts(_("\nMS-Windows 64-bit GUI/console version"));
5134 #   else
5135     msg_puts(_("\nMS-Windows 32-bit GUI/console version"));
5136 #   endif
5137 #  else
5138 #   ifdef _WIN64
5139     msg_puts(_("\nMS-Windows 64-bit GUI version"));
5140 #   else
5141     msg_puts(_("\nMS-Windows 32-bit GUI version"));
5142 #   endif
5143 #  endif
5144 #  ifdef FEAT_OLE
5145     msg_puts(_(" with OLE support"));
5146 #  endif
5147 # else
5148 #  ifdef _WIN64
5149     msg_puts(_("\nMS-Windows 64-bit console version"));
5150 #  else
5151     msg_puts(_("\nMS-Windows 32-bit console version"));
5152 #  endif
5153 # endif
5154 #endif
5155 #if defined(MACOS_X)
5156 # if defined(MACOS_X_DARWIN)
5157     msg_puts(_("\nmacOS version"));
5158 # else
5159     msg_puts(_("\nmacOS version w/o darwin feat."));
5160 # endif
5161 #endif
5162 
5163 #ifdef VMS
5164     msg_puts(_("\nOpenVMS version"));
5165 # ifdef HAVE_PATHDEF
5166     if (*compiled_arch != NUL)
5167     {
5168 	msg_puts(" - ");
5169 	msg_puts((char *)compiled_arch);
5170     }
5171 # endif
5172 
5173 #endif
5174 
5175     /* Print the list of patch numbers if there is at least one. */
5176     /* Print a range when patches are consecutive: "1-10, 12, 15-40, 42-45" */
5177     if (included_patches[0] != 0)
5178     {
5179 	msg_puts(_("\nIncluded patches: "));
5180 	first = -1;
5181 	/* find last one */
5182 	for (i = 0; included_patches[i] != 0; ++i)
5183 	    ;
5184 	while (--i >= 0)
5185 	{
5186 	    if (first < 0)
5187 		first = included_patches[i];
5188 	    if (i == 0 || included_patches[i - 1] != included_patches[i] + 1)
5189 	    {
5190 		msg_puts(s);
5191 		s = ", ";
5192 		msg_outnum((long)first);
5193 		if (first != included_patches[i])
5194 		{
5195 		    msg_puts("-");
5196 		    msg_outnum((long)included_patches[i]);
5197 		}
5198 		first = -1;
5199 	    }
5200 	}
5201     }
5202 
5203     /* Print the list of extra patch descriptions if there is at least one. */
5204     if (extra_patches[0] != NULL)
5205     {
5206 	msg_puts(_("\nExtra patches: "));
5207 	s = "";
5208 	for (i = 0; extra_patches[i] != NULL; ++i)
5209 	{
5210 	    msg_puts(s);
5211 	    s = ", ";
5212 	    msg_puts(extra_patches[i]);
5213 	}
5214     }
5215 
5216 #ifdef MODIFIED_BY
5217     msg_puts("\n");
5218     msg_puts(_("Modified by "));
5219     msg_puts(MODIFIED_BY);
5220 #endif
5221 
5222 #ifdef HAVE_PATHDEF
5223     if (*compiled_user != NUL || *compiled_sys != NUL)
5224     {
5225 	msg_puts(_("\nCompiled "));
5226 	if (*compiled_user != NUL)
5227 	{
5228 	    msg_puts(_("by "));
5229 	    msg_puts((char *)compiled_user);
5230 	}
5231 	if (*compiled_sys != NUL)
5232 	{
5233 	    msg_puts("@");
5234 	    msg_puts((char *)compiled_sys);
5235 	}
5236     }
5237 #endif
5238 
5239 #ifdef FEAT_HUGE
5240     msg_puts(_("\nHuge version "));
5241 #else
5242 # ifdef FEAT_BIG
5243     msg_puts(_("\nBig version "));
5244 # else
5245 #  ifdef FEAT_NORMAL
5246     msg_puts(_("\nNormal version "));
5247 #  else
5248 #   ifdef FEAT_SMALL
5249     msg_puts(_("\nSmall version "));
5250 #   else
5251     msg_puts(_("\nTiny version "));
5252 #   endif
5253 #  endif
5254 # endif
5255 #endif
5256 #ifndef FEAT_GUI
5257     msg_puts(_("without GUI."));
5258 #else
5259 # ifdef FEAT_GUI_GTK
5260 #  ifdef USE_GTK3
5261     msg_puts(_("with GTK3 GUI."));
5262 #  else
5263 #   ifdef FEAT_GUI_GNOME
5264      msg_puts(_("with GTK2-GNOME GUI."));
5265 #   else
5266      msg_puts(_("with GTK2 GUI."));
5267 #   endif
5268 # endif
5269 # else
5270 #  ifdef FEAT_GUI_MOTIF
5271     msg_puts(_("with X11-Motif GUI."));
5272 #  else
5273 #   ifdef FEAT_GUI_ATHENA
5274 #    ifdef FEAT_GUI_NEXTAW
5275     msg_puts(_("with X11-neXtaw GUI."));
5276 #    else
5277     msg_puts(_("with X11-Athena GUI."));
5278 #    endif
5279 #   else
5280 #     ifdef FEAT_GUI_PHOTON
5281     msg_puts(_("with Photon GUI."));
5282 #     else
5283 #      if defined(MSWIN)
5284     msg_puts(_("with GUI."));
5285 #      else
5286 #	if defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON
5287     msg_puts(_("with Carbon GUI."));
5288 #	else
5289 #	 if defined(TARGET_API_MAC_OSX) && TARGET_API_MAC_OSX
5290     msg_puts(_("with Cocoa GUI."));
5291 #	 else
5292 #	 endif
5293 #	endif
5294 #      endif
5295 #    endif
5296 #   endif
5297 #  endif
5298 # endif
5299 #endif
5300     version_msg(_("  Features included (+) or not (-):\n"));
5301 
5302     list_features();
5303     if (msg_col > 0)
5304 	msg_putchar('\n');
5305 
5306 #ifdef SYS_VIMRC_FILE
5307     version_msg(_("   system vimrc file: \""));
5308     version_msg(SYS_VIMRC_FILE);
5309     version_msg("\"\n");
5310 #endif
5311 #ifdef USR_VIMRC_FILE
5312     version_msg(_("     user vimrc file: \""));
5313     version_msg(USR_VIMRC_FILE);
5314     version_msg("\"\n");
5315 #endif
5316 #ifdef USR_VIMRC_FILE2
5317     version_msg(_(" 2nd user vimrc file: \""));
5318     version_msg(USR_VIMRC_FILE2);
5319     version_msg("\"\n");
5320 #endif
5321 #ifdef USR_VIMRC_FILE3
5322     version_msg(_(" 3rd user vimrc file: \""));
5323     version_msg(USR_VIMRC_FILE3);
5324     version_msg("\"\n");
5325 #endif
5326 #ifdef USR_EXRC_FILE
5327     version_msg(_("      user exrc file: \""));
5328     version_msg(USR_EXRC_FILE);
5329     version_msg("\"\n");
5330 #endif
5331 #ifdef USR_EXRC_FILE2
5332     version_msg(_("  2nd user exrc file: \""));
5333     version_msg(USR_EXRC_FILE2);
5334     version_msg("\"\n");
5335 #endif
5336 #ifdef FEAT_GUI
5337 # ifdef SYS_GVIMRC_FILE
5338     version_msg(_("  system gvimrc file: \""));
5339     version_msg(SYS_GVIMRC_FILE);
5340     version_msg("\"\n");
5341 # endif
5342     version_msg(_("    user gvimrc file: \""));
5343     version_msg(USR_GVIMRC_FILE);
5344     version_msg("\"\n");
5345 # ifdef USR_GVIMRC_FILE2
5346     version_msg(_("2nd user gvimrc file: \""));
5347     version_msg(USR_GVIMRC_FILE2);
5348     version_msg("\"\n");
5349 # endif
5350 # ifdef USR_GVIMRC_FILE3
5351     version_msg(_("3rd user gvimrc file: \""));
5352     version_msg(USR_GVIMRC_FILE3);
5353     version_msg("\"\n");
5354 # endif
5355 #endif
5356     version_msg(_("       defaults file: \""));
5357     version_msg(VIM_DEFAULTS_FILE);
5358     version_msg("\"\n");
5359 #ifdef FEAT_GUI
5360 # ifdef SYS_MENU_FILE
5361     version_msg(_("    system menu file: \""));
5362     version_msg(SYS_MENU_FILE);
5363     version_msg("\"\n");
5364 # endif
5365 #endif
5366 #ifdef HAVE_PATHDEF
5367     if (*default_vim_dir != NUL)
5368     {
5369 	version_msg(_("  fall-back for $VIM: \""));
5370 	version_msg((char *)default_vim_dir);
5371 	version_msg("\"\n");
5372     }
5373     if (*default_vimruntime_dir != NUL)
5374     {
5375 	version_msg(_(" f-b for $VIMRUNTIME: \""));
5376 	version_msg((char *)default_vimruntime_dir);
5377 	version_msg("\"\n");
5378     }
5379     version_msg(_("Compilation: "));
5380     version_msg((char *)all_cflags);
5381     version_msg("\n");
5382 #ifdef VMS
5383     if (*compiler_version != NUL)
5384     {
5385 	version_msg(_("Compiler: "));
5386 	version_msg((char *)compiler_version);
5387 	version_msg("\n");
5388     }
5389 #endif
5390     version_msg(_("Linking: "));
5391     version_msg((char *)all_lflags);
5392 #endif
5393 #ifdef DEBUG
5394     version_msg("\n");
5395     version_msg(_("  DEBUG BUILD"));
5396 #endif
5397 }
5398 
5399 static void do_intro_line(int row, char_u *mesg, int add_version, int attr);
5400 
5401 /*
5402  * Show the intro message when not editing a file.
5403  */
5404     void
5405 maybe_intro_message(void)
5406 {
5407     if (BUFEMPTY()
5408 	    && curbuf->b_fname == NULL
5409 	    && firstwin->w_next == NULL
5410 	    && vim_strchr(p_shm, SHM_INTRO) == NULL)
5411 	intro_message(FALSE);
5412 }
5413 
5414 /*
5415  * Give an introductory message about Vim.
5416  * Only used when starting Vim on an empty file, without a file name.
5417  * Or with the ":intro" command (for Sven :-).
5418  */
5419     void
5420 intro_message(
5421     int		colon)		/* TRUE for ":intro" */
5422 {
5423     int		i;
5424     int		row;
5425     int		blanklines;
5426     int		sponsor;
5427     char	*p;
5428     static char	*(lines[]) =
5429     {
5430 	N_("VIM - Vi IMproved"),
5431 	"",
5432 	N_("version "),
5433 	N_("by Bram Moolenaar et al."),
5434 #ifdef MODIFIED_BY
5435 	" ",
5436 #endif
5437 	N_("Vim is open source and freely distributable"),
5438 	"",
5439 	N_("Help poor children in Uganda!"),
5440 	N_("type  :help iccf<Enter>       for information "),
5441 	"",
5442 	N_("type  :q<Enter>               to exit         "),
5443 	N_("type  :help<Enter>  or  <F1>  for on-line help"),
5444 	N_("type  :help version8<Enter>   for version info"),
5445 	NULL,
5446 	"",
5447 	N_("Running in Vi compatible mode"),
5448 	N_("type  :set nocp<Enter>        for Vim defaults"),
5449 	N_("type  :help cp-default<Enter> for info on this"),
5450     };
5451 #ifdef FEAT_GUI
5452     static char	*(gui_lines[]) =
5453     {
5454 	NULL,
5455 	NULL,
5456 	NULL,
5457 	NULL,
5458 #ifdef MODIFIED_BY
5459 	NULL,
5460 #endif
5461 	NULL,
5462 	NULL,
5463 	NULL,
5464 	N_("menu  Help->Orphans           for information    "),
5465 	NULL,
5466 	N_("Running modeless, typed text is inserted"),
5467 	N_("menu  Edit->Global Settings->Toggle Insert Mode  "),
5468 	N_("                              for two modes      "),
5469 	NULL,
5470 	NULL,
5471 	NULL,
5472 	N_("menu  Edit->Global Settings->Toggle Vi Compatible"),
5473 	N_("                              for Vim defaults   "),
5474     };
5475 #endif
5476 
5477     /* blanklines = screen height - # message lines */
5478     blanklines = (int)Rows - ((sizeof(lines) / sizeof(char *)) - 1);
5479     if (!p_cp)
5480 	blanklines += 4;  /* add 4 for not showing "Vi compatible" message */
5481 
5482     /* Don't overwrite a statusline.  Depends on 'cmdheight'. */
5483     if (p_ls > 1)
5484 	blanklines -= Rows - topframe->fr_height;
5485     if (blanklines < 0)
5486 	blanklines = 0;
5487 
5488     /* Show the sponsor and register message one out of four times, the Uganda
5489      * message two out of four times. */
5490     sponsor = (int)time(NULL);
5491     sponsor = ((sponsor & 2) == 0) - ((sponsor & 4) == 0);
5492 
5493     /* start displaying the message lines after half of the blank lines */
5494     row = blanklines / 2;
5495     if ((row >= 2 && Columns >= 50) || colon)
5496     {
5497 	for (i = 0; i < (int)(sizeof(lines) / sizeof(char *)); ++i)
5498 	{
5499 	    p = lines[i];
5500 #ifdef FEAT_GUI
5501 	    if (p_im && gui.in_use && gui_lines[i] != NULL)
5502 		p = gui_lines[i];
5503 #endif
5504 	    if (p == NULL)
5505 	    {
5506 		if (!p_cp)
5507 		    break;
5508 		continue;
5509 	    }
5510 	    if (sponsor != 0)
5511 	    {
5512 		if (strstr(p, "children") != NULL)
5513 		    p = sponsor < 0
5514 			? N_("Sponsor Vim development!")
5515 			: N_("Become a registered Vim user!");
5516 		else if (strstr(p, "iccf") != NULL)
5517 		    p = sponsor < 0
5518 			? N_("type  :help sponsor<Enter>    for information ")
5519 			: N_("type  :help register<Enter>   for information ");
5520 		else if (strstr(p, "Orphans") != NULL)
5521 		    p = N_("menu  Help->Sponsor/Register  for information    ");
5522 	    }
5523 	    if (*p != NUL)
5524 		do_intro_line(row, (char_u *)_(p), i == 2, 0);
5525 	    ++row;
5526 	}
5527     }
5528 
5529     /* Make the wait-return message appear just below the text. */
5530     if (colon)
5531 	msg_row = row;
5532 }
5533 
5534     static void
5535 do_intro_line(
5536     int		row,
5537     char_u	*mesg,
5538     int		add_version,
5539     int		attr)
5540 {
5541     char_u	vers[20];
5542     int		col;
5543     char_u	*p;
5544     int		l;
5545     int		clen;
5546 #ifdef MODIFIED_BY
5547 # define MODBY_LEN 150
5548     char_u	modby[MODBY_LEN];
5549 
5550     if (*mesg == ' ')
5551     {
5552 	vim_strncpy(modby, (char_u *)_("Modified by "), MODBY_LEN - 1);
5553 	l = (int)STRLEN(modby);
5554 	vim_strncpy(modby + l, (char_u *)MODIFIED_BY, MODBY_LEN - l - 1);
5555 	mesg = modby;
5556     }
5557 #endif
5558 
5559     /* Center the message horizontally. */
5560     col = vim_strsize(mesg);
5561     if (add_version)
5562     {
5563 	STRCPY(vers, mediumVersion);
5564 	if (highest_patch())
5565 	{
5566 	    /* Check for 9.9x or 9.9xx, alpha/beta version */
5567 	    if (isalpha((int)vers[3]))
5568 	    {
5569 		int len = (isalpha((int)vers[4])) ? 5 : 4;
5570 		sprintf((char *)vers + len, ".%d%s", highest_patch(),
5571 							 mediumVersion + len);
5572 	    }
5573 	    else
5574 		sprintf((char *)vers + 3, ".%d", highest_patch());
5575 	}
5576 	col += (int)STRLEN(vers);
5577     }
5578     col = (Columns - col) / 2;
5579     if (col < 0)
5580 	col = 0;
5581 
5582     /* Split up in parts to highlight <> items differently. */
5583     for (p = mesg; *p != NUL; p += l)
5584     {
5585 	clen = 0;
5586 	for (l = 0; p[l] != NUL
5587 			 && (l == 0 || (p[l] != '<' && p[l - 1] != '>')); ++l)
5588 	{
5589 	    if (has_mbyte)
5590 	    {
5591 		clen += ptr2cells(p + l);
5592 		l += (*mb_ptr2len)(p + l) - 1;
5593 	    }
5594 	    else
5595 		clen += byte2cells(p[l]);
5596 	}
5597 	screen_puts_len(p, l, row, col, *p == '<' ? HL_ATTR(HLF_8) : attr);
5598 	col += clen;
5599     }
5600 
5601     /* Add the version number to the version line. */
5602     if (add_version)
5603 	screen_puts(vers, row, col, 0);
5604 }
5605 
5606 /*
5607  * ":intro": clear screen, display intro screen and wait for return.
5608  */
5609     void
5610 ex_intro(exarg_T *eap UNUSED)
5611 {
5612     screenclear();
5613     intro_message(TRUE);
5614     wait_return(TRUE);
5615 }
5616