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