texlive[55553] Build/source/texk: opendetex-2.8.7

commits+hironobu at tug.org commits+hironobu at tug.org
Mon Jun 15 13:23:15 CEST 2020


Revision: 55553
          http://tug.org/svn/texlive?view=revision&revision=55553
Author:   hironobu
Date:     2020-06-15 13:23:15 +0200 (Mon, 15 Jun 2020)
Log Message:
-----------
opendetex-2.8.7

Modified Paths:
--------------
    trunk/Build/source/texk/README
    trunk/Build/source/texk/detex/ChangeLog
    trunk/Build/source/texk/detex/configure
    trunk/Build/source/texk/detex/configure.ac
    trunk/Build/source/texk/detex/detex-src/ChangeLog
    trunk/Build/source/texk/detex/detex-src/Makefile
    trunk/Build/source/texk/detex/detex-src/README
    trunk/Build/source/texk/detex/detex-src/detex.c
    trunk/Build/source/texk/detex/detex-src/detex.h
    trunk/Build/source/texk/detex/detex-src/detex.l
    trunk/Build/source/texk/detex/detex-src/detex.man

Modified: trunk/Build/source/texk/README
===================================================================
--- trunk/Build/source/texk/README	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/README	2020-06-15 11:23:15 UTC (rev 55553)
@@ -34,7 +34,7 @@
 cjkutils 4.8.4 - checked 18apr15
   http://cjk.ffii.org/cjk-4.8.4.tar.gz
 
-detex 2.8.6 - checked 15mar20
+detex 2.8.7 - checked 15jun20
   https://github.com/pkubowicz/opendetex/releases
     old info: http://www.cs.purdue.edu/homes/trinkle/detex/
 

Modified: trunk/Build/source/texk/detex/ChangeLog
===================================================================
--- trunk/Build/source/texk/detex/ChangeLog	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/ChangeLog	2020-06-15 11:23:15 UTC (rev 55553)
@@ -1,3 +1,7 @@
+2020-06-15  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* Import opendetex-2.8.7.
+
 2020-03-15  Karl Berry  <karl at freefriends.org>
 
 	* opendetex-2.8.6 is identical to what we compiled before.

Modified: trunk/Build/source/texk/detex/configure
===================================================================
--- trunk/Build/source/texk/detex/configure	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/configure	2020-06-15 11:23:15 UTC (rev 55553)
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for detex (TeX Live) 2.8.5.
+# Generated by GNU Autoconf 2.69 for detex (TeX Live) 2.8.7.
 #
 # Report bugs to <tex-k at tug.org>.
 #
@@ -590,8 +590,8 @@
 # Identity of this package.
 PACKAGE_NAME='detex (TeX Live)'
 PACKAGE_TARNAME='detex--tex-live-'
-PACKAGE_VERSION='2.8.5'
-PACKAGE_STRING='detex (TeX Live) 2.8.5'
+PACKAGE_VERSION='2.8.7'
+PACKAGE_STRING='detex (TeX Live) 2.8.7'
 PACKAGE_BUGREPORT='tex-k at tug.org'
 PACKAGE_URL=''
 
@@ -1331,7 +1331,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures detex (TeX Live) 2.8.5 to adapt to many kinds of systems.
+\`configure' configures detex (TeX Live) 2.8.7 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1402,7 +1402,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of detex (TeX Live) 2.8.5:";;
+     short | recursive ) echo "Configuration of detex (TeX Live) 2.8.7:";;
    esac
   cat <<\_ACEOF
 
@@ -1521,7 +1521,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-detex (TeX Live) configure 2.8.5
+detex (TeX Live) configure 2.8.7
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2177,7 +2177,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by detex (TeX Live) $as_me 2.8.5, which was
+It was created by detex (TeX Live) $as_me 2.8.7, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -7864,7 +7864,7 @@
 
 # Define the identity of the package.
  PACKAGE='detex--tex-live-'
- VERSION='2.8.5'
+ VERSION='2.8.7'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -14080,7 +14080,7 @@
 Report bugs to <bug-libtool at gnu.org>."
 
 lt_cl_version="\
-detex (TeX Live) config.lt 2.8.5
+detex (TeX Live) config.lt 2.8.7
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -15668,7 +15668,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by detex (TeX Live) $as_me 2.8.5, which was
+This file was extended by detex (TeX Live) $as_me 2.8.7, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -15734,7 +15734,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-detex (TeX Live) config.status 2.8.5
+detex (TeX Live) config.status 2.8.7
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 

Modified: trunk/Build/source/texk/detex/configure.ac
===================================================================
--- trunk/Build/source/texk/detex/configure.ac	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/configure.ac	2020-06-15 11:23:15 UTC (rev 55553)
@@ -6,7 +6,7 @@
 dnl   gives unlimited permission to copy and/or distribute it,
 dnl   with or without modifications, as long as this notice is preserved.
 dnl
-m4_define([detex_version], [2.8.5])[]dnl using unmodified detex source tree
+m4_define([detex_version], [2.8.7])[]dnl using unmodified detex source tree
 AC_INIT([detex (TeX Live)], detex_version, [tex-k at tug.org])
 AC_PREREQ([2.65])
 AC_CONFIG_SRCDIR([detex-src/detex.l])

Modified: trunk/Build/source/texk/detex/detex-src/ChangeLog
===================================================================
--- trunk/Build/source/texk/detex/detex-src/ChangeLog	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/ChangeLog	2020-06-15 11:23:15 UTC (rev 55553)
@@ -190,3 +190,15 @@
 Fixed man page on macOS (#47). Thanks to FX Coudert.
 
 Added -v option for showing version.
+
+(Version 2.8.6) -- January, 2020
+
+Fixed buffer overflow (CVE-2019-19601 #60). Thanks to Akira Kakuto, Norbert Preining and TeX Live team.
+
+(Version 2.8.7) -- June, 2020
+
+Reduced size of .tar.bz2 package by excluding object file added by mistake.
+
+Handle forcing placement with ! (#62). Thanks to schrc3b6.
+
+Added option to print source information with -1 (#64). Thanks to Victor Cacciari Miraldo.

Modified: trunk/Build/source/texk/detex/detex-src/Makefile
===================================================================
--- trunk/Build/source/texk/detex/detex-src/Makefile	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/Makefile	2020-06-15 11:23:15 UTC (rev 55553)
@@ -105,7 +105,7 @@
 #
 D_OBJ	= detex.o
 
-VERSION = 2.8.5
+VERSION = 2.8.7
 
 all:	${PROGS}
 
@@ -151,7 +151,7 @@
 	./delatex in > out.txt
 
 package: clean detex.c
-	tar cjfv opendetex-${VERSION}.tar.bz2 ChangeLog COPYRIGHT detex.* INSTALL Makefile README
+	tar cjfv opendetex-${VERSION}.tar.bz2 --exclude='*.o' ChangeLog COPYRIGHT detex.* INSTALL Makefile README
 
 # Dependencies
 #

Modified: trunk/Build/source/texk/detex/detex-src/README
===================================================================
--- trunk/Build/source/texk/detex/detex-src/README	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/README	2020-06-15 11:23:15 UTC (rev 55553)
@@ -1,4 +1,4 @@
-OpenDetex - Version 2.8.5
+OpenDetex - Version 2.8.7
 
 OpenDetex is a program to remove TeX constructs from a text file.  It recognizes
 the \input command.

Modified: trunk/Build/source/texk/detex/detex-src/detex.c
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.c	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/detex.c	2020-06-15 11:23:15 UTC (rev 55553)
@@ -36,7 +36,7 @@
  */
 
 /*
- * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex] ]
+ * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [-1] [file[.tex] ]
  *
  *	This program is used to remove TeX or LaTeX constructs from a text
  *	file.
@@ -609,14 +609,14 @@
         1,    4,    5,    1,    1,    6,    7,    1,    8,    9,
        10,   11,   12,   13,   14,   15,    1,   16,   16,   16,
        16,   16,   17,   17,   17,   17,   17,    1,    1,   18,
-       19,   20,    5,   21,   22,   23,   23,   23,   24,   23,
-       23,   23,   23,   23,   23,   25,   23,   23,   26,   23,
-       23,   23,   23,   23,   23,   23,   23,   23,   23,   23,
-       27,   28,   29,    1,    1,   30,   31,   32,   33,   34,
+       19,   20,   21,   22,   23,   24,   24,   24,   25,   24,
+       24,   24,   24,   24,   24,   26,   24,   24,   27,   24,
+       24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
+       28,   29,   30,    1,    1,   31,   32,   33,   34,   35,
 
-       35,   36,   37,   38,   39,   25,   40,   41,   42,   43,
-       44,   45,   46,   47,   48,   49,   50,   51,   52,   53,
-       54,   55,   56,   57,   58,   59,    1,    1,    1,    1,
+       36,   37,   38,   39,   40,   26,   41,   42,   43,   44,
+       45,   46,   47,   48,   49,   50,   51,   52,   53,   54,
+       55,   56,   57,   58,   59,   60,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -633,174 +633,174 @@
         1,    1,    1,    1,    1
     } ;
 
-static const YY_CHAR yy_meta[60] =
+static const YY_CHAR yy_meta[61] =
     {   0,
-        1,    2,    3,    2,    1,    1,    1,    4,    1,    1,
-        1,    1,    5,    6,    1,    6,    6,    1,    6,    1,
-        7,    8,    8,    8,    8,    8,    1,    9,   10,    6,
-        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,    8,    8,    8,    8,    8,    8,    8,    8,
-        8,    8,    8,    8,    8,   11,    1,   12,    1
+        1,    2,    3,    2,    4,    1,    1,    5,    1,    1,
+        1,    1,    6,    7,    1,    7,    7,    1,    7,    1,
+        1,    8,    9,    9,    9,    9,    9,    1,   10,   11,
+        7,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        9,    9,    9,    9,    9,    9,   12,    1,   13,    1
     } ;
 
 static const flex_int16_t yy_base[1415] =
     {   0,
-        0,    0,    0,    1,    2,    6,   14,   29,   11,   33,
-       40,   45,   93,    0,  152,    0,  211,    0,  268,  271,
-      319,    0,   16,   25,  376,  379,  381,  384,  387,  398,
-       20,  378, 3305, 3304,  390,  403,   26,   37,   46,   49,
-     3316, 3315,   23,   24, 3330, 3335, 3335, 3335, 3335, 3335,
-     3335, 3323, 3335,  236, 3278,    0, 3335, 3324, 3335,    0,
-     3335, 3323, 3335, 3335, 3335, 3335,  266, 3275, 3335, 3322,
-     3335, 3295, 3292, 3315,    0, 3312, 3306, 3304,   22, 3309,
-      461, 3286,  396, 3335, 3335, 3335, 3335,  519, 3335,    0,
-      287,    0, 3259, 3335,  522,  525,    0,  528, 3335, 3335,
+        0,    0,    0,    1,    2,    6,   14,   26,   11,   30,
+       43,   47,   96,    0,  156,    0,  216,    0,  274,  277,
+      326,    0,    7,    8,  384,  387,  389,  392,  395,  406,
+       20,  386, 3340, 3339,  398,  409,   39,   44,   16,   35,
+     3352, 3351,   21,   25, 3366, 3371, 3371, 3371, 3371, 3371,
+     3371, 3359, 3371,  241, 3313,    0, 3371, 3360, 3371,    0,
+     3371, 3359, 3371, 3371, 3371, 3371,  272, 3310, 3371, 3358,
+     3371, 3330, 3327, 3351,    0, 3348, 3342, 3340,   24, 3345,
+      468, 3321,  403, 3371, 3371, 3371, 3371,  527, 3371,    0,
+      294,    0, 3294, 3371,  530,  533,    0,  536, 3371, 3371,
 
-     3335,  504, 3264, 3335,    0, 3335, 3335, 3310, 3277, 3335,
-     3335, 3335,  410, 3261,    0, 3335, 3307,    0, 3335, 3306,
-     3335, 3335, 3335, 3305,    0, 3335, 3335, 3335, 3335, 3335,
-     3335, 3335,    0,    0, 3272, 3335,    0, 3335,  278, 3335,
-     3271, 3262, 3269, 3272, 3267,   36, 3269,    0, 3297,    0,
-     3296, 3335, 3263, 3254, 3261, 3264, 3259,  244, 3261, 3290,
-     3258, 3335, 3335,    0, 3335, 3335, 3275,   45, 3268, 3243,
-     3335, 3335, 3335,    0,   68,  532,  535, 3335,  265,  384,
-        6,  274,  258, 3207,  267,  250,  546, 3214,  552,  390,
-      559, 3203,  391,  564,  393, 3175,   36, 3335,  550,  416,
+     3371,  511, 3299, 3371,    0, 3371, 3371, 3346, 3312, 3371,
+     3371, 3371,  418, 3296,    0, 3371, 3343,    0, 3371, 3342,
+     3371, 3371, 3371, 3341,    0, 3371, 3371, 3371, 3371, 3371,
+     3371, 3371,    0,    0, 3307, 3371,    0, 3371,   91, 3371,
+     3306, 3297, 3304, 3307, 3302,    3, 3304,    0, 3333,    0,
+     3332, 3371, 3298, 3289, 3296, 3299, 3294,   35, 3296, 3326,
+     3293, 3371, 3371,    0, 3371, 3371, 3312,   43, 3317, 3316,
+     3371, 3371, 3371,    0,   65,  540,  543, 3371,  271,  269,
+       16,  279,  253, 3279,  266,  372,  554, 3286,  560,  255,
+      567, 3289,  393,  572,  281, 3271,  273, 3371,  407,  414,
 
-      556,  572, 3150,    0,    0,  592,    0,  582,  605,    0,
-      616, 3166, 3157, 3164, 3153, 3335, 3150, 3134, 3141, 3142,
-     3137,  353, 3139,    0, 3157, 3107, 3335, 3114, 3099, 3105,
-     3108, 2897,  405, 2899,    0, 2927,    0, 2926, 3335,    0,
-        0, 2885,    0,  621,  627, 2881, 3335, 2880, 2880, 2878,
-     2881,  265, 2874, 2875, 3335, 2874, 2874, 2872, 2874,  384,
-     2867, 2875, 3335, 2905,    0,  630,  633, 3335, 2885, 2882,
-     2876, 2872, 2876, 2876, 2857, 2864, 2868, 2869, 2867, 2856,
-      514,  369, 2854,  535, 2851, 2865, 2853, 2853, 2842,  413,
-     2854,  603, 2839, 2835, 2841, 2853,  408, 2852, 2847, 2849,
+      425,  563, 3262,    0,    0,  558,    0,  572,  591,    0,
+      607, 3278, 3277, 3284, 3279, 3371, 3278, 3269, 3276, 3279,
+     3274,  360, 3276,    0, 3305, 3263, 3371, 3270, 3261, 3268,
+     3271, 3266,  399, 3268,    0, 3297,    0, 3296, 3371,    0,
+        0, 3254,    0,  578,  613, 3250, 3371, 3249, 3249, 3247,
+     3250,  401, 3243, 3244, 3371, 3243, 3243, 3241, 3244,  515,
+     3237, 3245, 3371, 3276,    0,  628,  633, 3371, 3255, 3252,
+     3246, 3242, 3246, 3246, 3227, 3234, 3238, 3240, 3238, 3227,
+      602,  418, 3225,  605, 3222, 3236, 3224, 3224, 3213,   43,
+     3225,  611, 3214, 3211, 3217, 3229,  551, 3228, 3223, 3225,
 
-     2827, 2836, 2839, 2826,  542,  599,  586, 2823, 2834, 2827,
-     2837, 2821, 2821, 3335, 2820, 2820, 2818, 2821,  595, 2814,
-     2827, 2813, 3335, 2812, 2812, 2810, 2813,  610, 2806, 2819,
-     2804, 2803, 2802, 2814, 2800, 2799, 2797, 2809, 2794,  646,
-     3335, 2813, 3335,  624, 2802,  503, 2795, 2804, 2794, 2798,
-     2786,    0, 2790, 2788, 2779, 2778, 2787, 2794, 2789, 2782,
-     2783, 2767, 2773, 2780, 2779, 2778,  628, 2777,  640, 2763,
-     2769, 2774, 2769, 2776, 2771, 2752, 2763, 2753,  629, 2753,
-     2755,  632, 2750, 2750,  621, 2765, 2757, 2764,  665, 2736,
-     2743, 2753, 2750, 2758, 2740, 2739, 2738, 2750, 3335, 2736,
+     3203, 3216, 3219, 3206,  537,  608,  580, 3203, 3214, 3207,
+     3217, 3201, 3201, 3371, 3200, 3200, 3198, 3201,  612, 3194,
+     3207, 3194, 3371, 3193, 3193, 3191, 3194,  616, 3187, 3200,
+     3185, 3184, 3183, 3195, 3181, 3180, 3179, 3191, 3176,  661,
+     3371, 3195, 3371,  619, 3184,  510, 3177, 3186, 3176, 3180,
+     3168,    0, 3176, 3175, 3166, 3165, 3174, 3181, 3176, 3169,
+     3174, 3158, 3164, 3171, 3170, 3169,  632, 3168,  640, 3154,
+     3160, 3165, 3160, 3167, 3162, 3143, 3154, 3145,  633, 3145,
+     3147,  633, 3142, 3142,  643, 3157, 3149, 3156,  661, 3128,
+     3134, 3131, 3117, 3125, 3108, 3107, 3104, 3116, 3371, 3102,
 
-     2735, 2734, 2746,  681, 2731, 2744, 2739, 2723, 2722, 2735,
-     2734, 2719, 2732, 2722, 2717, 2716, 2711, 2715, 2708, 2717,
-     2706, 2705,    0, 2706, 2709, 2709, 2706, 2711, 2700, 2704,
-     2700, 2711, 2696, 2692, 2688, 2691,  736, 2698, 2706, 2690,
-     2692, 2692, 2699, 2702,  646, 2694, 2686, 2718, 2693, 2692,
-     2674, 2670, 2675, 2691,    0, 2687, 2678, 2671, 2679, 2669,
-     2674, 2678, 2671, 2678,  388, 2671, 2658, 2658, 2670,    0,
-     2655, 2666, 3335, 2651, 2652, 2661, 2664, 2645, 2658, 2657,
-     2641, 2640, 2653, 2652, 2637,  693,  696, 2641, 2635, 2634,
-     2647, 2637, 2627, 2625, 2638, 3335, 2629, 2628,  668, 2625,
+     3101, 3083, 3095,  682, 3080, 3078, 3066, 3033, 3032, 3036,
+     3035, 3014, 3025, 3007, 3006, 3003, 2998, 3002, 2984, 2983,
+     2972, 2965,    0, 2964, 2967, 2744, 2741, 2746, 2735, 2739,
+     2736, 2747, 2732, 2728, 2724, 2727,  694, 2734, 2742, 2726,
+     2728, 2727, 2734, 2737,  646, 2730, 2722, 2755, 2729, 2728,
+     2710, 2706, 2711, 2727,    0, 2723, 2717, 2711, 2719, 2709,
+     2714, 2718, 2711, 2718,  576, 2715, 2702, 2702, 2710,    0,
+     2694, 2705, 3371, 2690, 2691, 2700, 2703, 2684, 2693, 2692,
+     2677, 2676, 2689, 2688, 2673,  697,  700, 2677, 2671, 2670,
+     2683, 2673, 2667, 2666, 2679, 3371, 2669, 2668,  671, 2665,
 
-      703, 2634, 2624, 2609, 2627, 2629, 2625, 2624, 2611, 2622,
-     2611, 2611,  763, 2619, 2605, 2618,    0,    0,  790,  696,
-      670,  817,    0,    0, 2604, 2614,  666, 2597, 2604, 2595,
-     2601, 2609, 2594, 2595, 2588, 3335, 2608, 2602, 2600, 2597,
-     2596, 2586, 2597, 2584, 2577, 2579,  680,    0, 2577, 2579,
-     2572, 2585, 2585, 2572, 2584, 2561, 2580,  864, 2577, 2576,
-     2579,  718, 2559, 2563, 2557, 2556, 2569, 2559, 2553, 2552,
-     2565,  721, 2564, 2559, 2546, 2556, 2544, 2540, 2539, 2543,
-     2551, 2550,  725,  739, 2538, 2542, 2537, 2530, 2532, 2542,
-     2531, 2541, 2541, 2536, 2521,  891,  718,  686,  918,    0,
+      712, 2674, 2664, 2653, 2671, 2673, 2669, 2668, 2655, 2666,
+     2655, 2654,  715, 2662, 2648, 2661,    0,    0,  731,  709,
+      705,  768,    0,    0, 2647, 2658,  685, 2641, 2648, 2639,
+     2645, 2653, 2634, 2634, 2627, 3371, 2647, 2645, 2644, 2641,
+     2640, 2626, 2637, 2624, 2617, 2623,  702,    0, 2621, 2623,
+     2616, 2629, 2629, 2616, 2628, 2605, 2624,  747, 2621, 2619,
+     2622,  754, 2603, 2607, 2601, 2600, 2613, 2603, 2597, 2596,
+     2609,  763, 2608, 2607, 2594, 2604, 2592, 2588, 2587, 2591,
+     2599, 2602,  771,  775, 2590, 2594, 2589, 2578, 2579, 2589,
+     2578, 2588, 2588, 2583, 2568,  778,  771,  780,  827,    0,
 
-      752, 2534, 2532,  729,  714,  741, 2521,  684, 2531, 2522,
-     2520, 2520,  610, 2516,  758, 2525, 2523, 2516, 2510, 2512,
-     2513, 2514, 2507, 2511, 2492, 2514,    0, 2496, 2490, 2493,
-     2504, 2502, 2480, 2487, 2487, 2481, 2486, 2487, 2486, 2481,
-     2468, 2482, 2485, 2466, 2466, 2471, 2474,    0, 2467,  965,
-      753,  766,  992,    0,  784,  795, 2469,  811,  808, 2466,
-     2469, 2457, 2467, 2455, 2452, 2452, 2447, 2457, 2455, 2440,
-     2446, 2455,  820, 2442,    0, 2438, 2442, 2465, 2419, 2422,
-     2416, 2419, 2428, 2427, 2424,  810,  768,  773, 2412,  767,
-     2421, 2408, 2406, 2406,  641, 2402,  840,  827,  834, 1039,
+      821, 2577, 2576,  783,  789,  802, 2565,  401, 2575, 2566,
+     2564, 2564,  557, 2560,  818, 2569, 2567, 2560, 2558, 2561,
+     2562, 2563, 2555, 2559, 2540, 2562,    0, 2548, 2542, 2546,
+     2557, 2556, 2534, 2542, 2542, 2541, 2545, 2546, 2545, 2540,
+     2528, 2542, 2545, 2526, 2526, 2532, 2535,    0, 2527,  835,
+      818,  810,  877,    0,  880,  855, 2528,  883,  893, 2525,
+     2528, 2516, 2526, 2514, 2512, 2508, 2506, 2516, 2514, 2499,
+     2505, 2514,  896, 2502,    0, 2498, 2509, 2532, 2487, 2495,
+     2489, 2492, 2501, 2501, 2498,  838,  824,  829, 2487,  618,
+     2497, 2488, 2482, 2481,  822, 2477,  886,  899,  902,  931,
 
-     2394,  759,  800,  843,  868, 2411,    0, 2407, 2388, 2383,
-     2380, 2396, 2383,    0, 2384, 2379, 2365, 2385, 2373, 2370,
-     2368,    0, 2358, 2388, 2349, 2343, 2345, 2349, 2353, 2335,
-        0, 2339, 2335, 2338, 2317, 2325, 2325,  858,  841,  844,
-     2309,  806, 2319, 2299, 2304, 2296,  851, 2288,  884,  908,
-      914, 1066,  928,  911, 2289,  921,    0, 2281, 2275, 2274,
-     2278, 2266, 2270, 2261, 2265, 2266, 2266, 2267,    0, 3335,
-        0, 2247,  856, 2234,    0,    0,  565,  847,  894,  942,
-      971,  987,    0,  925,  885, 1093,    0, 2236, 2238, 2234,
-     2226, 2221, 2228, 2215, 2220, 2207, 2147, 2158, 2153,    0,
+     2472,  771,  849,  905,  936, 2488,    0, 2487, 2468, 2465,
+     2461, 2477, 2463,    0, 2465, 2460, 2449, 2469, 2458, 2446,
+     2445,    0, 2435, 2470, 2430, 2428, 2431, 2431, 2435, 2424,
+        0, 2424, 2421, 2424, 2414, 2413, 2415,  934,  852,  858,
+     2396,  881, 2391, 2366, 2375, 2375,  891, 2369,  950,  959,
+      962,  965,  968,  971, 2372,  981,    0, 2364, 2353, 2350,
+     2363, 2343, 2350, 2340, 2345, 2345, 2346, 2346,    0, 3371,
+        0, 2335,  584, 2322,    0,    0,  820,  902,  985,  998,
+     1002, 1008,    0,  975,  911, 1053,    0, 2320, 2315, 2309,
+     2311, 2303, 2310, 2300, 2305, 2294, 2290, 2300, 2296,    0,
 
-     2146, 2146, 2134, 2131,    0, 3335, 2148, 2140, 2128, 2139,
-     2126, 2125,   36,  241,  282,  333,  416,  485,  911, 1002,
-     1015, 1019, 1046,    0,  939,  942, 1140,    0, 1071,    0,
-     1082,  511, 1100,  529,  539,  567,  577,  596,  996,  614,
-      647,  671,  678,  687,    0,    0, 3335,  732,  733, 1103,
-     1109,  986,  945,  955,  756,  943,  794,  799,  812,  835,
-      916,  846, 1118,  854,  878,  896,  916,  913,  931,  940,
-        0,  935,    0,    0,  981,  944,  980, 1001,    0,  967,
-        0,  977,  982,  992,  998, 1004,  993,  989,    0,  990,
-     1010, 1007, 1018, 1162, 1166, 1084, 1046, 1049, 1026, 1081,
+     2288, 2287, 2275, 2274,    0, 3371, 2290, 2286, 2273, 2278,
+     2264, 2263,  238,  243,  273,  340,  383,  415,  941, 1018,
+     1030, 1034, 1063,    0,  998,  981, 1108,    0, 1021,    0,
+     1056,  500, 1079,  606,  638,  659,  643,  662, 1088,  687,
+      694,  697,  711,  718,    0,    0, 3371,  749,  749, 1115,
+     1124, 1105,  991, 1001,  766,  952,  801,  828,  872,  879,
+      996,  884, 1128,  890,  912,  913,  948,  943,  955,  982,
+        0,  975,    0,    0, 1024,  985, 1008, 1032,    0,  999,
+        0, 1013, 1014, 1023, 1027, 1039, 1028, 1025,    0, 1028,
+     1043, 1044, 1043, 1133, 1160, 1165, 1078, 1081, 1054, 1070,
 
-     1038, 1023, 1034, 1037, 1082, 1044, 1187, 1061, 1190, 3335,
-     3335, 1193, 3335, 1043, 1045, 1067, 1082, 1080, 1196, 1251,
-     1077, 1086, 1082, 1099, 1079, 1105, 1093, 1087, 1199, 1216,
-     1133, 1231, 1235, 1267, 1139, 3335,    0, 1094, 1093, 1136,
-        0,    0, 1111,    0, 3335,    0, 1118, 3335,    0,    0,
-     1113,    0, 1120, 1126, 1166, 1142, 1129,    0, 1141, 1136,
-     1279, 1288, 1193, 1292, 1296, 1300, 1173, 3335, 3335, 1148,
-     1165, 1163, 1168,    0,    0, 1206, 1208, 1357,    0, 1182,
-     1172,    0, 1179, 1187, 1174, 1181, 1188, 1353, 1404, 1201,
-     1201, 1204, 1207, 1212,    0, 1227, 1224, 1226,    0,    0,
+     1066, 1049, 1063, 1065, 1099, 1068, 1181, 1086, 1186, 3371,
+     3371, 1189, 3371, 1079, 1085, 1089, 1104, 1107, 1192, 1205,
+     1104, 1111, 1104, 1121, 1100, 1126, 1116, 1114, 1195, 1210,
+     1152, 1226, 1233, 1240, 1160, 3371,    0, 1120, 1117, 1157,
+        0,    0, 1135,    0, 3371,    0, 1142, 3371,    0,    0,
+     1151,    0, 1156, 1159, 1199, 1175, 1161,    0, 1174, 1172,
+     1258, 1248, 1209, 1262, 1271, 1285, 1191, 3371, 3371, 1192,
+     1197, 1196, 1206,    0,    0, 1295, 1241, 1343,    0, 1219,
+     1208,    0, 1218, 1226, 1213, 1220, 1228, 1320, 1391, 1238,
+     1239, 1256, 1242, 1245,    0, 1260, 1259, 1263,    0,    0,
 
-     1224, 3335, 1228, 1233, 1225, 1230, 1367, 1448, 1245, 1244,
-     1258, 1266, 1244, 1248, 1241,    0, 1298, 1291, 1294, 1272,
-     1285, 1285, 1267, 1279, 1281, 1295, 1281, 1380, 1288,    0,
-     1284, 1300, 1292, 1492, 1519, 1384, 1331, 1335, 1546,    0,
-     1300, 1299, 1314, 1327, 1323, 3335, 1320,    0, 1354, 1324,
-     1333, 1328, 1593, 1620, 1432, 1362, 1364, 1647,    0, 1342,
-     1343, 1361, 1355, 1439, 1354, 1369, 1397, 1468, 1482, 1499,
-     1389, 3335, 1361,    0,    0, 1694,    0, 1513, 1438, 1407,
-     1721,    0, 1441, 1423, 1428, 1372, 1426, 1393, 1389, 1390,
-     1395, 1433, 1402, 1476, 1398, 1413, 1444, 1768, 1434, 1420,
+     1263, 3371, 1258, 1264, 1256, 1264, 1338, 1436, 1275, 1274,
+     1289, 1286, 1275, 1279, 1272,    0, 1319, 1322, 1332, 1281,
+     1309, 1297, 1296, 1307, 1310, 1320, 1309, 1369, 1312,    0,
+     1308, 1325, 1313, 1407, 1429, 1414, 1381, 1348, 1481,    0,
+     1323, 1317, 1334, 1342, 1335, 3371, 1336,    0, 1377, 1346,
+     1363, 1351, 1452, 1459, 1488, 1410, 1385, 1533,    0, 1360,
+     1362, 1419, 1437, 1497, 1370, 1393, 1477, 1500, 1537, 1549,
+     1407, 3371, 1380,    0,    0, 1595,    0, 1558, 1490, 1492,
+     1623,    0, 1495, 1502, 1506, 1389, 1444, 1407, 1429, 1436,
+     1446, 1479, 1449, 1611, 1469, 1476, 1493, 1671, 1492, 1478,
 
-     3335, 1462,    0, 1806,    0, 1526, 1472, 1482, 1833,    0,
-     1536, 1495, 1526, 1430, 1458, 1447, 1452, 1471, 1477, 1521,
-     1480, 1562, 1482, 1489, 1521, 1880, 1570, 3335, 1504,    0,
-     1506, 1505, 1543, 1517, 1573,    0, 1583, 1567, 1573, 1514,
-     1559, 1553, 1551, 1559, 1561, 1578, 1561, 1610, 1599, 1615,
-     1636, 1651, 1572, 1918, 1945, 1642, 1626, 1609, 1972,    0,
-     1581,    0, 3335,    0, 1643, 1649, 1651, 1585, 1614, 1599,
-     1599, 1618, 1627, 1639, 1625, 1671, 1660, 1699, 1710, 1725,
-     1623, 2019, 2046, 1716, 1700, 1688, 2073,    0,    0, 1640,
-     1635, 1682, 1687, 1740, 1688, 1714, 1743, 1746, 1773, 2120,
+     3371, 1521,    0, 1616,    0, 1619, 1548, 1528, 1710,    0,
+     1555, 1538, 1541, 1492, 1541, 1512, 1520, 1533, 1535, 1552,
+     1535, 1633, 1534, 1538, 1551, 1758, 1639, 3371, 1552,    0,
+     1550, 1551, 1604, 1554, 1647,    0, 1662, 1600, 1630, 1557,
+     1618, 1571, 1586, 1590, 1610, 1621, 1614, 1678, 1651, 1687,
+     1690, 1699, 1615, 1693, 1764, 1745, 1700, 1702, 1803,    0,
+     1621,    0, 3371,    0, 1719, 1704, 1707, 1638, 1694, 1664,
+     1650, 1685, 1688, 1704, 1686, 1761, 1724, 1780, 1792, 1807,
+     1702, 1812, 1851, 1799, 1815, 1741, 1879,    0,    0, 1708,
+     1704, 1746, 1750, 1857, 1766, 1796, 1867, 1870, 1874, 1927,
 
-        0, 1784, 1774, 1717, 2147,    0, 1777, 1723, 1762, 1649,
-     1726, 1665, 1665, 1708, 1715, 1732, 1717, 1797, 2195, 1786,
-     1802, 1809, 1828, 2253,    0, 1843, 1836, 1808, 2280,    0,
-     1841, 1811, 1824, 1728, 1821, 1761, 1744, 1771, 1775, 1810,
-     1774, 1858, 1783, 1790, 1825, 2327, 1841, 1887,    0, 1887,
-     1860, 1863, 1824, 1865, 1840, 1844, 1844, 1851, 1866, 1860,
-     1907, 1896, 1921, 1924, 1938,    0,    0, 1941,    0, 1935,
-     1901, 1922, 1861, 1922, 1880, 1878, 1893, 1911, 1921, 1911,
-     1982, 1951, 1995, 1999, 2025, 1910, 2365, 2392, 2040, 1977,
-     1955, 2419,    0, 2052, 1992, 2022, 2067, 2099, 2124, 1996,
+        0, 1889, 1869, 1805, 1955,    0, 1872, 1817, 1840, 1725,
+     1774, 1742, 1742, 1745, 1749, 1814, 1754, 1895, 2004, 1884,
+     1900, 1903, 1906, 1949,    0, 2063, 1930, 1904, 2121,    0,
+     1952, 1907, 1910, 1779, 1939, 1805, 1790, 1807, 1819, 1926,
+     1829, 2067, 1828, 1841, 1934, 2169, 1908, 2070,    0, 1964,
+     1917, 1920, 1894, 1941, 1920, 1919, 1933, 1942, 1952, 1941,
+     2073, 1976, 2076, 2084, 2088,    0,    0, 2091,    0, 2066,
+     1980, 1983, 1948, 2055, 1968, 2007, 2024, 2041, 2051, 2050,
+     2100, 2083, 2137, 2146, 2172, 2048, 2204, 2220, 2197, 2099,
+     2091, 2255,    0, 2224, 2095, 2188, 2191, 2249, 2260, 2101,
 
-     2089, 2107, 2127, 2466,    0, 2258, 2080, 1999, 2493,    0,
-     2123, 2002, 2022, 1924, 1948, 1944, 1942, 1957, 1968, 1997,
-     1987, 2269, 2540, 2276, 2581, 2290,    0, 2128, 2035, 2049,
-     2000, 2026, 2038, 2020, 2035, 2037, 2071, 2036, 2287, 2070,
-     2304, 2333, 2347, 2622, 2355, 2663, 2368, 2097, 2361, 2381,
-     2398, 2704, 2761, 2429, 2818, 2442, 2471, 2875, 2272, 3335,
-     2933, 2945, 2957, 2969, 2981, 2993, 3005, 3017, 3029, 3041,
-     3053, 3065, 3077, 3089, 3101, 3113, 3125, 3137, 3147, 3157,
-     3166, 3174, 3183, 3185, 2076, 2091, 3193, 3203, 3213, 3225,
-     3237, 3244, 3246, 3254, 2108, 2109, 2111, 2125, 2138, 2144,
+     2272, 2275, 2278, 2303,    0, 2281, 2129, 2113, 2339,    0,
+     2136, 2146, 2149, 2059, 2126, 2085, 2079, 2114, 2125, 2153,
+     2131, 2308, 2387, 2355, 2429, 2362,    0, 2229, 2162, 2194,
+     2136, 2154, 2167, 2150, 2169, 2171, 2191, 2171, 2358, 2213,
+     2366, 2391, 2408, 2471, 2420, 2513, 2433, 2222, 2425, 2436,
+     2450, 2555, 2613, 2453, 2671, 2462, 2495, 2729, 2346, 3371,
+     2788, 2801, 2814, 2827, 2840, 2853, 2866, 2879, 2892, 2905,
+     2918, 2931, 2944, 2957, 2970, 2983, 2996, 3009, 3020, 3031,
+     3040, 3049, 3058, 3060, 2233, 2239, 3069, 3080, 3091, 3104,
+     3117, 3124, 3126, 3135, 2245, 2246, 2251, 3145, 2252, 2256,
 
-     2145, 3266, 2146, 2147, 2148, 2150, 2151, 2152, 2153, 2159,
-     2160, 3278, 2163, 2165
+     3151, 3160, 2257, 2259, 2260, 2277, 2278, 2285, 2287, 2288,
+     2290, 3173, 2291, 2293
     } ;
 
 static const flex_int16_t yy_def[1415] =
@@ -963,396 +963,400 @@
      1360, 1360, 1360, 1360
     } ;
 
-static const flex_int16_t yy_nxt[3395] =
+static const flex_int16_t yy_nxt[3432] =
     {   0,
-     1360, 1360,   48,   48,   51, 1360, 1360,   52,   51, 1360,
-     1360,   52,   61,   62,   61,   57,   58,   57,  108,   53,
-       53,   53,   46,   53,   53,   53,   57,  108,   46,   54,
-       57,   58,   57,   54,   61,   62,   61,  168,  168,   46,
-      272,   57,   64,  109,  273,   65,  122,   64,  134,   55,
-       65,  134,  109,   55,  132,   49,   49,   66,   66,   66,
-      168,  168,   66,   66,   66,  132,   61,   67,   61,   57,
-      304,   59,   67,  135,  251,  123,  135,  124,  138,  138,
-      139,  139,  886,  305,   57,  252,   59,   68,   61,  266,
-       61,  266,   68,   69,   70,   71,   72,   73,   74,   75,
+     1360, 1360,   48,   48,   51, 1360, 1360,   52,   51,  108,
+      108,   52,   61,   62,   61,   57,   58,   57,  134,   53,
+       53,   53,   46,   53,   53,   53,   57,   57,   58,   57,
+       54,   61,   62,   61,   54,  109,  109,  134,   57,  168,
+      168,   46,  251, 1360,  135,   64,   46,  122,   65,   64,
+       55,  272,   65,  252,   55,  273,   49,   49,  168,  168,
+       66,   66,   66,  135,   66,   66,   66,   61,  132,   61,
+       57,   67,   59,  132,  259,   67,  123,  138,  124,  139,
+      368,  138,   57,  139,   59,  260,   61,  266,   61,  266,
+      369,   68,  244,  245,  244,   68,   69,   70,   71,   72,
 
-       76,   69,   69,   69,   69,   77,   78,   69,   79,   79,
-       69,   69,   69,   69,   80,   80,   80,   80,   80,   69,
-       81,   69,   82,   80,   80,   80,   80,   80,   80,   80,
+       73,   74,   75,   76,   69,   69,   69,   69,   77,   78,
+       69,   79,   79,   69,   69,   69,   73,   69,   80,   80,
+       80,   80,   80,   69,   81,   69,   82,   80,   80,   80,
        80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
-       80,   80,   80,   80,   80,   80,   80,   80,   83,   84,
-       85,   86,   87,   88,   89,   88,   87,   87,   87,   90,
-       87,   87,   87,   87,   87,   90,   87,   91,   91,   87,
-       90,   87,   91,   91,   91,   91,   91,   91,   87,   92,
-       87,   90,   91,   91,   91,   91,   91,   91,   91,   91,
+       80,   80,   80,   80,   80,   80,   80,   80,   80,   80,
+       80,   80,   83,   84,   85,   86,   87,   88,   89,   88,
+       87,   87,   87,   90,   87,   87,   87,   87,   87,   90,
+       87,   91,   91,   87,   90,   87,   87,   91,   91,   91,
+       91,   91,   91,   87,   92,   87,   90,   91,   91,   91,
        91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
 
-       91,   91,   91,   91,   91,   91,   91,   93,   87,   87,
-       87,   94,   95,   96,   95,   94,   94,   94,   94,   94,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   93,   87,   87,   87,   94,   95,   96,   95,
        94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
-       94,   94,   97,   97,   97,   97,   97,   94,   94,   94,
-       94,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       94,   94,   94,   94,   94,   94,   94,   94,   97,   97,
+       97,   97,   97,   94,   94,   94,   94,   97,   97,   97,
        97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
-       97,   97,   97,   97,   97,   97,   98,   94,   94,   94,
-      100,  152,  141,  100,  142,  269,  143,  144,  145,  244,
-      245,  244,  259,  146,  887,  101,  101,  101,  101,  101,
-      101,  270,  277,  260,  205,  102,  332,  282,  102,  280,
+       97,   97,   97,   97,   97,   97,   97,   97,   97,   97,
+       97,   97,   98,   94,   94,   94,  100,  152,  141,  100,
+      142,  269,  143,  144,  145,  886,  288,  887,  277,  146,
+      289,  101,  101,  101,  101,  101,  101,  278,  270,  280,
 
-      205,  278,  153,  283,  154,  205,  155,  156,  157,  333,
-      281,  274,  275,  158,  888,  103,  205,  276,  103,  104,
-      104,   46,  104,  104,  104,  104,  104,  104,  104,  104,
+      266,  205,  102,  271,  266,  102,  888,  205,  304,  153,
+      281,  154,  205,  155,  156,  157,  301,  274,  275,  302,
+      158,  305,  103,  276,  205,  103,  104,  104,   46,  104,
       104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
-      105,  105,  105,  105,  105,  104,  104,  104,  104,  105,
+      104,  104,  104,  104,  104,  104,  104,  104,  105,  105,
+      105,  105,  105,  104,  104,  104,  104,  105,  105,  105,
       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
       105,  105,  105,  105,  105,  105,  105,  105,  105,  105,
-      105,  105,  105,  105,  104,  104,  106,  104,  111,  889,
-       46,  111,  116,  117,  116,  116,  117,  116,  119,  120,
-      119,  318,   46,  112,  112,  112,  112,  112,  112,  119,
+      105,  105,  104,  104,  106,  104,  111,  889,   46,  111,
+      116,  117,  116,  116,  117,  116,  119,  120,  119,  318,
 
-      120,  119,  319,  113,  122,   46,  113,  199,  357,  199,
-      200,  201,  201,  358,  266,  336,  128,  271,  266,  227,
-      288,  291,  552,  114,  289,  292,  114,  301,  337,  128,
-      302,  306,  306,  123,  293,  124,  116,  553,  116,  116,
-      378,  116,  119,  327,  119,  129,  228,  130,  229,  368,
-      230,  231,  232,  119,  328,  119,  379,  233,  129,  369,
-      130,  171,  171,  890,  172,  171,  171,  171,  171,  173,
-      171,  171,  171,  171,  171,  171,  171,  171,  171,  171,
-      171,  174,  175,  174,  174,  176,  177,  178,  179,  171,
-      171,  180,  181,  182,  183,  184,  185,  174,  186,  187,
+       46,  112,  112,  112,  112,  112,  112,  119,  120,  119,
+      319,   46,  113,  122,  199,  113,  199,  200,  201,  201,
+      282,  200,  201,  201,  291,  128,  283,  227,  292,  306,
+      306,  890,  114,  332,  704,  114,  128,  293,  327,  307,
+      201,  201,  123,  704,  124,  116,  333,  116,  116,  328,
+      116,  119,  891,  119,  129,  228,  130,  229,  357,  230,
+      231,  232,  119,  358,  119,  129,  233,  130,  171,  171,
+      308,  172,  171,  171,  171,  171,  173,  171,  171,  171,
+      171,  171,  171,  171,  171,  171,  171,  171,  171,  174,
+      175,  174,  174,  176,  177,  178,  179,  171,  171,  180,
 
-      188,  189,  174,  190,  191,  192,  174,  193,  194,  195,
-      196,  197,  174,  174,  174,  174,  171,  171,  171,  171,
-      202,  891,  202,  208,  208,  208,  208,  208,  208,  211,
-      211,  211,  216,  267,  268,  267,  267,  268,  267,  911,
-      217,  419,  218,  420,  219,  220,  221,  267,  268,  267,
-      421,  222,  354,  267,  268,  267,  355,  356,  266,  914,
-      267,  268,  267,  212,  200,  201,  201,  360,  361,  213,
-      307,  201,  201,  202,  203,  202,  214,  209,  215,  362,
-      209,  387,  286,  208,  208,  208,  388,  915,  284,  268,
-      287,  846,  268,  266,  294,  295,  296,  916,  297,  205,
+      181,  182,  183,  184,  185,  174,  186,  187,  188,  189,
+      174,  190,  191,  192,  174,  193,  194,  195,  196,  197,
+      174,  174,  174,  174,  171,  171,  171,  171,  202,  911,
+      202,  208,  208,  208,  208,  208,  208,  211,  211,  211,
+      216,  267,  268,  267,  267,  268,  267,  336,  217,  419,
+      218,  420,  219,  220,  221,  267,  268,  267,  421,  222,
+      337,  267,  268,  267,  202,  205,  202,  266,  267,  268,
+      267,  205,  212,  208,  208,  208,  205,  387,  213,  244,
+      245,  244,  388,  203,  378,  214,  209,  215,  205,  209,
+      704,  286,  211,  211,  211,  389,  389,  284,  268,  287,
 
-      308,  389,  389,  268,  298,  205,  211,  211,  211,  268,
-      205,  266,  299,  300,  306,  306,  268,  211,  211,  211,
-      847,  205,  244,  245,  244,  917,  396,  203,  244,  245,
-      244,  340,  341,  340,  267,  268,  267,  209,  371,  397,
-      212,  401,  704,  308,  918,  372,  213,  340,  341,  340,
-      373,  212,  468,  214,  402,  215,  414,  213,  704,  415,
-      441,  458,  442,  921,  214,  469,  215,  463,  443,  459,
-      446,  447,  416,  779,  417,  444,  464,  460,  531,  465,
-      389,  389,  486,  486,  486,  604,  604,  341,  448,  779,
-      268,  922,  532,  533,  486,  486,  486,  572,  572,  572,
+      379,  268,  266,  294,  295,  296,  704,  297,  211,  211,
+      211,  552,  268,  298,  244,  245,  244,  843,  268,  203,
+      266,  299,  300,  306,  306,  268,  553,  212,  209,  340,
+      341,  340,  844,  213,  267,  268,  267,  914,  360,  361,
+      214,  354,  215,  212,  396,  355,  356,  371,  401,  213,
+      362,  779,  414,  308,  372,  415,  214,  397,  215,  373,
+      779,  402,  340,  341,  340,  441,  458,  442,  416,  463,
+      417,  446,  447,  443,  459,  468,  389,  389,  464,  531,
+      444,  465,  460,  486,  486,  486,  341,  915,  469,  448,
+      916,  268,  917,  532,  533,  519,  519,  519,  486,  486,
 
-      580,  686,  686,  341,  583,  583,  583,  618,  581,  308,
-      521,  522,  522,  638,  923,  619,  704,  639,  924,  658,
-      658,  658,  572,  572,  572,  704,  583,  583,  583, 1360,
-     1360,  640,  598,  599,  599,  925,  487,  519,  519,  519,
-      673,  673,  673, 1360,  604,  604,  573,  520,  487,  520,
-      521,  522,  522,  698,  698,  698,  703,  703,  584,  705,
-      705,  705,  699,  523,  596,  596,  596,  652,  653,  653,
-      927,  573,  674,  928,  597,  659,  597,  598,  599,  599,
-      584,  738,  738, 1360, 1360,  750,  750,  750,  778,  778,
-      600,  519,  519,  519,  751,  789,  753,  753,  753,  779,
+      486,  572,  572,  572,  580,  520,  308,  520,  521,  522,
+      522,  918,  581,  583,  583,  583,  596,  596,  596,  341,
+      604,  604,  523,  521,  522,  522,  597,  618,  597,  598,
+      599,  599,  519,  519,  519,  619,  638,  921,  487,  922,
+      639,  923,  520,  600,  520,  521,  522,  522,  650,  650,
+      650,  573,  924,  487,  640,  658,  658,  658,  651,  523,
+      651,  652,  653,  653,  572,  572,  572,  925,  584,  605,
+      605,  605,  583,  583,  583,  654,  673,  673,  673,  596,
+      596,  596,  606,  522,  522,  598,  599,  599,  927,  597,
+      928,  597,  598,  599,  599,  686,  686, 1360,  604,  604,
 
-      932,  520,  790,  520,  521,  522,  522,  700,  779,  756,
-      756,  756,  658,  658,  658,  703,  703,  523,  605,  605,
-      605,  673,  673,  673, 1360,  686,  686,  932,  698,  698,
-      698,  606,  522,  522,  757,  698,  698,  698,  820,  752,
-      932,  780,  780,  780,  705,  705,  705,  820,  607,  608,
-      609,  610,  754,  674,  932,  611, 1360, 1360,  612,  819,
-      819,  613,  778,  778,  614,  650,  650,  650,  659,  705,
-      705,  705, 1360,  738,  738,  651,  932,  651,  652,  653,
-      653,  781,  700,  820,  782,  821,  821,  821,  843,  700,
-      932,  654,  596,  596,  596,  780,  780,  780,  937,  820,
+      607,  608,  609,  610, 1360, 1360,  600,  611,  789,  674,
+      612,  932,  659,  613,  573,  790,  614,  703,  703,  705,
+      705,  705,  698,  698,  698,  738,  738,  584,  687,  687,
+      687,  699,  652,  653,  653,  932,  650,  650,  650, 1360,
+     1360,  688,  599,  599,  778,  778,  651,  846,  651,  652,
+      653,  653, 1360,  686,  686,  779,  753,  753,  753,  689,
+      690,  691,  692,  654,  703,  703,  693, 1360, 1360,  694,
+      932,  779,  695,  819,  819,  696,  847,  700,  739,  739,
+      739,  750,  750,  750,  658,  658,  658,  780,  780,  780,
+      751,  740,  653,  653,  756,  756,  756,  673,  673,  673,
 
-      852,  852,  597,  844,  597,  598,  599,  599,  938,  750,
-      750,  750,  829,  829,  829,  750,  750,  750,  600,  687,
-      687,  687,  756,  756,  756,  822,  819,  819,  823,  753,
-      753,  753,  688,  599,  599,  848,  939,  830,  849,  785,
-      786,  786,  940,  780,  780,  780,  941,  757,  932,  689,
-      690,  691,  692,  826,  827,  827,  693,  896,  896,  694,
-     1360, 1360,  695,  752,  932,  696,  650,  650,  650,  752,
-      931,  931,  780,  780,  780,  932,  651,  942,  651,  652,
-      653,  653,  943,  848,  932,  754,  849,  944,  780,  780,
-      780,  945,  654,  739,  739,  739,  946,  919,  919,  919,
+      698,  698,  698,  698,  698,  698,  705,  705,  705,  741,
+      742,  743,  744,  754,  820,  932,  745,  778,  778,  746,
+      757,  932,  747,  820,  820,  748,  852,  852,  781,  932,
+      674,  782,  783,  783,  783,  937,  752,  705,  705,  705,
+      820,  659,  784,  938,  784,  785,  786,  786, 1360,  738,
+      738,  821,  821,  821,  939,  700,  819,  819,  700,  787,
+      750,  750,  750,  750,  750,  750,  824,  824,  824,  753,
+      753,  753,  829,  829,  829,  940,  825,  941,  825,  826,
+      827,  827,  756,  756,  756,  932,  780,  780,  780,  785,
+      786,  786,  822,  828,  932,  823,  896,  896,  830,  780,
 
-     1360,  852,  852,  821,  821,  821,  740,  653,  653,  850,
-      947,  948,  781,  949,  950,  782,  821,  821,  821,  951,
-      821,  821,  821,  741,  742,  743,  744,  851,  781,  952,
-      745,  782,  953,  746,  954,  955,  747,  956,  957,  748,
-      783,  783,  783,  892,  958,  959,  893,  821,  821,  821,
-      784,  920,  784,  785,  786,  786,  892,  894,  960,  893,
-      822, 1360, 1360,  823,  963,  963,  787,  824,  824,  824,
-      964,  964,  829,  829,  829,  964,  964,  825,  964,  825,
-      826,  827,  827,  909,  909,  909,  895,  822,  964,  969,
-      823,  970,  971,  828,  853,  853,  853,  830, 1360,  896,
+      780,  780,  942,  780,  780,  780, 1360, 1360,  757,  780,
+      780,  780,  826,  827,  827,  752,  931,  931,  752,  821,
+      821,  821,  829,  829,  829,  943,  754,  848,  944,  932,
+      849,  821,  821,  821,  945,  821,  821,  821,  946,  947,
+      848,  850,  948,  849,  781,  932,  949,  782,  830,  851,
+      781,  950,  951,  782,  853,  853,  853,  909,  909,  909,
+      892,  952,  953,  893,  821,  821,  821,  854,  786,  786,
+      954,  955,  892,  894,  956,  893,  822,  957,  958,  823,
+      912,  912,  912,  959,  960,  855,  856,  857,  858,  919,
+      919,  919,  859, 1360, 1360,  860,  963,  963,  861,  964,
 
-      896,  912,  912,  912,  780,  780,  780,  854,  786,  786,
-      780,  780,  780,  964,  964,  972,  973,  974,  980,  933,
-      933,  933,  964,  981,  855,  856,  857,  858,  982,  983,
-      964,  859,  984,  985,  860,  986,  987,  861,  994,  910,
-      862,  897,  897,  897,  781,  929,  995,  782,  931,  931,
-      781,  996,  997,  782,  898,  827,  827,  913,  930,  934,
-      998,  999,  935,  821,  821,  821, 1000,  821,  821,  821,
-     1001,  899,  900,  901,  902,  936, 1002,  863,  903,  993,
-     1003,  904, 1004, 1005,  905, 1006, 1013,  906,  965,  965,
-      965,  909,  909,  909,  912,  912,  912,  919,  919,  919,
+      964,  862,  964,  964,  895,  822,  964,  964,  823,  897,
+      897,  897,  964,  964,  910,  969,  780,  780,  780, 1360,
+      852,  852,  898,  827,  827,  780,  780,  780,  970,  933,
+      933,  933,  964,  971,  821,  821,  821,  913,  972,  973,
+      899,  900,  901,  902,  920,  974,  980,  903,  964,  981,
+      904,  982,  983,  905,  984,  985,  906,  781,  929,  986,
+      782,  821,  821,  821,  987,  994,  781,  931,  931,  782,
+      934,  995,  996,  935,  930,  822,  961,  997,  823, 1360,
+      896,  896,  965,  965,  965,  998,  936,  909,  909,  909,
+      912,  912,  912,  919,  919,  919,  780,  780,  780,  863,
 
-      780,  780,  780,  822,  961, 1014,  823,  822,  963,  963,
-      823,  907, 1015, 1012, 1016,  962, 1029,  780,  780,  780,
-      977,  978,  978, 1017, 1017, 1030, 1031, 1032,  966,  847,
-     1033,  967,  933,  933,  933, 1034,  933,  933,  933, 1041,
-      781, 1042,  863,  782,  968,  863, 1043,  910,  988, 1045,
-      913,  920,  975,  975,  975, 1046, 1044,  781, 1047, 1048,
-      782, 1049,  976,  989,  976,  977,  978,  978,  933,  933,
-      933, 1050,  990, 1051, 1052,  991,  990, 1053,  979,  991,
-      821,  821,  821, 1060, 1061, 1064, 1065, 1066,  936,  821,
-      821,  821,  936,  965,  965,  965,  907,  965,  965,  965,
+      999,  993,  822, 1000, 1001,  823,  975,  975,  975, 1002,
+      962,  780,  780,  780, 1003, 1004,  976, 1005,  976,  977,
+      978,  978, 1006,  966,  963,  963,  967,  933,  933,  933,
+      907, 1013, 1012,  979,  933,  933,  933,  781, 1014,  968,
+      782,  933,  933,  933,  910,  988, 1015,  913,  920,  821,
+      821,  821,  781, 1016, 1029,  782, 1017, 1017,  989,  821,
+      821,  821, 1030,  965,  965,  965, 1031, 1032,  990,  847,
+     1033,  991,  965,  965,  965,  990, 1034, 1041,  991,  992,
+     1042,  863,  934, 1045,  936,  935,  965,  965,  965, 1046,
+      822,  936, 1044,  823, 1047,  863, 1008, 1048,  936, 1043,
 
-     1062,  965,  965,  965,  907,  992, 1360, 1360,  934, 1067,
-     1067,  935, 1360, 1017, 1017, 1063, 1068, 1068, 1068, 1068,
-      822, 1068, 1068,  823,  936, 1068, 1068, 1068, 1007,  822,
-     1073, 1074,  823, 1009, 1075, 1008, 1010, 1009, 1011, 1076,
-     1010,  966, 1095, 1068,  967, 1038, 1039, 1039, 1096,  968,
-     1083, 1083,  863,  968,  780,  780,  780,  968, 1018, 1018,
-     1018, 1099, 1100, 1097, 1101,  863, 1102, 1103,  821,  821,
-      821, 1019,  978,  978, 1098, 1104, 1057, 1058, 1058, 1111,
-     1111, 1069, 1069, 1069, 1123, 1036, 1036, 1036, 1020, 1021,
-     1022, 1023, 1124,  907,  781, 1024, 1129,  782, 1025,  907,
+      822, 1049, 1050,  823, 1009, 1051, 1052, 1010, 1007,  977,
+      978,  978, 1053, 1009, 1060, 1061, 1010, 1064, 1065, 1066,
+      968,  780,  780,  780, 1011,  907, 1068,  966,  907,  968,
+      967, 1068, 1062, 1360, 1017, 1017, 1063, 1360, 1360,  821,
+      821,  821, 1068,  968, 1018, 1018, 1018, 1067, 1067, 1068,
+     1068, 1068, 1068, 1068, 1068, 1073, 1074, 1019,  978,  978,
+     1075, 1076,  781, 1083, 1083,  782, 1095, 1096, 1035, 1068,
+     1069, 1069, 1069,  863, 1099, 1020, 1021, 1022, 1023, 1100,
+      822,  863, 1024,  823, 1097, 1025, 1054, 1101, 1026, 1102,
+     1098, 1027, 1036, 1036, 1036, 1038, 1039, 1039, 1103, 1104,
 
-     1035, 1026, 1126, 1130, 1027, 1036, 1036, 1036,  822, 1135,
-     1125,  823, 1067, 1067, 1054, 1037, 1150, 1037, 1038, 1039,
-     1039, 1070, 1137, 1137, 1071,  848, 1150, 1028,  849, 1134,
-     1150, 1040, 1150, 1055, 1055, 1055, 1150, 1072, 1360, 1360,
-     1127, 1127, 1127, 1149, 1149,  781, 1150, 1153,  782, 1055,
-     1055, 1055, 1080, 1081, 1081, 1360, 1083, 1083, 1150, 1056,
-     1154, 1056, 1057, 1058, 1058, 1150, 1161, 1150, 1162, 1069,
-     1069, 1069, 1163,  892, 1178, 1059,  893, 1151, 1151, 1151,
-     1178, 1150,  863, 1069, 1069, 1069, 1108, 1109, 1109,  822,
-     1178, 1155,  823, 1077, 1077, 1077, 1128, 1165, 1165, 1178,
+     1111, 1111, 1037, 1123, 1037, 1038, 1039, 1039, 1077, 1077,
+     1077, 1070, 1124, 1129, 1071, 1036, 1036, 1036, 1037, 1040,
+     1037, 1038, 1039, 1039, 1057, 1058, 1058, 1072, 1130, 1135,
+     1078, 1078, 1078,  781, 1150, 1040,  782, 1055, 1055, 1055,
+     1079, 1150, 1079, 1080, 1081, 1081, 1028, 1056, 1134, 1056,
+     1057, 1058, 1058, 1105, 1105, 1105,  848, 1082,  907,  849,
+     1106, 1106, 1106, 1056, 1059, 1056, 1057, 1058, 1058, 1125,
+     1107, 1150, 1107, 1108, 1109, 1109,  907, 1150,  822, 1150,
+     1059,  823, 1084, 1084, 1084, 1126, 1150, 1110, 1150, 1055,
+     1055, 1055, 1067, 1067, 1150, 1085, 1039, 1039, 1127, 1127,
 
-     1069, 1069, 1069, 1037, 1178, 1037, 1038, 1039, 1039, 1131,
-     1360, 1360, 1132, 1178, 1078, 1078, 1078, 1152, 1178, 1040,
-     1078, 1078, 1078, 1131, 1178, 1072, 1132, 1106, 1106, 1106,
-     1079, 1181, 1079, 1080, 1081, 1081, 1182, 1133, 1189, 1072,
-     1070, 1177, 1177, 1071, 1190, 1191, 1082, 1084, 1084, 1084,
-     1360, 1111, 1111, 1178,  848, 1028, 1072,  849, 1197,  907,
-     1085, 1039, 1039, 1179, 1179, 1179, 1193,  892, 1183, 1178,
-      893, 1127, 1127, 1127, 1194, 1194, 1194, 1086, 1087, 1088,
-     1089, 1028, 1360, 1360, 1090, 1192, 1197, 1091, 1196, 1196,
-     1092, 1197, 1197, 1093, 1105, 1105, 1105, 1360, 1137, 1137,
+     1127, 1069, 1069, 1069, 1080, 1081, 1081, 1137, 1137, 1360,
+     1083, 1083, 1150, 1086, 1087, 1088, 1089, 1360, 1360, 1153,
+     1090, 1149, 1149, 1091, 1154, 1161, 1092, 1162, 1150, 1093,
+      892, 1163,  863,  893, 1112, 1112, 1112, 1178, 1069, 1069,
+     1069, 1155, 1131, 1165, 1165, 1132, 1178, 1113, 1058, 1058,
+     1069, 1069, 1069, 1360, 1360, 1128, 1177, 1177, 1072, 1078,
+     1078, 1078, 1108, 1109, 1109, 1114, 1115, 1116, 1117, 1360,
+     1111, 1111, 1118, 1178, 1178, 1119, 1178, 1178, 1120, 1131,
+     1178, 1121, 1132, 1178, 1181, 1178, 1182, 1189, 1133, 1190,
+      907, 1070, 1191, 1028, 1071, 1072, 1136, 1136, 1136, 1183,
 
-     1197, 1197, 1197, 1180, 1056, 1197, 1056, 1057, 1058, 1058,
-     1197, 1198, 1198, 1198, 1149, 1149, 1151, 1151, 1151, 1200,
-     1059, 1106, 1106, 1106, 1207, 1207, 1197, 1128, 1219, 1221,
-     1195, 1107, 1221, 1107, 1108, 1109, 1109, 1151, 1151, 1151,
-     1158, 1159, 1159, 1156, 1156, 1156, 1221, 1110, 1112, 1112,
-     1112, 1221, 1151, 1151, 1151, 1221,  848, 1360, 1165, 1165,
-     1221, 1113, 1058, 1058, 1360, 1360, 1220, 1220, 1221, 1221,
-     1224, 1221, 1222, 1222, 1222, 1177, 1177,  848, 1114, 1115,
-     1116, 1117, 1243,  990, 1244, 1118,  991, 1221, 1119, 1199,
-     1247, 1120, 1152, 1263, 1121, 1136, 1136, 1136, 1263,  936,
+      848, 1178, 1197,  849, 1193, 1197, 1079, 1072, 1079, 1080,
+     1081, 1081, 1151, 1151, 1151, 1360, 1360, 1164, 1164, 1164,
+     1106, 1106, 1106, 1082, 1138, 1138, 1138, 1107, 1197, 1107,
+     1108, 1109, 1109, 1197, 1179, 1179, 1179, 1139, 1081, 1081,
+     1127, 1127, 1127, 1028, 1110, 1196, 1196, 1192, 1194, 1194,
+     1194, 1197, 1197, 1152, 1197, 1140, 1141, 1142, 1143, 1197,
+     1197,  892, 1144, 1200,  893, 1145, 1149, 1149, 1146, 1219,
+     1197, 1147, 1156, 1156, 1156, 1180, 1360, 1137, 1137, 1198,
+     1198, 1198, 1157, 1221, 1157, 1158, 1159, 1159, 1151, 1151,
+     1151, 1151, 1151, 1151, 1201, 1201, 1201, 1128, 1221, 1160,
 
-     1179, 1179, 1179, 1231, 1231, 1079, 1263, 1079, 1080, 1081,
-     1081, 1179, 1179, 1179, 1186, 1187, 1187, 1184, 1184, 1184,
-     1028, 1082, 1138, 1138, 1138, 1028, 1179, 1179, 1179, 1196,
-     1196, 1245, 1250, 1250, 1246, 1139, 1081, 1081, 1360, 1360,
-      892, 1194, 1194, 1194, 1198, 1198, 1198, 1198, 1198, 1198,
-     1263,  892, 1140, 1141, 1142, 1143, 1263, 1009, 1263, 1144,
-     1010, 1263, 1145, 1223, 1263, 1146, 1180, 1263, 1147, 1156,
-     1156, 1156, 1283,  968, 1151, 1151, 1151, 1262, 1262, 1157,
-     1263, 1157, 1158, 1159, 1159, 1202, 1202, 1202, 1204, 1205,
-     1205, 1360, 1207, 1207, 1283, 1160, 1283, 1195, 1264, 1264,
+     1151, 1151, 1151, 1221, 1157, 1195, 1157, 1158, 1159, 1159,
+      863, 1166, 1166, 1166, 1158, 1159, 1159, 1207, 1207, 1360,
+     1360, 1160, 1220, 1220, 1167, 1109, 1109, 1221, 1221,  848,
+     1221, 1221,  848, 1360, 1165, 1165, 1221, 1221, 1199, 1177,
+     1177, 1152, 1168, 1169, 1170, 1171, 1156, 1156, 1156, 1172,
+     1224, 1243, 1173, 1221, 1244, 1174, 1231, 1231, 1175, 1184,
+     1184, 1184, 1222, 1222, 1222, 1202, 1202, 1202, 1247, 1185,
+     1263, 1185, 1186, 1187, 1187, 1203, 1263, 1203, 1204, 1205,
+     1205, 1179, 1179, 1179, 1263, 1028, 1188,  990, 1263, 1028,
+      991, 1263, 1206, 1179, 1179, 1179, 1245,  907, 1246, 1263,
 
-     1264, 1220, 1220, 1222, 1222, 1222,  863, 1164, 1164, 1164,
-     1222, 1222, 1222, 1283, 1152, 1248, 1283, 1107, 1283, 1107,
-     1108, 1109, 1109, 1270, 1270,  990, 1360, 1360,  991, 1179,
-     1179, 1179, 1286, 1110, 1166, 1166, 1166, 1287, 1265, 1282,
-     1282,  936, 1283, 1247, 1226, 1226, 1226, 1167, 1109, 1109,
-     1228, 1229, 1229, 1283,  936, 1360, 1231, 1231, 1283, 1284,
-     1284, 1284, 1283, 1028, 1168, 1169, 1170, 1171, 1296, 1180,
-     1268, 1172, 1288, 1296, 1173, 1360, 1360, 1174, 1295, 1295,
-     1175, 1184, 1184, 1184, 1009, 1296, 1296, 1010, 1151, 1151,
-     1151, 1185, 1296, 1185, 1186, 1187, 1187, 1296, 1296, 1285,
+     1184, 1184, 1184,  936, 1208, 1208, 1208, 1263, 1179, 1179,
+     1179, 1196, 1196, 1225, 1225, 1225, 1263, 1209, 1159, 1159,
+     1250, 1250,  892, 1185, 1283, 1185, 1186, 1187, 1187, 1186,
+     1187, 1187, 1360, 1360,  892, 1210, 1211, 1212, 1213, 1283,
+     1188, 1009, 1214, 1283, 1010, 1215, 1223, 1263, 1216, 1180,
+     1283, 1217, 1226, 1226, 1226, 1262, 1262,  968, 1194, 1194,
+     1194, 1283, 1227, 1263, 1227, 1228, 1229, 1229, 1198, 1198,
+     1198, 1198, 1198, 1198, 1283, 1151, 1151, 1151, 1286, 1230,
+     1232, 1232, 1232, 1204, 1205, 1205, 1360, 1207, 1207, 1287,
+     1202, 1202, 1202, 1233, 1187, 1187, 1264, 1264, 1264, 1220,
 
-      968, 1360, 1250, 1250, 1296, 1301, 1296, 1188, 1297, 1297,
-     1297, 1262, 1262, 1301, 1296,  968, 1360, 1360,  907, 1201,
-     1201, 1201, 1264, 1264, 1264, 1264, 1264, 1264, 1152, 1157,
-     1301, 1157, 1158, 1159, 1159, 1301, 1294, 1300, 1300, 1264,
-     1264, 1264, 1179, 1179, 1179, 1160, 1202, 1202, 1202, 1360,
-     1270, 1270, 1301, 1301, 1301, 1301, 1203, 1304, 1203, 1204,
-     1205, 1205,  990, 1301,  936,  990, 1282, 1282, 1341, 1301,
-     1311, 1311, 1206, 1208, 1208, 1208, 1298, 1341,  936, 1265,
-     1341,  936, 1180, 1302, 1302, 1302, 1209, 1159, 1159, 1341,
-     1299, 1291, 1292, 1292, 1341,  936, 1284, 1284, 1284, 1341,
+     1220, 1222, 1222, 1222, 1222, 1222, 1222, 1179, 1179, 1179,
+     1247, 1234, 1235, 1236, 1237, 1195, 1152, 1248, 1238, 1270,
+     1270, 1239, 1360, 1360, 1240, 1282, 1282, 1241, 1249, 1249,
+     1249,  990, 1360, 1360,  991, 1295, 1295, 1265, 1203, 1296,
+     1203, 1204, 1205, 1205, 1228, 1229, 1229,  936, 1180, 1268,
+     1269, 1269, 1269,  936, 1296, 1206, 1251, 1251, 1251, 1283,
+     1227, 1296, 1227, 1228, 1229, 1229, 1360, 1231, 1231, 1252,
+     1205, 1205, 1283, 1028, 1296, 1283, 1296, 1230, 1360, 1250,
+     1250, 1283, 1288, 1296, 1296, 1296, 1296, 1253, 1254, 1255,
+     1256, 1262, 1262, 1301, 1257, 1360, 1360, 1258, 1300, 1300,
 
-     1284, 1284, 1284, 1210, 1211, 1212, 1213, 1295, 1295, 1341,
-     1214, 1300, 1300, 1215, 1328, 1328, 1216, 1360, 1360, 1217,
-     1225, 1225, 1225, 1297, 1297, 1297, 1284, 1284, 1284, 1341,
-     1185, 1341, 1185, 1186, 1187, 1187, 1009, 1340, 1340,  968,
-     1009, 1289, 1289, 1289, 1349, 1341, 1188, 1226, 1226, 1226,
-     1360, 1360,  968, 1151, 1151, 1151,  968, 1227, 1349, 1227,
-     1228, 1229, 1229, 1303, 1348, 1348, 1285, 1349, 1297, 1297,
-     1297, 1349, 1349, 1230, 1232, 1232, 1232, 1349, 1349,  936,
-     1349, 1131,  968,  210, 1132, 1340, 1340, 1233, 1187, 1187,
-     1302, 1302, 1302, 1152, 1308, 1309, 1309, 1072,  224, 1323,
-
-     1264, 1264, 1264, 1349, 1234, 1235, 1236, 1237, 1302, 1302,
-     1302, 1238, 1348, 1348, 1239,  615,  697, 1240,  749, 1349,
-     1241, 1249, 1249, 1249,  936, 1179, 1179, 1179, 1284, 1284,
-     1284, 1203,  832, 1203, 1204, 1205, 1205, 1360, 1311, 1311,
-     1265, 1324, 1360, 1328, 1328,  863,  968, 1206, 1251, 1251,
-     1251,  907,  908, 1028, 1094, 1122,  936, 1148, 1176, 1218,
-     1242, 1252, 1205, 1205,  968, 1180, 1261, 1281, 1285, 1326,
-     1322, 1325, 1339,  885,  884,  883,  882,  881, 1253, 1254,
-     1255, 1256,  880,  879,  968, 1257,  878,  877, 1258,  876,
-      875, 1259,  874,  873, 1260, 1266, 1266, 1266, 1266, 1266,
-
+     1259, 1296, 1301, 1260, 1266, 1266, 1266, 1266, 1266, 1266,
      1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
      1266, 1266, 1266, 1266, 1266, 1267, 1267, 1267, 1267, 1267,
      1267, 1266, 1266, 1266, 1266, 1267, 1267, 1267, 1267, 1267,
      1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
      1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267, 1267,
-      872, 1266, 1266, 1266, 1269, 1269, 1269,  871,  870, 1306,
-     1306, 1306,  869,  868, 1227,  867, 1227, 1228, 1229, 1229,
-     1342, 1342, 1342, 1359, 1359, 1359,  866, 1264, 1264, 1264,
-     1230, 1271, 1271, 1271,  865,  864,  845,  842, 1350, 1350,
-     1350, 1284, 1284, 1284, 1272, 1229, 1229,  841,  840, 1131,
+     1301, 1266, 1266, 1266, 1226, 1226, 1226, 1301, 1284, 1284,
+     1284, 1151, 1151, 1151, 1297, 1297, 1297, 1264, 1264, 1264,
+     1360, 1270, 1270, 1301, 1301, 1264, 1264, 1264, 1301, 1264,
+     1264, 1264, 1179, 1179, 1179, 1301, 1304, 1301, 1282, 1282,
 
-      839,  838, 1132,  837,  836, 1342, 1342, 1342,  835,  834,
-     1343, 1273, 1274, 1275, 1276, 1072, 1360, 1265, 1277,  323,
-      314, 1278,  833,  831, 1279, 1345, 1072, 1280, 1289, 1289,
-     1289, 1285,  820,  936, 1342, 1342, 1342,  820, 1290, 1347,
-     1290, 1291, 1292, 1292, 1072, 1131,  820,  968, 1342, 1342,
-     1342,  820,  820,  820, 1293,  818, 1264, 1264, 1264,  817,
-      816, 1072, 1350, 1350, 1350, 1028, 1305, 1305, 1305, 1284,
-     1284, 1284,  815,  814, 1131,  813, 1290,  812, 1290, 1291,
-     1292, 1292, 1350, 1350, 1350, 1351,  811,  810, 1343,  809,
-     1072,  808, 1293, 1306, 1306, 1306, 1265,  807,  806, 1342,
+     1301, 1302, 1302, 1302, 1341, 1009, 1311, 1311, 1010, 1285,
+     1295, 1295, 1152, 1291, 1292, 1292, 1300, 1300,  990, 1341,
+     1294,  968, 1271, 1271, 1271,  968,  990, 1298, 1328, 1328,
+     1265,  936, 1341, 1180,  936, 1272, 1229, 1229, 1284, 1284,
+     1284, 1299,  936, 1308, 1309, 1309,  936, 1284, 1284, 1284,
+     1360, 1311, 1311, 1273, 1274, 1275, 1276, 1341,  968, 1341,
+     1277, 1360, 1360, 1278, 1340, 1340, 1279, 1341, 1341, 1280,
+     1289, 1289, 1289, 1284, 1284, 1284, 1341, 1360, 1360, 1009,
+     1290, 1349, 1290, 1291, 1292, 1292, 1341, 1349, 1009, 1297,
+     1297, 1297, 1297, 1297, 1297,  968, 1349, 1293, 1289, 1289,
 
-     1342, 1342, 1352, 1307, 1072, 1307, 1308, 1309, 1309, 1285,
-      805,  804,  936,  803,  802, 1353,  801,  800, 1072, 1310,
-     1312, 1312, 1312,  799,  798,  968,  797,  796,  795,  794,
-     1342, 1342, 1342, 1313, 1292, 1292,  793,  792, 1072, 1343,
-     1354,  791,  788, 1356, 1356, 1356,  779,  779,  779,  779,
-     1314, 1315, 1316, 1317,  779, 1072,  779, 1318,  777,  776,
-     1319,  775,  774, 1320,  773,  772, 1321, 1327, 1327, 1327,
-     1343,  771, 1342, 1342, 1342,  770,  769, 1307, 1357, 1307,
-     1308, 1309, 1309, 1009,  768,  767, 1072,  766,  765,  764,
-      763,  762,  255, 1310, 1329, 1329, 1329,  247,  761,  968,
+     1289, 1349, 1341, 1349,  968, 1305, 1305, 1305, 1028, 1348,
+     1348, 1303, 1349, 1349, 1285, 1290, 1349, 1290, 1291, 1292,
+     1292, 1306, 1306, 1306, 1349, 1151, 1151, 1151, 1340, 1340,
+      968, 1307, 1293, 1307, 1308, 1309, 1309, 1348, 1348, 1131,
+     1349,  210, 1132, 1360, 1328, 1328,  936,  224, 1310,  936,
+     1264, 1264, 1264,  615,  697, 1072, 1312, 1312, 1312,  749,
+      863, 1179, 1179, 1179,  907, 1028, 1152, 1094, 1122, 1313,
+     1292, 1292, 1323, 1302, 1302, 1302, 1302, 1302, 1302, 1284,
+     1284, 1284, 1306, 1306, 1306, 1148, 1176, 1314, 1315, 1316,
+     1317, 1265, 1324, 1218, 1318, 1242, 1261, 1319, 1281, 1322,
 
-      323,  760,  314,  759,  758,  755,  737, 1330, 1309, 1309,
-      736,  735, 1343,  734,  733,  732,  731,  730, 1358,  729,
-      728,  727,  726,  725, 1331, 1332, 1333, 1334, 1072,  724,
-      723, 1335,  722,  721, 1336,  720,  719, 1337,  718,  717,
-     1338, 1344, 1344, 1344,  716,  715,  714,  713,  712,  711,
-      710, 1079,  709, 1079, 1080, 1081, 1081,  708,  707,  706,
-      704,  704,  704,  704,  704,  704,  702, 1082,  701,  685,
-      684,  683,  682,  681,  680,  679,  678,  677,  676,  675,
-      672, 1152, 1346, 1346, 1346,  671,  670,  669,  668,  255,
-      667,  247, 1107,  666, 1107, 1108, 1109, 1109,  665,  664,
+     1320, 1339, 1180, 1321, 1327, 1327, 1327,  936, 1325, 1342,
+     1342, 1342,  885,  884, 1307,  883, 1307, 1308, 1309, 1309,
+     1285, 1326,  882, 1131,  881,  880, 1132,  879,  878,  877,
+      968, 1310,  876,  968,  875,  874,  968,  873,  872, 1072,
+     1329, 1329, 1329,  871,  870,  869,  868, 1359, 1359, 1359,
+     1343,  867,  866, 1330, 1309, 1309, 1264, 1264, 1264, 1350,
+     1350, 1350,  865, 1284, 1284, 1284, 1072, 1342, 1342, 1342,
+      864, 1331, 1332, 1333, 1334,  845,  842,  841, 1335,  840,
+      839, 1336,  838,  837, 1337,  836,  835, 1338, 1344, 1344,
+     1344, 1360, 1342, 1342, 1342,  834,  323, 1265, 1079,  314,
 
-      323,  663,  323,  662,  314,  661,  314,  660, 1110,  657,
-      656,  655,  649,  648,  647,  646,  645,  644,  643,  642,
-      641,  637, 1180, 1344, 1344, 1344,  636,  635,  634,  633,
-      632,  631,  630, 1079,  629, 1079, 1080, 1081, 1081,  628,
-      627,  626,  625,  624,  623,  622,  621,  620,  617, 1082,
-      616,  603,  602,  601,  595,  594,  593,  592,  591,  590,
-      589,  588,  587,  848, 1346, 1346, 1346,  586,  585,  582,
-      579,  578,  577,  255, 1107,  576, 1107, 1108, 1109, 1109,
-      255,  575,  247,  574,  247,  571,  570,  569,  568,  567,
-     1110,  566,  565,  564,  563,  562,  561,  560,  559,  558,
+     1079, 1080, 1081, 1081, 1285, 1345,  833,  831, 1131, 1342,
+     1342, 1342, 1347,  936,  820, 1082, 1072,  820,  820,  820,
+      968, 1264, 1264, 1264, 1072,  820, 1350, 1350, 1350, 1152,
+     1346, 1346, 1346, 1131, 1284, 1284, 1284, 1350, 1350, 1350,
+     1107,  820, 1107, 1108, 1109, 1109,  818, 1351,  817, 1072,
+     1343, 1342, 1342, 1342, 1342, 1342, 1342, 1110,  816,  815,
+      814,  813, 1265, 1356, 1356, 1356, 1072,  812, 1352,  811,
+      810, 1180, 1344, 1344, 1344, 1285,  809,  808,  936,  807,
+      806, 1353, 1079, 1072, 1079, 1080, 1081, 1081,  805,  804,
+      803,  968, 1343, 1354, 1072, 1343, 1342, 1342, 1342, 1082,
 
-      557,  556,  555,  554,  892, 1355, 1355, 1355,  551,  550,
-      549,  548,  547,  546,  545, 1203,  544, 1203, 1204, 1205,
-     1205,  543,  542,  541,  540,  539,  538,  537,  536,  535,
-      534, 1206,  530,  529,  528,  527,  526,  525,  524,  518,
-      517,  516,  515,  514,  513, 1265,  512,  511,  510,  509,
-      508,  507,  506,  505,  504,  503,  502,  501,  500,  499,
-      498,  936, 1356, 1356, 1356,  497,  496,  495,  494,  493,
-      492,  491, 1227,  490, 1227, 1228, 1229, 1229,  489,  488,
-      485,  484,  483,  482,  481,  480,  479,  478, 1230,  477,
-      476,  475,  474,  473,  472,  471,  470,  467,  466,  462,
+      802,  801,  800, 1357, 1009,  799,  798,  797, 1072,  796,
+      795, 1072,  794,  848, 1346, 1346, 1346,  793,  792,  791,
+      968,  788,  779,  779, 1107,  779, 1107, 1108, 1109, 1109,
+      779,  779,  779,  777,  776,  775,  774, 1343,  773,  772,
+      771, 1110,  770, 1358,  769,  768,  767,  766,  765,  764,
+      763,  762,  255, 1072,  247,  892, 1355, 1355, 1355,  761,
+      323,  760,  314,  759,  758,  755, 1203,  737, 1203, 1204,
+     1205, 1205,  736,  735,  734,  733,  732,  731,  730,  729,
+      728,  727,  726, 1206,  725,  724,  723,  722,  721,  720,
+      719,  718,  717,  716,  715,  714,  713, 1265,  712,  711,
 
-      461,  457, 1285,  456,  455,  454,  453,  452,  451,  450,
-      449,  445,  440,  439,  438,  437,  436,  435,  968, 1355,
-     1355, 1355,  434,  433,  432,  431,  430,  429,  428, 1203,
-      427, 1203, 1204, 1205, 1205,  426,  425,  424,  423,  422,
-      418,  343,  413,  412,  411, 1206,  410,  409,  408,  407,
-      406,  405,  404,  403,  323,  323,  400,  323,  323,  990,
-      399,  398,  314,  314,  395,  314,  314,  394,  393,  392,
-      391,  390,  386,  385,  384,  936, 1359, 1359, 1359,  383,
-      382,  381,  380,  377,  376,  375, 1307,  374, 1307, 1308,
-     1309, 1309,  370,  367,  366,  365,  364,  363,  359,  353,
+      710,  709,  708,  707,  706,  704,  704,  704,  704,  704,
+      704,  702,  701,  936, 1356, 1356, 1356,  685,  684,  683,
+      682,  681,  680,  679, 1227,  678, 1227, 1228, 1229, 1229,
+      677,  676,  675,  672,  671,  670,  669,  668,  255,  667,
+      247, 1230,  666,  665,  664,  323,  663,  323,  662,  314,
+      661,  314,  660,  657,  656, 1285,  655,  649,  648,  647,
+      646,  645,  644,  643,  642,  641,  637,  636,  635,  634,
+      633,  968, 1355, 1355, 1355,  632,  631,  630,  629,  628,
+      627,  626, 1203,  625, 1203, 1204, 1205, 1205,  624,  623,
+      622,  621,  620,  617,  616,  603,  602,  601,  595, 1206,
 
-      352,  351, 1310,  350,  349,  348,  347,  346,  345,  344,
-      343,  270, 1360,  339,  338,  255, 1343,  255,  335,  255,
-      255,  334,  247,  247,  331,  247,  247,  330,  238,  236,
-      329,  326, 1072,   46,   46,   46,   46,   46,   46,   46,
-       46,   46,   46,   46,   46,   47,   47,   47,   47,   47,
-       47,   47,   47,   47,   47,   47,   47,   50,   50,   50,
-       50,   50,   50,   50,   50,   50,   50,   50,   50,   56,
+      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
+      582,  579,  578,  990,  577,  255,  576,  255,  575,  247,
+      574,  247,  571,  570,  569,  568,  567,  566,  565,  936,
+     1359, 1359, 1359,  564,  563,  562,  561,  560,  559,  558,
+     1307,  557, 1307, 1308, 1309, 1309,  556,  555,  554,  551,
+      550,  549,  548,  547,  546,  545,  544, 1310,  543,  542,
+      541,  540,  539,  538,  537,  536,  535,  534,  530,  529,
+      528, 1343,  527,  526,  525,  524,  518,  517,  516,  515,
+      514,  513,  512,  511,  510,  509,  508, 1072,   46,   46,
+       46,   46,   46,   46,   46,   46,   46,   46,   46,   46,
+
+       46,   47,   47,   47,   47,   47,   47,   47,   47,   47,
+       47,   47,   47,   47,   50,   50,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   56,   56,   56,
        56,   56,   56,   56,   56,   56,   56,   56,   56,   56,
-       56,   60,   60,   60,   60,   60,   60,   60,   60,   60,
+       60,   60,   60,   60,   60,   60,   60,   60,   60,   60,
        60,   60,   60,   63,   63,   63,   63,   63,   63,   63,
+       63,   63,   63,   63,   63,   63,   99,   99,   99,   99,
+       99,   99,   99,   99,   99,   99,   99,   99,   99,  107,
+      107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
+      107,  107,  110,  110,  110,  110,  110,  110,  110,  110,
 
-       63,   63,   63,   63,   63,   99,   99,   99,   99,   99,
-       99,   99,   99,   99,   99,   99,   99,  107,  107,  107,
-      107,  107,  107,  107,  107,  107,  107,  107,  107,  110,
-      110,  110,  110,  110,  110,  110,  110,  110,  110,  110,
-      110,  115,  115,  115,  115,  115,  115,  115,  115,  115,
-      115,  115,  115,  118,  118,  118,  118,  118,  118,  118,
-      118,  118,  118,  118,  118,  121,  121,  121,  121,  121,
-      121,  121,  121,  121,  121,  121,  121,  125,  125,  125,
-      125,  125,  125,  125,  125,  125,  125,  125,  125,  127,
+      110,  110,  110,  110,  110,  115,  115,  115,  115,  115,
+      115,  115,  115,  115,  115,  115,  115,  115,  118,  118,
+      118,  118,  118,  118,  118,  118,  118,  118,  118,  118,
+      118,  121,  121,  121,  121,  121,  121,  121,  121,  121,
+      121,  121,  121,  121,  125,  125,  125,  125,  125,  125,
+      125,  125,  125,  125,  125,  125,  125,  127,  127,  127,
       127,  127,  127,  127,  127,  127,  127,  127,  127,  127,
-
-      127,  131,  131,  131,  131,  131,  131,  131,  131,  131,
+      131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
       131,  131,  131,  133,  133,  133,  133,  133,  133,  133,
-      133,  133,  133,  133,  133,  137,  137,  137,  137,  137,
-      137,  137,  137,  137,  137,  137,  137,  148,  325,  324,
-      148,  323,  148,  148,  148,  148,  148,  150,  322,  321,
-      150,  150,  150,  150,  150,  150,  150,  164,  164,  225,
-      164,  164,  164,  164,  164,  164,  164,  164,  164,  170,
-      320,  317,  316,  170,  204,  315,  314,  204,  204,  204,
-      204,  204,  204,  204,  313,  204,  206,  312,  206,  206,
-      206,  207,  207,  235,  311,  310,  235,  235,  235,  235,
+      133,  133,  133,  133,  133,  133,  137,  137,  137,  137,
 
-      235,  235,  235,  237,  309,  203,  237,  237,  237,  237,
-      237,  237,  237,  240,  240,  240,  240,  240,  240,  240,
-      240,  240,  303,  240,  240,  241,  241,  241,  241,  241,
-      241,  241,  241,  290,  241,  241,  241,  243,  243,  243,
-      243,  243,  243,  243,  243,  243,  243,  264,  285,  279,
-      169,  264,  265,  265,  342,  342,  342,  342,  342,  342,
-      342,  342,  342,  342,  342,  342,  926,  926,  926,  926,
-      926,  926,  926,  926,  926,  169,  926,  926, 1266, 1266,
-     1266, 1266, 1266, 1266, 1266, 1266, 1266, 1266,  263, 1266,
-      262,  160,  261,  258,  257,  256,  255,  254,  151,  149,
+      137,  137,  137,  137,  137,  137,  137,  137,  137,  148,
+      507,  506,  148,  148,  505,  148,  148,  148,  148,  148,
+      150,  504,  503,  150,  150,  150,  150,  150,  150,  150,
+      150,  164,  164,  502,  164,  164,  164,  164,  164,  164,
+      164,  164,  164,  164,  170,  501,  500,  499,  170,  204,
+      498,  497,  204,  204,  204,  204,  204,  204,  204,  204,
+      496,  204,  206,  495,  206,  206,  206,  207,  207,  235,
+      494,  493,  235,  235,  235,  235,  235,  235,  235,  235,
+      237,  492,  491,  237,  237,  237,  237,  237,  237,  237,
+      237,  240,  240,  240,  240,  240,  240,  240,  240,  240,
 
-      253,  250,  249,  248,  247,  246,  242,  239,  238,  236,
-      234,  226,  225,  223,  203,  198,  169,  167,  166,  165,
-      163,  162,  161,  160,  159,  151,  149,  147,  140, 1360,
-      136,  136,  126,  126,   45, 1360, 1360, 1360, 1360, 1360,
+      240,  490,  240,  240,  241,  241,  241,  241,  241,  241,
+      241,  241,  241,  489,  241,  241,  241,  243,  243,  243,
+      243,  243,  243,  243,  243,  243,  243,  243,  264,  488,
+      485,  484,  264,  265,  265,  342,  342,  342,  342,  342,
+      342,  342,  342,  342,  342,  342,  342,  342,  832,  483,
+      482,  481,  480,  832,  908,  479,  478,  477,  476,  908,
+      926,  926,  926,  926,  926,  926,  926,  926,  926,  926,
+      475,  926,  926, 1266, 1266, 1266, 1266, 1266, 1266, 1266,
+     1266, 1266, 1266, 1266,  474, 1266,  473,  472,  471,  470,
+      467,  466,  462,  461,  457,  456,  455,  454,  453,  452,
+
+      451,  450,  449,  445,  440,  439,  438,  437,  436,  435,
+      434,  433,  432,  431,  430,  429,  428,  427,  426,  425,
+      424,  423,  422,  418,  343,  413,  412,  411,  410,  409,
+      408,  407,  406,  405,  404,  403,  323,  323,  400,  323,
+      323,  399,  398,  314,  314,  395,  314,  314,  394,  393,
+      392,  391,  390,  386,  385,  384,  383,  382,  381,  380,
+      377,  376,  375,  374,  370,  367,  366,  365,  364,  363,
+      359,  353,  352,  351,  350,  349,  348,  347,  346,  345,
+      344,  343,  270, 1360,  339,  338,  255,  255,  335,  255,
+      255,  334,  247,  247,  331,  247,  247,  330,  238,  236,
+
+      329,  326,  325,  324,  323,  322,  321,  225,  320,  317,
+      316,  315,  314,  313,  312,  311,  310,  309,  203,  303,
+      290,  285,  279,  169,  169,  263,  262,  160,  261,  258,
+      257,  256,  255,  254,  151,  149,  253,  250,  249,  248,
+      247,  246,  242,  239,  238,  236,  234,  226,  225,  223,
+      203,  198,  169,  167,  166,  165,  163,  162,  161,  160,
+      159,  151,  149,  147,  140, 1360,  136,  136,  126,  126,
+       45, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
+
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
-     1360, 1360, 1360, 1360
-
+     1360
     } ;
 
-static const flex_int16_t yy_chk[3395] =
+static const flex_int16_t yy_chk[3432] =
     {   0,
-        0,    0,    3,    4,    5,    0,    0,    5,    6,    0,
-        0,    6,    9,    9,    9,    7,    7,    7,   23,    5,
-        5,    5,   31,    6,    6,    6,    7,   24,   37,    5,
-        8,    8,    8,    6,   10,   10,   10,   79,   79,   38,
-      181,    8,   11,   23,  181,   11,   31,   12,   39,    5,
-       12,   40,   24,    6,   37,    3,    4,   11,   11,   11,
-      168,  168,   12,   12,   12,   38,    9,   11,    9,    7,
-      197,    7,   12,   39,  146,   31,   40,   31,   43,   44,
-       43,   44,  813,  197,    8,  146,    8,   11,   10,  175,
-       10,  175,   12,   13,   13,   13,   13,   13,   13,   13,
+        0,    0,    3,    4,    5,    0,    0,    5,    6,   23,
+       24,    6,    9,    9,    9,    7,    7,    7,   39,    5,
+        5,    5,   31,    6,    6,    6,    7,    8,    8,    8,
+        5,   10,   10,   10,    6,   23,   24,   40,    8,   79,
+       79,   37,  146,    0,   39,   11,   38,   31,   11,   12,
+        5,  181,   12,  146,    6,  181,    3,    4,  168,  168,
+       11,   11,   11,   40,   12,   12,   12,    9,   37,    9,
+        7,   11,    7,   38,  158,   12,   31,   43,   31,   43,
+      290,   44,    8,   44,    8,  158,   10,  175,   10,  175,
+      290,   11,  139,  139,  139,   12,   13,   13,   13,   13,
 
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
@@ -1359,7 +1363,7 @@
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
        13,   13,   13,   13,   13,   13,   13,   13,   13,   13,
-       13,   13,   15,   15,   15,   15,   15,   15,   15,   15,
+       13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
@@ -1366,357 +1370,361 @@
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
 
        15,   15,   15,   15,   15,   15,   15,   15,   15,   15,
-       15,   17,   17,   17,   17,   17,   17,   17,   17,   17,
+       15,   15,   15,   15,   15,   15,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
        17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
-       19,   67,   54,   20,   54,  179,   54,   54,   54,  139,
-      139,  139,  158,   54,  814,   19,   19,   19,   20,   20,
-       20,  179,  183,  158,   91,   19,  252,  186,   20,  185,
+       17,   17,   17,   17,   17,   17,   19,   67,   54,   20,
+       54,  179,   54,   54,   54,  813,  190,  814,  183,   54,
+      190,   19,   19,   19,   20,   20,   20,  183,  179,  185,
 
-       91,  183,   67,  186,   67,   91,   67,   67,   67,  252,
-      185,  182,  182,   67,  815,   19,   91,  182,   20,   21,
+      180,   91,   19,  180,  180,   20,  815,   91,  197,   67,
+      185,   67,   91,   67,   67,   67,  195,  182,  182,  195,
+       67,  197,   19,  182,   91,   20,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
        21,   21,   21,   21,   21,   21,   21,   21,   21,   21,
-       21,   21,   21,   21,   21,   21,   21,   21,   25,  816,
-       32,   26,   27,   27,   27,   28,   28,   28,   29,   29,
-       29,  222,   35,   25,   25,   25,   26,   26,   26,   30,
+       21,   21,   21,   21,   21,   21,   25,  816,   32,   26,
+       27,   27,   27,   28,   28,   28,   29,   29,   29,  222,
 
-       30,   30,  222,   25,   32,   36,   26,   83,  282,   83,
-       83,   83,   83,  282,  180,  260,   35,  180,  180,  113,
-      190,  193,  465,   25,  190,  193,   26,  195,  260,   36,
-      195,  200,  200,   32,  193,   32,   27,  465,   27,   28,
-      297,   28,   29,  233,   29,   35,  113,   35,  113,  290,
-      113,  113,  113,   30,  233,   30,  297,  113,   36,  290,
-       36,   81,   81,  817,   81,   81,   81,   81,   81,   81,
+       35,   25,   25,   25,   26,   26,   26,   30,   30,   30,
+      222,   36,   25,   32,   83,   26,   83,   83,   83,   83,
+      186,  199,  199,  199,  193,   35,  186,  113,  193,  200,
+      200,  817,   25,  252,  608,   26,   36,  193,  233,  201,
+      201,  201,   32,  608,   32,   27,  252,   27,   28,  233,
+       28,   29,  818,   29,   35,  113,   35,  113,  282,  113,
+      113,  113,   30,  282,   30,   36,  113,   36,   81,   81,
+      201,   81,   81,   81,   81,   81,   81,   81,   81,   81,
        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
 
        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
        81,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       88,  818,   88,   95,   95,   95,   96,   96,   96,   98,
-       98,   98,  102,  176,  176,  176,  177,  177,  177,  832,
-      102,  346,  102,  346,  102,  102,  102,  187,  187,  187,
-      346,  102,  281,  189,  189,  189,  281,  281,  177,  834,
-      191,  191,  191,   98,  199,  199,  199,  284,  284,   98,
-      201,  201,  201,  202,   88,  202,   98,   95,   98,  284,
-       96,  305,  189,  208,  208,  208,  305,  835,  187,  176,
-      189,  777,  177,  191,  194,  194,  194,  836,  194,  206,
+       81,   81,   81,   81,   81,   81,   81,   81,   88,  832,
+       88,   95,   95,   95,   96,   96,   96,   98,   98,   98,
+      102,  176,  176,  176,  177,  177,  177,  260,  102,  346,
+      102,  346,  102,  102,  102,  187,  187,  187,  346,  102,
+      260,  189,  189,  189,  202,  206,  202,  177,  191,  191,
+      191,  206,   98,  208,  208,  208,  206,  305,   98,  244,
+      244,  244,  305,   88,  297,   98,   95,   98,  206,   96,
+      613,  189,  209,  209,  209,  307,  307,  187,  176,  189,
 
-      201,  307,  307,  187,  194,  206,  209,  209,  209,  189,
-      206,  194,  194,  194,  306,  306,  191,  211,  211,  211,
-      777,  206,  244,  244,  244,  837,  319,  202,  245,  245,
-      245,  266,  266,  266,  267,  267,  267,  208,  292,  319,
-      209,  328,  613,  306,  838,  292,  209,  340,  340,  340,
-      292,  211,  385,  209,  328,  209,  344,  211,  613,  344,
-      367,  379,  367,  840,  211,  385,  211,  382,  367,  379,
-      369,  369,  344,  695,  344,  367,  382,  379,  445,  382,
-      389,  389,  404,  404,  404,  521,  521,  266,  369,  695,
-      267,  841,  445,  445,  486,  486,  486,  487,  487,  487,
+      297,  177,  191,  194,  194,  194,  613,  194,  211,  211,
+      211,  465,  187,  194,  245,  245,  245,  773,  189,  202,
+      194,  194,  194,  306,  306,  191,  465,  209,  208,  266,
+      266,  266,  773,  209,  267,  267,  267,  834,  284,  284,
+      209,  281,  209,  211,  319,  281,  281,  292,  328,  211,
+      284,  690,  344,  306,  292,  344,  211,  319,  211,  292,
+      690,  328,  340,  340,  340,  367,  379,  367,  344,  382,
+      344,  369,  369,  367,  379,  385,  389,  389,  382,  445,
+      367,  382,  379,  404,  404,  404,  266,  835,  385,  369,
+      836,  267,  837,  445,  445,  437,  437,  437,  486,  486,
 
-      499,  598,  598,  340,  501,  501,  501,  527,  499,  389,
-      520,  520,  520,  547,  842,  527,  608,  547,  843,  562,
-      562,  562,  572,  572,  572,  608,  583,  583,  583,  605,
-      605,  547,  597,  597,  597,  844,  404,  437,  437,  437,
-      584,  584,  584,  604,  604,  604,  487,  437,  486,  437,
-      437,  437,  437,  601,  601,  601,  606,  606,  501,  615,
-      615,  615,  601,  437,  513,  513,  513,  651,  651,  651,
-      848,  572,  584,  849,  513,  562,  513,  513,  513,  513,
-      583,  652,  652,  687,  687,  655,  655,  655,  688,  688,
-      513,  519,  519,  519,  655,  702,  656,  656,  656,  690,
+      486,  487,  487,  487,  499,  437,  389,  437,  437,  437,
+      437,  838,  499,  501,  501,  501,  513,  513,  513,  340,
+      521,  521,  437,  520,  520,  520,  513,  527,  513,  513,
+      513,  513,  519,  519,  519,  527,  547,  840,  404,  841,
+      547,  842,  519,  513,  519,  519,  519,  519,  558,  558,
+      558,  487,  843,  486,  547,  562,  562,  562,  558,  519,
+      558,  558,  558,  558,  572,  572,  572,  844,  501,  522,
+      522,  522,  583,  583,  583,  558,  584,  584,  584,  596,
+      596,  596,  522,  522,  522,  597,  597,  597,  848,  596,
+      849,  596,  596,  596,  596,  598,  598,  604,  604,  604,
 
-      855,  519,  702,  519,  519,  519,  519,  601,  690,  659,
-      659,  659,  658,  658,  658,  703,  703,  519,  522,  522,
-      522,  673,  673,  673,  686,  686,  686,  857,  698,  698,
-      698,  522,  522,  522,  659,  699,  699,  699,  742,  655,
-      858,  697,  697,  697,  704,  704,  704,  742,  522,  522,
-      522,  522,  656,  673,  859,  522,  739,  739,  522,  740,
-      740,  522,  778,  778,  522,  558,  558,  558,  658,  705,
-      705,  705,  738,  738,  738,  558,  860,  558,  558,  558,
-      558,  697,  698,  747,  697,  749,  749,  749,  773,  699,
-      862,  558,  596,  596,  596,  779,  779,  779,  864,  747,
+      522,  522,  522,  522,  605,  605,  596,  522,  702,  584,
+      522,  855,  562,  522,  572,  702,  522,  606,  606,  615,
+      615,  615,  601,  601,  601,  652,  652,  583,  599,  599,
+      599,  601,  651,  651,  651,  857,  650,  650,  650,  687,
+      687,  599,  599,  599,  688,  688,  650,  777,  650,  650,
+      650,  650,  686,  686,  686,  695,  656,  656,  656,  599,
+      599,  599,  599,  650,  703,  703,  599,  739,  739,  599,
+      858,  695,  599,  740,  740,  599,  777,  601,  653,  653,
+      653,  655,  655,  655,  658,  658,  658,  697,  697,  697,
+      655,  653,  653,  653,  659,  659,  659,  673,  673,  673,
 
-      785,  785,  596,  773,  596,  596,  596,  596,  865,  750,
-      750,  750,  754,  754,  754,  751,  751,  751,  596,  599,
-      599,  599,  756,  756,  756,  749,  819,  819,  749,  753,
-      753,  753,  599,  599,  599,  779,  866,  754,  779,  784,
-      784,  784,  867,  780,  780,  780,  868,  756,  861,  599,
-      599,  599,  599,  825,  825,  825,  599,  826,  826,  599,
-      853,  853,  599,  750,  861,  599,  650,  650,  650,  751,
-      854,  854,  781,  781,  781,  856,  650,  869,  650,  650,
-      650,  650,  870,  780,  856,  753,  780,  872,  782,  782,
-      782,  875,  650,  653,  653,  653,  876,  839,  839,  839,
+      698,  698,  698,  699,  699,  699,  704,  704,  704,  653,
+      653,  653,  653,  656,  742,  859,  653,  778,  778,  653,
+      659,  860,  653,  742,  747,  653,  785,  785,  697,  862,
+      673,  697,  700,  700,  700,  864,  655,  705,  705,  705,
+      747,  658,  700,  865,  700,  700,  700,  700,  738,  738,
+      738,  749,  749,  749,  866,  698,  819,  819,  699,  700,
+      750,  750,  750,  751,  751,  751,  752,  752,  752,  753,
+      753,  753,  754,  754,  754,  867,  752,  868,  752,  752,
+      752,  752,  756,  756,  756,  856,  779,  779,  779,  784,
+      784,  784,  749,  752,  856,  749,  826,  826,  754,  780,
 
-      852,  852,  852,  820,  820,  820,  653,  653,  653,  781,
-      877,  878,  781,  880,  882,  781,  821,  821,  821,  883,
-      822,  822,  822,  653,  653,  653,  653,  782,  782,  884,
-      653,  782,  885,  653,  886,  887,  653,  888,  890,  653,
-      700,  700,  700,  820,  891,  892,  820,  823,  823,  823,
-      700,  839,  700,  700,  700,  700,  821,  822,  893,  821,
-      822,  897,  897,  822,  898,  898,  700,  752,  752,  752,
-      899,  901,  829,  829,  829,  902,  903,  752,  904,  752,
-      752,  752,  752,  831,  831,  831,  823,  823,  906,  908,
-      823,  914,  915,  752,  786,  786,  786,  829,  896,  896,
+      780,  780,  869,  781,  781,  781,  853,  853,  756,  782,
+      782,  782,  825,  825,  825,  750,  854,  854,  751,  820,
+      820,  820,  829,  829,  829,  870,  753,  779,  872,  861,
+      779,  821,  821,  821,  875,  822,  822,  822,  876,  877,
+      780,  781,  878,  780,  781,  861,  880,  781,  829,  782,
+      782,  882,  883,  782,  786,  786,  786,  831,  831,  831,
+      820,  884,  885,  820,  823,  823,  823,  786,  786,  786,
+      886,  887,  821,  822,  888,  821,  822,  890,  891,  822,
+      833,  833,  833,  892,  893,  786,  786,  786,  786,  839,
+      839,  839,  786,  897,  897,  786,  898,  898,  786,  899,
 
-      896,  833,  833,  833,  850,  850,  850,  786,  786,  786,
-      851,  851,  851,  900,  905,  916,  917,  918,  921,  863,
-      863,  863,  900,  922,  786,  786,  786,  786,  923,  924,
-      905,  786,  925,  926,  786,  927,  928,  786,  938,  831,
-      786,  827,  827,  827,  850,  850,  939,  850,  931,  931,
-      851,  940,  943,  851,  827,  827,  827,  833,  851,  863,
-      947,  951,  863,  894,  894,  894,  953,  895,  895,  895,
-      954,  827,  827,  827,  827,  863,  955,  935,  827,  935,
-      956,  827,  957,  959,  827,  960,  970,  827,  907,  907,
-      907,  909,  909,  909,  912,  912,  912,  919,  919,  919,
+      901,  786,  902,  900,  823,  823,  903,  904,  823,  827,
+      827,  827,  900,  906,  831,  908,  850,  850,  850,  852,
+      852,  852,  827,  827,  827,  851,  851,  851,  914,  863,
+      863,  863,  905,  915,  894,  894,  894,  833,  916,  917,
+      827,  827,  827,  827,  839,  918,  921,  827,  905,  922,
+      827,  923,  924,  827,  925,  926,  827,  850,  850,  927,
+      850,  895,  895,  895,  928,  938,  851,  931,  931,  851,
+      863,  939,  940,  863,  851,  894,  894,  943,  894,  896,
+      896,  896,  907,  907,  907,  947,  863,  909,  909,  909,
+      912,  912,  912,  919,  919,  919,  929,  929,  929,  935,
 
-      929,  929,  929,  894,  894,  971,  894,  895,  963,  963,
-      895,  967,  972,  967,  973,  895,  980,  930,  930,  930,
-      976,  976,  976,  977,  977,  981,  983,  984,  907,  985,
-      986,  907,  932,  932,  932,  987,  933,  933,  933,  990,
-      929,  991,  992,  929,  907,  993,  992,  909,  929,  994,
-      912,  919,  920,  920,  920,  996,  993,  930,  997,  998,
-      930, 1001,  920,  930,  920,  920,  920,  920,  934,  934,
-      934, 1003,  932, 1004, 1005,  932,  933, 1006,  920,  933,
-      961,  961,  961, 1009, 1010, 1013, 1014, 1015,  932,  962,
-      962,  962,  933,  964,  964,  964, 1011,  965,  965,  965,
+      951,  935,  895,  953,  954,  895,  920,  920,  920,  955,
+      895,  930,  930,  930,  956,  957,  920,  959,  920,  920,
+      920,  920,  960,  907,  963,  963,  907,  932,  932,  932,
+      967,  970,  967,  920,  933,  933,  933,  929,  971,  907,
+      929,  934,  934,  934,  909,  929,  972,  912,  919,  962,
+      962,  962,  930,  973,  980,  930,  977,  977,  930,  961,
+      961,  961,  981,  964,  964,  964,  983,  984,  932,  985,
+      986,  932,  965,  965,  965,  933,  987,  990,  933,  934,
+      991,  993,  934,  994,  932,  934,  966,  966,  966,  996,
+      962,  933,  993,  962,  997,  992,  962,  998,  934,  992,
 
-     1011,  966,  966,  966, 1012,  934, 1018, 1018,  934, 1019,
-     1019,  934, 1017, 1017, 1017, 1012, 1020, 1021, 1022, 1023,
-      961, 1024, 1025,  961,  934, 1027, 1021, 1026,  961,  962,
-     1029, 1031,  962,  964, 1032,  962,  964,  965,  966, 1033,
-      965,  966, 1041, 1026,  966, 1037, 1037, 1037, 1042,  964,
-     1038, 1038, 1043,  965,  988,  988,  988,  966,  978,  978,
-      978, 1045, 1047, 1043, 1049, 1044, 1050, 1051, 1007, 1007,
-     1007,  978,  978,  978, 1044, 1052, 1056, 1056, 1056, 1057,
-     1057, 1028, 1028, 1028, 1060, 1036, 1036, 1036,  978,  978,
-      978,  978, 1061, 1063,  988,  978, 1065,  988,  978, 1062,
+      961, 1001, 1003,  961,  964, 1004, 1005,  964,  961,  976,
+      976,  976, 1006,  965, 1009, 1010,  965, 1013, 1014, 1015,
+      964,  988,  988,  988,  966, 1012, 1020,  966, 1011,  965,
+      966, 1022, 1011, 1017, 1017, 1017, 1012, 1018, 1018, 1007,
+     1007, 1007, 1021,  966,  978,  978,  978, 1019, 1019, 1023,
+     1024, 1021, 1025, 1026, 1027, 1029, 1031,  978,  978,  978,
+     1032, 1033,  988, 1038, 1038,  988, 1041, 1042,  988, 1026,
+     1028, 1028, 1028, 1043, 1045,  978,  978,  978,  978, 1047,
+     1007, 1044,  978, 1007, 1043,  978, 1007, 1049,  978, 1050,
+     1044,  978,  989,  989,  989, 1037, 1037, 1037, 1051, 1052,
 
-      988,  978, 1063, 1066,  978,  989,  989,  989, 1007, 1073,
-     1062, 1007, 1067, 1067, 1007,  989, 1086,  989,  989,  989,
-      989, 1028, 1080, 1080, 1028, 1036, 1088, 1071, 1036, 1071,
-     1089,  989, 1090, 1055, 1055, 1055, 1091, 1028, 1084, 1084,
-     1064, 1064, 1064, 1085, 1085,  989, 1093, 1095,  989, 1008,
-     1008, 1008, 1079, 1079, 1079, 1083, 1083, 1083, 1087, 1008,
-     1096, 1008, 1008, 1008, 1008, 1092, 1099, 1087, 1100, 1068,
-     1068, 1068, 1102, 1055, 1114, 1008, 1055, 1094, 1094, 1094,
-     1116, 1092, 1097, 1069, 1069, 1069, 1107, 1107, 1107, 1008,
-     1115, 1097, 1008, 1034, 1034, 1034, 1064, 1108, 1108, 1115,
+     1057, 1057,  989, 1060,  989,  989,  989,  989, 1034, 1034,
+     1034, 1028, 1061, 1065, 1028, 1036, 1036, 1036, 1034,  989,
+     1034, 1034, 1034, 1034, 1056, 1056, 1056, 1028, 1066, 1073,
+     1035, 1035, 1035,  989, 1086, 1034,  989, 1008, 1008, 1008,
+     1035, 1088, 1035, 1035, 1035, 1035, 1071, 1008, 1071, 1008,
+     1008, 1008, 1008, 1053, 1053, 1053, 1036, 1035, 1062, 1036,
+     1054, 1054, 1054, 1053, 1008, 1053, 1053, 1053, 1053, 1062,
+     1054, 1089, 1054, 1054, 1054, 1054, 1063, 1087, 1008, 1090,
+     1053, 1008, 1039, 1039, 1039, 1063, 1087, 1054, 1091, 1055,
+     1055, 1055, 1067, 1067, 1093, 1039, 1039, 1039, 1064, 1064,
 
-     1070, 1070, 1070, 1034, 1117, 1034, 1034, 1034, 1034, 1068,
-     1112, 1112, 1068, 1118, 1078, 1078, 1078, 1094, 1119, 1034,
-     1035, 1035, 1035, 1069, 1121, 1068, 1069, 1106, 1106, 1106,
-     1035, 1123, 1035, 1035, 1035, 1035, 1124, 1070, 1129, 1069,
-     1070, 1113, 1113, 1070, 1131, 1132, 1035, 1039, 1039, 1039,
-     1111, 1111, 1111, 1120, 1078, 1134, 1070, 1078, 1140, 1125,
-     1039, 1039, 1039, 1122, 1122, 1122, 1134, 1106, 1125, 1120,
-     1106, 1127, 1127, 1127, 1135, 1135, 1135, 1039, 1039, 1039,
-     1039, 1133, 1138, 1138, 1039, 1133, 1142, 1039, 1139, 1139,
-     1039, 1141, 1143, 1039, 1053, 1053, 1053, 1137, 1137, 1137,
+     1064, 1068, 1068, 1068, 1079, 1079, 1079, 1080, 1080, 1083,
+     1083, 1083, 1092, 1039, 1039, 1039, 1039, 1084, 1084, 1095,
+     1039, 1085, 1085, 1039, 1096, 1099, 1039, 1100, 1092, 1039,
+     1055, 1102, 1097, 1055, 1058, 1058, 1058, 1114, 1069, 1069,
+     1069, 1097, 1068, 1108, 1108, 1068, 1116, 1058, 1058, 1058,
+     1070, 1070, 1070, 1112, 1112, 1064, 1113, 1113, 1068, 1078,
+     1078, 1078, 1107, 1107, 1107, 1058, 1058, 1058, 1058, 1111,
+     1111, 1111, 1058, 1117, 1115, 1058, 1118, 1119, 1058, 1069,
+     1121, 1058, 1069, 1115, 1123, 1120, 1124, 1129, 1070, 1131,
+     1125, 1070, 1132, 1134, 1070, 1069, 1076, 1076, 1076, 1125,
 
-     1141, 1144, 1145, 1122, 1053, 1147, 1053, 1053, 1053, 1053,
-     1146, 1148, 1148, 1148, 1149, 1149, 1150, 1150, 1150, 1153,
-     1053, 1054, 1054, 1054, 1158, 1158, 1146, 1127, 1161, 1168,
-     1135, 1054, 1170, 1054, 1054, 1054, 1054, 1151, 1151, 1151,
-     1157, 1157, 1157, 1156, 1156, 1156, 1169, 1054, 1058, 1058,
-     1058, 1171, 1152, 1152, 1152, 1169, 1150, 1165, 1165, 1165,
-     1172, 1058, 1058, 1058, 1166, 1166, 1167, 1167, 1173, 1175,
-     1181, 1174, 1176, 1176, 1176, 1177, 1177, 1151, 1058, 1058,
-     1058, 1058, 1190, 1156, 1191, 1058, 1156, 1174, 1058, 1152,
-     1195, 1058, 1152, 1210, 1058, 1076, 1076, 1076, 1212, 1156,
+     1078, 1120, 1140, 1078, 1134, 1142, 1076, 1070, 1076, 1076,
+     1076, 1076, 1094, 1094, 1094, 1138, 1138, 1104, 1104, 1104,
+     1106, 1106, 1106, 1076, 1081, 1081, 1081, 1104, 1143, 1104,
+     1104, 1104, 1104, 1144, 1122, 1122, 1122, 1081, 1081, 1081,
+     1127, 1127, 1127, 1133, 1104, 1139, 1139, 1133, 1135, 1135,
+     1135, 1141, 1145, 1094, 1146, 1081, 1081, 1081, 1081, 1147,
+     1141, 1106, 1081, 1153, 1106, 1081, 1149, 1149, 1081, 1161,
+     1146, 1081, 1098, 1098, 1098, 1122, 1137, 1137, 1137, 1148,
+     1148, 1148, 1098, 1168, 1098, 1098, 1098, 1098, 1150, 1150,
+     1150, 1151, 1151, 1151, 1154, 1154, 1154, 1127, 1170, 1098,
 
-     1178, 1178, 1178, 1186, 1186, 1076, 1213, 1076, 1076, 1076,
-     1076, 1179, 1179, 1179, 1185, 1185, 1185, 1184, 1184, 1184,
-     1192, 1076, 1081, 1081, 1081, 1193, 1180, 1180, 1180, 1196,
-     1196, 1192, 1204, 1204, 1193, 1081, 1081, 1081, 1208, 1208,
-     1178, 1194, 1194, 1194, 1197, 1197, 1197, 1198, 1198, 1198,
-     1214, 1179, 1081, 1081, 1081, 1081, 1215, 1184, 1211, 1081,
-     1184, 1217, 1081, 1180, 1216, 1081, 1180, 1211, 1081, 1098,
-     1098, 1098, 1234, 1184, 1199, 1199, 1199, 1209, 1209, 1098,
-     1216, 1098, 1098, 1098, 1098, 1202, 1202, 1202, 1203, 1203,
-     1203, 1207, 1207, 1207, 1236, 1098, 1237, 1194, 1218, 1218,
+     1152, 1152, 1152, 1171, 1154, 1135, 1154, 1154, 1154, 1154,
+     1098, 1109, 1109, 1109, 1157, 1157, 1157, 1158, 1158, 1166,
+     1166, 1154, 1167, 1167, 1109, 1109, 1109, 1169, 1172, 1150,
+     1173, 1175, 1151, 1165, 1165, 1165, 1169, 1174, 1152, 1177,
+     1177, 1152, 1109, 1109, 1109, 1109, 1156, 1156, 1156, 1109,
+     1181, 1190, 1109, 1174, 1191, 1109, 1186, 1186, 1109, 1126,
+     1126, 1126, 1176, 1176, 1176, 1155, 1155, 1155, 1195, 1126,
+     1210, 1126, 1126, 1126, 1126, 1155, 1212, 1155, 1155, 1155,
+     1155, 1178, 1178, 1178, 1213, 1192, 1126, 1156, 1214, 1193,
+     1156, 1215, 1155, 1179, 1179, 1179, 1192, 1126, 1193, 1217,
 
-     1218, 1220, 1220, 1221, 1221, 1221, 1098, 1104, 1104, 1104,
-     1222, 1222, 1222, 1238, 1199, 1199, 1239, 1104, 1241, 1104,
-     1104, 1104, 1104, 1228, 1228, 1202, 1232, 1232, 1202, 1223,
-     1223, 1223, 1243, 1104, 1109, 1109, 1109, 1244, 1218, 1233,
-     1233, 1202, 1240, 1247, 1226, 1226, 1226, 1109, 1109, 1109,
-     1227, 1227, 1227, 1235, 1218, 1231, 1231, 1231, 1240, 1242,
-     1242, 1242, 1235, 1245, 1109, 1109, 1109, 1109, 1253, 1223,
-     1223, 1109, 1245, 1255, 1109, 1251, 1251, 1109, 1252, 1252,
-     1109, 1126, 1126, 1126, 1226, 1256, 1257, 1226, 1248, 1248,
-     1248, 1126, 1258, 1126, 1126, 1126, 1126, 1254, 1259, 1242,
+     1184, 1184, 1184, 1156, 1159, 1159, 1159, 1211, 1180, 1180,
+     1180, 1196, 1196, 1182, 1182, 1182, 1211, 1159, 1159, 1159,
+     1204, 1204, 1178, 1182, 1234, 1182, 1182, 1182, 1182, 1185,
+     1185, 1185, 1208, 1208, 1179, 1159, 1159, 1159, 1159, 1236,
+     1182, 1184, 1159, 1237, 1184, 1159, 1180, 1216, 1159, 1180,
+     1238, 1159, 1183, 1183, 1183, 1209, 1209, 1184, 1194, 1194,
+     1194, 1239, 1183, 1216, 1183, 1183, 1183, 1183, 1197, 1197,
+     1197, 1198, 1198, 1198, 1241, 1199, 1199, 1199, 1243, 1183,
+     1187, 1187, 1187, 1203, 1203, 1203, 1207, 1207, 1207, 1244,
+     1202, 1202, 1202, 1187, 1187, 1187, 1218, 1218, 1218, 1220,
 
-     1226, 1250, 1250, 1250, 1260, 1273, 1254, 1126, 1261, 1261,
-     1261, 1262, 1262, 1275, 1259, 1242, 1271, 1271, 1126, 1154,
-     1154, 1154, 1263, 1263, 1263, 1264, 1264, 1264, 1248, 1154,
-     1276, 1154, 1154, 1154, 1154, 1277, 1248, 1272, 1272, 1265,
-     1265, 1265, 1268, 1268, 1268, 1154, 1155, 1155, 1155, 1270,
-     1270, 1270, 1278, 1279, 1274, 1280, 1155, 1286, 1155, 1155,
-     1155, 1155, 1263, 1274, 1261, 1264, 1282, 1282, 1314, 1279,
-     1291, 1291, 1155, 1159, 1159, 1159, 1265, 1316, 1263, 1265,
-     1315, 1264, 1268, 1281, 1281, 1281, 1159, 1159, 1159, 1315,
-     1268, 1290, 1290, 1290, 1317, 1265, 1283, 1283, 1283, 1318,
+     1220, 1221, 1221, 1221, 1222, 1222, 1222, 1223, 1223, 1223,
+     1247, 1187, 1187, 1187, 1187, 1194, 1199, 1199, 1187, 1228,
+     1228, 1187, 1232, 1232, 1187, 1233, 1233, 1187, 1200, 1200,
+     1200, 1202, 1251, 1251, 1202, 1252, 1252, 1218, 1200, 1253,
+     1200, 1200, 1200, 1200, 1227, 1227, 1227, 1202, 1223, 1223,
+     1224, 1224, 1224, 1218, 1255, 1200, 1205, 1205, 1205, 1240,
+     1224, 1256, 1224, 1224, 1224, 1224, 1231, 1231, 1231, 1205,
+     1205, 1205, 1235, 1245, 1254, 1240, 1257, 1224, 1250, 1250,
+     1250, 1235, 1245, 1254, 1258, 1259, 1260, 1205, 1205, 1205,
+     1205, 1262, 1262, 1273, 1205, 1271, 1271, 1205, 1272, 1272,
 
-     1284, 1284, 1284, 1159, 1159, 1159, 1159, 1295, 1295, 1319,
-     1159, 1300, 1300, 1159, 1308, 1308, 1159, 1312, 1312, 1159,
-     1182, 1182, 1182, 1296, 1296, 1296, 1285, 1285, 1285, 1320,
-     1182, 1321, 1182, 1182, 1182, 1182, 1283, 1313, 1313, 1281,
-     1284, 1289, 1289, 1289, 1331, 1320, 1182, 1183, 1183, 1183,
-     1329, 1329, 1283, 1294, 1294, 1294, 1284, 1183, 1332, 1183,
-     1183, 1183, 1183, 1285, 1330, 1330, 1285, 1332, 1297, 1297,
-     1297, 1333, 1334, 1183, 1187, 1187, 1187, 1335, 1336, 1296,
-     1338, 1289, 1285, 1385, 1289, 1340, 1340, 1187, 1187, 1187,
-     1301, 1301, 1301, 1294, 1307, 1307, 1307, 1289, 1386, 1294,
-
-     1298, 1298, 1298, 1337, 1187, 1187, 1187, 1187, 1302, 1302,
-     1302, 1187, 1348, 1348, 1187, 1395, 1396, 1187, 1397, 1337,
-     1187, 1200, 1200, 1200, 1297, 1299, 1299, 1299, 1303, 1303,
-     1303, 1200, 1398, 1200, 1200, 1200, 1200, 1311, 1311, 1311,
-     1298, 1298, 1328, 1328, 1328, 1399, 1301, 1200, 1205, 1205,
-     1205, 1400, 1401, 1403, 1404, 1405, 1298, 1406, 1407, 1408,
-     1409, 1205, 1205, 1205, 1302, 1299, 1410, 1411, 1303, 1303,
-     1413, 1299, 1414,  812,  811,  810,  809,  808, 1205, 1205,
-     1205, 1205,  807,  804, 1303, 1205,  803,  802, 1205,  801,
-      799, 1205,  798,  797, 1205, 1219, 1219, 1219, 1219, 1219,
-
+     1205, 1259, 1275, 1205, 1219, 1219, 1219, 1219, 1219, 1219,
      1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
      1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
      1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
      1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
      1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219, 1219,
-      796, 1219, 1219, 1219, 1224, 1224, 1224,  795,  794, 1306,
-     1306, 1306,  793,  792, 1224,  791, 1224, 1224, 1224, 1224,
-     1322, 1322, 1322, 1359, 1359, 1359,  790, 1324, 1324, 1324,
-     1224, 1229, 1229, 1229,  789,  788,  774,  772, 1339, 1339,
-     1339, 1326, 1326, 1326, 1229, 1229, 1229,  768,  767, 1306,
+     1276, 1219, 1219, 1219, 1226, 1226, 1226, 1277, 1242, 1242,
+     1242, 1248, 1248, 1248, 1261, 1261, 1261, 1263, 1263, 1263,
+     1270, 1270, 1270, 1278, 1279, 1264, 1264, 1264, 1274, 1265,
+     1265, 1265, 1268, 1268, 1268, 1280, 1286, 1274, 1282, 1282,
 
-      766,  765, 1306,  764,  763, 1341, 1341, 1341,  762,  761,
-     1322, 1229, 1229, 1229, 1229, 1306, 1359, 1324, 1229,  760,
-      759, 1229,  758,  755, 1229, 1324, 1322, 1229, 1246, 1246,
-     1246, 1326,  748, 1324, 1342, 1342, 1342,  746, 1246, 1326,
-     1246, 1246, 1246, 1246, 1339, 1341,  745, 1326, 1343, 1343,
-     1343,  744,  743,  741, 1246,  737, 1345, 1345, 1345,  736,
-      735, 1341, 1349, 1349, 1349, 1246, 1287, 1287, 1287, 1347,
-     1347, 1347,  734,  733, 1342,  732, 1287,  730, 1287, 1287,
-     1287, 1287, 1350, 1350, 1350, 1343,  729,  728, 1343,  727,
-     1342,  726, 1287, 1288, 1288, 1288, 1345,  725,  724, 1351,
+     1279, 1281, 1281, 1281, 1314, 1226, 1291, 1291, 1226, 1242,
+     1295, 1295, 1248, 1290, 1290, 1290, 1300, 1300, 1263, 1316,
+     1248, 1226, 1229, 1229, 1229, 1242, 1264, 1265, 1308, 1308,
+     1265, 1261, 1317, 1268, 1263, 1229, 1229, 1229, 1283, 1283,
+     1283, 1268, 1264, 1307, 1307, 1307, 1265, 1284, 1284, 1284,
+     1311, 1311, 1311, 1229, 1229, 1229, 1229, 1318, 1281, 1315,
+     1229, 1312, 1312, 1229, 1313, 1313, 1229, 1319, 1315, 1229,
+     1246, 1246, 1246, 1285, 1285, 1285, 1321, 1329, 1329, 1283,
+     1246, 1331, 1246, 1246, 1246, 1246, 1320, 1332, 1284, 1296,
+     1296, 1296, 1297, 1297, 1297, 1283, 1332, 1246, 1289, 1289,
 
-     1351, 1351, 1345, 1288, 1343, 1288, 1288, 1288, 1288, 1347,
-      723,  721, 1345,  720,  719, 1347,  718,  717, 1349, 1288,
-     1292, 1292, 1292,  716,  715, 1347,  713,  712,  711,  710,
-     1354, 1354, 1354, 1292, 1292, 1292,  709,  708, 1350, 1351,
-     1351,  706,  701, 1356, 1356, 1356,  696,  694,  693,  692,
-     1292, 1292, 1292, 1292,  691, 1351,  689, 1292,  685,  684,
-     1292,  683,  682, 1292,  681,  680, 1292, 1304, 1304, 1304,
-     1354,  679, 1357, 1357, 1357,  678,  677, 1304, 1354, 1304,
-     1304, 1304, 1304, 1356,  676,  674, 1354,  672,  671,  670,
-      669,  668,  667, 1304, 1309, 1309, 1309,  666,  665, 1356,
+     1289, 1333, 1320, 1334, 1284, 1287, 1287, 1287, 1246, 1330,
+     1330, 1285, 1335, 1336, 1285, 1287, 1338, 1287, 1287, 1287,
+     1287, 1288, 1288, 1288, 1337, 1294, 1294, 1294, 1340, 1340,
+     1285, 1288, 1287, 1288, 1288, 1288, 1288, 1348, 1348, 1289,
+     1337, 1385, 1289, 1328, 1328, 1328, 1296, 1386, 1288, 1297,
+     1298, 1298, 1298, 1395, 1396, 1289, 1292, 1292, 1292, 1397,
+     1399, 1299, 1299, 1299, 1400, 1403, 1294, 1404, 1405, 1292,
+     1292, 1292, 1294, 1301, 1301, 1301, 1302, 1302, 1302, 1303,
+     1303, 1303, 1306, 1306, 1306, 1406, 1407, 1292, 1292, 1292,
+     1292, 1298, 1298, 1408, 1292, 1409, 1410, 1292, 1411, 1413,
 
-      664,  663,  662,  661,  660,  657,  649, 1309, 1309, 1309,
-      647,  646, 1357,  645,  644,  643,  642,  641, 1357,  640,
-      639,  638,  637,  636, 1309, 1309, 1309, 1309, 1357,  635,
-      634, 1309,  633,  632, 1309,  631,  630, 1309,  629,  628,
-     1309, 1323, 1323, 1323,  626,  625,  624,  623,  622,  621,
-      620, 1323,  619, 1323, 1323, 1323, 1323,  618,  617,  616,
-      614,  612,  611,  610,  609,  607,  603, 1323,  602,  595,
-      594,  593,  592,  591,  590,  589,  588,  587,  586,  585,
-      582, 1323, 1325, 1325, 1325,  581,  580,  579,  578,  577,
-      576,  575, 1325,  574, 1325, 1325, 1325, 1325,  573,  571,
+     1292, 1414, 1299, 1292, 1304, 1304, 1304, 1298, 1299, 1322,
+     1322, 1322,  812,  811, 1304,  810, 1304, 1304, 1304, 1304,
+     1303, 1303,  809, 1306,  808,  807, 1306,  804,  803,  802,
+     1301, 1304,  801, 1302,  799,  798, 1303,  797,  796, 1306,
+     1309, 1309, 1309,  795,  794,  793,  792, 1359, 1359, 1359,
+     1322,  791,  790, 1309, 1309, 1309, 1324, 1324, 1324, 1339,
+     1339, 1339,  789, 1326, 1326, 1326, 1322, 1341, 1341, 1341,
+      788, 1309, 1309, 1309, 1309,  774,  772,  768, 1309,  767,
+      766, 1309,  765,  764, 1309,  763,  762, 1309, 1323, 1323,
+     1323, 1359, 1342, 1342, 1342,  761,  760, 1324, 1323,  759,
 
-      570,  569,  568,  567,  566,  565,  564,  563, 1325,  561,
-      560,  559,  557,  556,  555,  554,  553,  552,  551,  550,
-      549,  546, 1325, 1344, 1344, 1344,  545,  544,  543,  542,
-      541,  540,  539, 1344,  538, 1344, 1344, 1344, 1344,  537,
-      535,  534,  533,  532,  531,  530,  529,  528,  526, 1344,
-      525,  516,  515,  514,  512,  511,  510,  509,  508,  507,
-      506,  505,  504, 1344, 1346, 1346, 1346,  503,  502,  500,
-      498,  497,  495,  494, 1346,  493, 1346, 1346, 1346, 1346,
-      492,  491,  490,  489,  488,  485,  484,  483,  482,  481,
-     1346,  480,  479,  478,  477,  476,  475,  474,  472,  471,
+     1323, 1323, 1323, 1323, 1326, 1324,  758,  755, 1341, 1343,
+     1343, 1343, 1326, 1324,  748, 1323, 1339,  746,  745,  744,
+     1326, 1345, 1345, 1345, 1341,  743, 1349, 1349, 1349, 1323,
+     1325, 1325, 1325, 1342, 1347, 1347, 1347, 1350, 1350, 1350,
+     1325,  741, 1325, 1325, 1325, 1325,  737, 1343,  736, 1342,
+     1343, 1351, 1351, 1351, 1354, 1354, 1354, 1325,  735,  734,
+      733,  732, 1345, 1356, 1356, 1356, 1343,  730, 1345,  729,
+      728, 1325, 1344, 1344, 1344, 1347,  727,  726, 1345,  725,
+      724, 1347, 1344, 1349, 1344, 1344, 1344, 1344,  723,  721,
+      720, 1347, 1351, 1351, 1350, 1354, 1357, 1357, 1357, 1344,
 
-      469,  468,  467,  466, 1346, 1352, 1352, 1352,  464,  463,
-      462,  461,  460,  459,  458, 1352,  457, 1352, 1352, 1352,
-     1352,  456,  454,  453,  452,  451,  450,  449,  448,  447,
-      446, 1352,  444,  443,  442,  441,  440,  439,  438,  436,
-      435,  434,  433,  432,  431, 1352,  430,  429,  428,  427,
-      426,  425,  424,  422,  421,  420,  419,  418,  417,  416,
-      415, 1352, 1353, 1353, 1353,  414,  413,  412,  411,  410,
-      409,  408, 1353,  407, 1353, 1353, 1353, 1353,  406,  405,
-      403,  402,  401,  400,  398,  397,  396,  395, 1353,  394,
-      393,  392,  391,  390,  388,  387,  386,  384,  383,  381,
+      719,  718,  717, 1354, 1356,  716,  715,  713, 1351,  712,
+      711, 1354,  710, 1344, 1346, 1346, 1346,  709,  708,  706,
+     1356,  701,  696,  694, 1346,  693, 1346, 1346, 1346, 1346,
+      692,  691,  689,  685,  684,  683,  682, 1357,  681,  680,
+      679, 1346,  678, 1357,  677,  676,  674,  672,  671,  670,
+      669,  668,  667, 1357,  666, 1346, 1352, 1352, 1352,  665,
+      664,  663,  662,  661,  660,  657, 1352,  649, 1352, 1352,
+     1352, 1352,  647,  646,  645,  644,  643,  642,  641,  640,
+      639,  638,  637, 1352,  636,  635,  634,  633,  632,  631,
+      630,  629,  628,  626,  625,  624,  623, 1352,  622,  621,
 
-      380,  378, 1353,  377,  376,  375,  374,  373,  372,  371,
-      370,  368,  366,  365,  364,  363,  362,  361, 1353, 1355,
-     1355, 1355,  360,  359,  358,  357,  356,  355,  354, 1355,
-      353, 1355, 1355, 1355, 1355,  351,  350,  349,  348,  347,
-      345,  342,  339,  338,  337, 1355,  336,  335,  334,  333,
-      332,  331,  330,  329,  327,  326,  325,  324,  322, 1355,
-      321,  320,  318,  317,  316,  315,  313,  312,  311,  310,
-      309,  308,  304,  303,  302, 1355, 1358, 1358, 1358,  301,
-      300,  299,  298,  296,  295,  294, 1358,  293, 1358, 1358,
-     1358, 1358,  291,  289,  288,  287,  286,  285,  283,  280,
+      620,  619,  618,  617,  616,  614,  612,  611,  610,  609,
+      607,  603,  602, 1352, 1353, 1353, 1353,  595,  594,  593,
+      592,  591,  590,  589, 1353,  588, 1353, 1353, 1353, 1353,
+      587,  586,  585,  582,  581,  580,  579,  578,  577,  576,
+      575, 1353,  574,  573,  571,  570,  569,  568,  567,  566,
+      565,  564,  563,  561,  560, 1353,  559,  557,  556,  555,
+      554,  553,  552,  551,  550,  549,  546,  545,  544,  543,
+      542, 1353, 1355, 1355, 1355,  541,  540,  539,  538,  537,
+      535,  534, 1355,  533, 1355, 1355, 1355, 1355,  532,  531,
+      530,  529,  528,  526,  525,  516,  515,  514,  512, 1355,
 
-      279,  278, 1358,  277,  276,  275,  274,  273,  272,  271,
-      270,  269,  264,  262,  261,  259, 1358,  258,  257,  256,
-      254,  253,  251,  250,  249,  248,  246,  242,  238,  236,
-      234,  232, 1358, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
-     1361, 1361, 1361, 1361, 1361, 1362, 1362, 1362, 1362, 1362,
-     1362, 1362, 1362, 1362, 1362, 1362, 1362, 1363, 1363, 1363,
-     1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1363, 1364,
+      511,  510,  509,  508,  507,  506,  505,  504,  503,  502,
+      500,  498,  497, 1355,  495,  494,  493,  492,  491,  490,
+      489,  488,  485,  484,  483,  482,  481,  480,  479, 1355,
+     1358, 1358, 1358,  478,  477,  476,  475,  474,  472,  471,
+     1358,  469, 1358, 1358, 1358, 1358,  468,  467,  466,  464,
+      463,  462,  461,  460,  459,  458,  457, 1358,  456,  454,
+      453,  452,  451,  450,  449,  448,  447,  446,  444,  443,
+      442, 1358,  441,  440,  439,  438,  436,  435,  434,  433,
+      432,  431,  430,  429,  428,  427,  426, 1358, 1361, 1361,
+     1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361, 1361,
+
+     1361, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362, 1362,
+     1362, 1362, 1362, 1362, 1363, 1363, 1363, 1363, 1363, 1363,
+     1363, 1363, 1363, 1363, 1363, 1363, 1363, 1364, 1364, 1364,
      1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364, 1364,
-     1364, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
+     1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365, 1365,
      1365, 1365, 1365, 1366, 1366, 1366, 1366, 1366, 1366, 1366,
+     1366, 1366, 1366, 1366, 1366, 1366, 1367, 1367, 1367, 1367,
+     1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1367, 1368,
+     1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368,
+     1368, 1368, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369,
 
-     1366, 1366, 1366, 1366, 1366, 1367, 1367, 1367, 1367, 1367,
-     1367, 1367, 1367, 1367, 1367, 1367, 1367, 1368, 1368, 1368,
-     1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1368, 1369,
-     1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369, 1369,
-     1369, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370,
-     1370, 1370, 1370, 1371, 1371, 1371, 1371, 1371, 1371, 1371,
-     1371, 1371, 1371, 1371, 1371, 1372, 1372, 1372, 1372, 1372,
-     1372, 1372, 1372, 1372, 1372, 1372, 1372, 1373, 1373, 1373,
-     1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1373, 1374,
+     1369, 1369, 1369, 1369, 1369, 1370, 1370, 1370, 1370, 1370,
+     1370, 1370, 1370, 1370, 1370, 1370, 1370, 1370, 1371, 1371,
+     1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371, 1371,
+     1371, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372, 1372,
+     1372, 1372, 1372, 1372, 1373, 1373, 1373, 1373, 1373, 1373,
+     1373, 1373, 1373, 1373, 1373, 1373, 1373, 1374, 1374, 1374,
      1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374, 1374,
-
-     1374, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375,
+     1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375, 1375,
      1375, 1375, 1375, 1376, 1376, 1376, 1376, 1376, 1376, 1376,
-     1376, 1376, 1376, 1376, 1376, 1377, 1377, 1377, 1377, 1377,
-     1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378,  231,  230,
-     1378,  229, 1378, 1378, 1378, 1378, 1378, 1379,  228,  226,
-     1379, 1379, 1379, 1379, 1379, 1379, 1379, 1380, 1380,  225,
-     1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1380, 1381,
-      223,  221,  220, 1381, 1382,  219,  218, 1382, 1382, 1382,
-     1382, 1382, 1382, 1382,  217, 1382, 1383,  215, 1383, 1383,
-     1383, 1384, 1384, 1387,  214,  213, 1387, 1387, 1387, 1387,
+     1376, 1376, 1376, 1376, 1376, 1376, 1377, 1377, 1377, 1377,
 
-     1387, 1387, 1387, 1388,  212,  203, 1388, 1388, 1388, 1388,
-     1388, 1388, 1388, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
-     1389, 1389,  196, 1389, 1389, 1390, 1390, 1390, 1390, 1390,
-     1390, 1390, 1390,  192, 1390, 1390, 1390, 1391, 1391, 1391,
-     1391, 1391, 1391, 1391, 1391, 1391, 1391, 1392,  188,  184,
-      170, 1392, 1393, 1393, 1394, 1394, 1394, 1394, 1394, 1394,
-     1394, 1394, 1394, 1394, 1394, 1394, 1402, 1402, 1402, 1402,
-     1402, 1402, 1402, 1402, 1402,  169, 1402, 1402, 1412, 1412,
-     1412, 1412, 1412, 1412, 1412, 1412, 1412, 1412,  167, 1412,
-      161,  160,  159,  157,  156,  155,  154,  153,  151,  149,
+     1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1377, 1378,
+      425,  424, 1378, 1378,  422, 1378, 1378, 1378, 1378, 1378,
+     1379,  421,  420, 1379, 1379, 1379, 1379, 1379, 1379, 1379,
+     1379, 1380, 1380,  419, 1380, 1380, 1380, 1380, 1380, 1380,
+     1380, 1380, 1380, 1380, 1381,  418,  417,  416, 1381, 1382,
+      415,  414, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      413, 1382, 1383,  412, 1383, 1383, 1383, 1384, 1384, 1387,
+      411,  410, 1387, 1387, 1387, 1387, 1387, 1387, 1387, 1387,
+     1388,  409,  408, 1388, 1388, 1388, 1388, 1388, 1388, 1388,
+     1388, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389, 1389,
 
-      147,  145,  144,  143,  142,  141,  135,  124,  120,  117,
-      114,  109,  108,  103,   93,   82,   80,   78,   77,   76,
-       74,   73,   72,   70,   68,   62,   58,   55,   52,   45,
-       42,   41,   34,   33, 1360, 1360, 1360, 1360, 1360, 1360,
+     1389,  407, 1389, 1389, 1390, 1390, 1390, 1390, 1390, 1390,
+     1390, 1390, 1390,  406, 1390, 1390, 1390, 1391, 1391, 1391,
+     1391, 1391, 1391, 1391, 1391, 1391, 1391, 1391, 1392,  405,
+      403,  402, 1392, 1393, 1393, 1394, 1394, 1394, 1394, 1394,
+     1394, 1394, 1394, 1394, 1394, 1394, 1394, 1394, 1398,  401,
+      400,  398,  397, 1398, 1401,  396,  395,  394,  393, 1401,
+     1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402, 1402,
+      392, 1402, 1402, 1412, 1412, 1412, 1412, 1412, 1412, 1412,
+     1412, 1412, 1412, 1412,  391, 1412,  390,  388,  387,  386,
+      384,  383,  381,  380,  378,  377,  376,  375,  374,  373,
+
+      372,  371,  370,  368,  366,  365,  364,  363,  362,  361,
+      360,  359,  358,  357,  356,  355,  354,  353,  351,  350,
+      349,  348,  347,  345,  342,  339,  338,  337,  336,  335,
+      334,  333,  332,  331,  330,  329,  327,  326,  325,  324,
+      322,  321,  320,  318,  317,  316,  315,  313,  312,  311,
+      310,  309,  308,  304,  303,  302,  301,  300,  299,  298,
+      296,  295,  294,  293,  291,  289,  288,  287,  286,  285,
+      283,  280,  279,  278,  277,  276,  275,  274,  273,  272,
+      271,  270,  269,  264,  262,  261,  259,  258,  257,  256,
+      254,  253,  251,  250,  249,  248,  246,  242,  238,  236,
+
+      234,  232,  231,  230,  229,  228,  226,  225,  223,  221,
+      220,  219,  218,  217,  215,  214,  213,  212,  203,  196,
+      192,  188,  184,  170,  169,  167,  161,  160,  159,  157,
+      156,  155,  154,  153,  151,  149,  147,  145,  144,  143,
+      142,  141,  135,  124,  120,  117,  114,  109,  108,  103,
+       93,   82,   80,   78,   77,   76,   74,   73,   72,   70,
+       68,   62,   58,   55,   52,   45,   42,   41,   34,   33,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
+
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
      1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
-     1360, 1360, 1360, 1360
-
+     1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360, 1360,
+     1360
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1737,13 +1745,16 @@
 
 #line 97 "detex.l"
 #undef IGNORE
+#undef ECHO
 
 #define	LaBEGIN		if (fLatex) BEGIN
-#define	IGNORE		if (fSpace && !fWord) putchar(' ')
+#define	IGNORE		Ignore()
+#define INCRLINENO	IncrLineNo()
+#define ECHO		Echo()
 #define NOUN		if (fSpace && !fWord && !fReplace) putchar(' '); else {if (fReplace) printf("noun");}
 #define VERBNOUN		if (fReplace) printf(" verbs noun"); /* puts a verb and a noun to make grammar checking work */
 #define	SPACE		if (!fWord) putchar(' ')
-#define	NEWLINE		if (!fWord) putchar('\n')
+#define	NEWLINE		LineBreak()
 #define	LATEX		fLatex=!fForcetex
 #define KILLARGS(x)	cArgs=x; LaBEGIN LaMacro
 #define STRIPARGS(x)	cArgs=x; LaBEGIN LaMacro2
@@ -1751,6 +1762,10 @@
 
 #define NO_MALLOC_DECL
 
+void LineBreak();
+void Ignore();
+void IncrLineNo();
+void Echo();
 void AddInclude(char *sbFile);
 void ErrorExit(const char *sb1);
 void UsageExit(void);
@@ -1800,8 +1815,9 @@
 int	fCite = 0;			/* flag to echo \cite and \ref args */
 int	fSpace = 0;			/* flag to replace \cs with space */
 int	fForcetex = 0;			/* flag to inhibit latex mode */
-int fShowPictures = 0;  /* flag to show picture names */
-int fReplace = 0;  /* flag to replace envirnments with "noun" */
+int	fSrcLoc = 0;			/* flag to display source location of original file */
+int fShowPictures = 0;	/* flag to show picture names */
+int fReplace = 0;		/* flag to replace envirnments with "noun" */
 
 int currBracesLevel = 0;
 int footnoteLevel = -100;
@@ -1811,13 +1827,16 @@
  * otherwise output contains imported files in reverse order.  Weird, but
  * true.
  */
-YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */
-int             csb = 0;		 /* depth of flex context stack */
+YY_BUFFER_STATE rgsb[NOFILE + 1];		/* flex context stack */
+char*			fFileNames[NOFILE + 1];	/* names of the buffers in context stack */
+int				fFileLines[NOFILE + 1];	/* line number in each of the context files */
+int				fIsColumn0 = 1;			/* Are we at the begining of a line? */
+int				csb = 0;				/* depth of flex context stack */
 #endif /* FLEX_SCANNER */
 
-#line 1819 "lex.yy.c"
+#line 1838 "lex.yy.c"
 
-#line 1821 "lex.yy.c"
+#line 1840 "lex.yy.c"
 
 #define INITIAL 0
 #define Define 1
@@ -2053,9 +2072,9 @@
 		}
 
 	{
-#line 196 "detex.l"
+#line 208 "detex.l"
 
-#line 2059 "lex.yy.c"
+#line 2078 "lex.yy.c"
 
 	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
 		{
@@ -2110,24 +2129,24 @@
 
 case 1:
 YY_RULE_SETUP
-#line 197 "detex.l"
-/* ignore comments */	;
+#line 209 "detex.l"
+/* ignore comments */	{INCRLINENO;}
 	YY_BREAK
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 199 "detex.l"
+#line 211 "detex.l"
 {LATEX; IGNORE;}
 	YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 201 "detex.l"
+#line 213 "detex.l"
 /* environment start */	{LaBEGIN LaBegin; IGNORE;}
 	YY_BREAK
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 203 "detex.l"
+#line 215 "detex.l"
 { if (BeginEnv("verbatim"))
 							BEGIN LaEnv;
 						    else
@@ -2138,24 +2157,24 @@
 case 5:
 /* rule 5 can match eol */
 YY_RULE_SETUP
-#line 210 "detex.l"
+#line 222 "detex.l"
 /* verbatim mode */	{BEGIN Normal; IGNORE;}
 	YY_BREAK
 case 6:
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 211 "detex.l"
+#line 223 "detex.l"
 ECHO;
 	YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 212 "detex.l"
+#line 224 "detex.l"
 ECHO;
 	YY_BREAK
 case 8:
 /* rule 8 can match eol */
 YY_RULE_SETUP
-#line 214 "detex.l"
+#line 226 "detex.l"
 { KILLARGS(1);
 						  if (BeginEnv("minipage"))
 							BEGIN LaEnv;
@@ -2167,7 +2186,7 @@
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 222 "detex.l"
+#line 234 "detex.l"
 {
 						  if (BeginEnv("table"))
 							BEGIN LaEnv;
@@ -2179,7 +2198,7 @@
 case 10:
 /* rule 10 can match eol */
 YY_RULE_SETUP
-#line 230 "detex.l"
+#line 242 "detex.l"
 {
 						  if (BeginEnv("figure"))
 							BEGIN LaEnv;
@@ -2190,7 +2209,7 @@
 	YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 238 "detex.l"
+#line 250 "detex.l"
 { if (BeginEnv(yytext))
 							BEGIN LaEnv;
 						    else
@@ -2201,28 +2220,28 @@
 /*<LaBegin>"\n"					NEWLINE;*/
 case 12:
 YY_RULE_SETUP
-#line 245 "detex.l"
-;
+#line 257 "detex.l"
+{INCRLINENO;}
 	YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 247 "detex.l"
+#line 259 "detex.l"
 /* absorb some environments */	{LaBEGIN LaEnd; IGNORE;}
 	YY_BREAK
 case 14:
 /* rule 14 can match eol */
 YY_RULE_SETUP
-#line 248 "detex.l"
+#line 260 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 249 "detex.l"
-;
+#line 261 "detex.l"
+{INCRLINENO;}
 	YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 251 "detex.l"
+#line 263 "detex.l"
 /* end environment */	{   if (EndEnv(yytext))
 							BEGIN Normal;
 						    IGNORE;
@@ -2230,354 +2249,354 @@
 	YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 255 "detex.l"
+#line 267 "detex.l"
 {BEGIN LaEnv; IGNORE;}
 	YY_BREAK
 /*<LaEnd>"\n"					NEWLINE;*/
 case 18:
 YY_RULE_SETUP
-#line 257 "detex.l"
-;
+#line 269 "detex.l"
+{INCRLINENO;}
 	YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-#line 259 "detex.l"
+#line 271 "detex.l"
 ;
 	YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 260 "detex.l"
+#line 272 "detex.l"
 ;
 	YY_BREAK
 case 21:
 /* rule 21 can match eol */
 YY_RULE_SETUP
-#line 261 "detex.l"
+#line 273 "detex.l"
 ;
 	YY_BREAK
 case 22:
 /* rule 22 can match eol */
 YY_RULE_SETUP
-#line 262 "detex.l"
+#line 274 "detex.l"
 ;
 	YY_BREAK
 case 23:
 /* rule 23 can match eol */
 YY_RULE_SETUP
-#line 263 "detex.l"
+#line 275 "detex.l"
 ;
 	YY_BREAK
 case 24:
 /* rule 24 can match eol */
 YY_RULE_SETUP
-#line 264 "detex.l"
+#line 276 "detex.l"
 ;
 	YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 265 "detex.l"
+#line 277 "detex.l"
 ; /* hack to fix \begin{minipage}{300pt} */
 	YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 267 "detex.l"
+#line 279 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 268 "detex.l"
+#line 280 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 269 "detex.l"
+#line 281 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 270 "detex.l"
+#line 282 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 271 "detex.l"
+#line 283 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 272 "detex.l"
+#line 284 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 273 "detex.l"
+#line 285 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 274 "detex.l"
+#line 286 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 275 "detex.l"
+#line 287 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 276 "detex.l"
+#line 288 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 277 "detex.l"
+#line 289 "detex.l"
 { STRIPARGS(2); }
 	YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 278 "detex.l"
+#line 290 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 279 "detex.l"
+#line 291 "detex.l"
 { STRIPARGS(2); }
 	YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 280 "detex.l"
+#line 292 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 281 "detex.l"
+#line 293 "detex.l"
 ;
 	YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 282 "detex.l"
+#line 294 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 42:
 /* rule 42 can match eol */
 YY_RULE_SETUP
-#line 283 "detex.l"
+#line 295 "detex.l"
 { LaBEGIN LaPicture; }
 	YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 285 "detex.l"
+#line 297 "detex.l"
 ;
 	YY_BREAK
 case 44:
 /* rule 44 can match eol */
 YY_RULE_SETUP
-#line 286 "detex.l"
+#line 298 "detex.l"
 { if(fShowPictures) { printf("<Picture %s>", yytext); } }
 	YY_BREAK
 case 45:
 /* rule 45 can match eol */
 YY_RULE_SETUP
-#line 287 "detex.l"
-BEGIN Normal;
+#line 299 "detex.l"
+{ BEGIN Normal; INCRLINENO; }
 	YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 288 "detex.l"
+#line 300 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 290 "detex.l"
+#line 302 "detex.l"
 { KILLARGS(3); }
 	YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 291 "detex.l"
+#line 303 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 292 "detex.l"
+#line 304 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 293 "detex.l"
+#line 305 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 294 "detex.l"
+#line 306 "detex.l"
 { KILLARGS(3); }
 	YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 295 "detex.l"
+#line 307 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 296 "detex.l"
+#line 308 "detex.l"
 { STRIPARGS(1); }
 	YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 297 "detex.l"
+#line 309 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 298 "detex.l"
+#line 310 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 299 "detex.l"
+#line 311 "detex.l"
 { KILLARGS(3); }
 	YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 301 "detex.l"
+#line 313 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 302 "detex.l"
+#line 314 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 303 "detex.l"
+#line 315 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 304 "detex.l"
+#line 316 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 305 "detex.l"
+#line 317 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 306 "detex.l"
+#line 318 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 307 "detex.l"
+#line 319 "detex.l"
 ;/*NEWLINE;*/
 	YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 309 "detex.l"
+#line 321 "detex.l"
 /* ignore args  */	{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 310 "detex.l"
+#line 322 "detex.l"
 /* of these \cs */	{KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 311 "detex.l"
+#line 323 "detex.l"
 {KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 312 "detex.l"
+#line 324 "detex.l"
 {KILLARGS(1);} /* kill space before */
 	YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 313 "detex.l"
+#line 325 "detex.l"
 {LATEX; KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 314 "detex.l"
+#line 326 "detex.l"
 {LATEX; KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 315 "detex.l"
+#line 327 "detex.l"
 {KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 316 "detex.l"
+#line 328 "detex.l"
 {KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 317 "detex.l"
+#line 329 "detex.l"
 {KILLARGS(1);}
 	YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 318 "detex.l"
+#line 330 "detex.l"
 {KILLARGS(1);}
 	YY_BREAK
 /*<Normal>"\\footnote"				{KILLARGS(1); SPACE;}*/
 case 74:
 YY_RULE_SETUP
-#line 320 "detex.l"
+#line 332 "detex.l"
 {KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 321 "detex.l"
+#line 333 "detex.l"
 {CITE(1); IGNORE;}
 	YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 322 "detex.l"
+#line 334 "detex.l"
 {CITE(1); IGNORE;}
 	YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 323 "detex.l"
+#line 335 "detex.l"
 {KILLARGS(1); IGNORE;}
 	YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 324 "detex.l"
+#line 336 "detex.l"
 {CITE(1); IGNORE;}
 	YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 325 "detex.l"
+#line 337 "detex.l"
 {KILLARGS(2); IGNORE;}
 	YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 326 "detex.l"
+#line 338 "detex.l"
 {KILLARGS(2); IGNORE;}
 	YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 327 "detex.l"
+#line 339 "detex.l"
 { KILLARGS(1); }
 	YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 328 "detex.l"
+#line 340 "detex.l"
 { KILLARGS(2); }
 	YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 330 "detex.l"
+#line 342 "detex.l"
 {KILLARGS(1);}
 	YY_BREAK
 case 84:
 /* rule 84 can match eol */
 YY_RULE_SETUP
-#line 332 "detex.l"
+#line 344 "detex.l"
 {
 							putchar('(');
 							footnoteLevel = currBracesLevel;
@@ -2586,7 +2605,7 @@
 	YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 337 "detex.l"
+#line 349 "detex.l"
 /* ignore \verb<ch>...<ch> */	{   if (fLatex) {
 						 	char verbchar, c;
 						 	verbchar = input();
@@ -2600,157 +2619,157 @@
 	YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 348 "detex.l"
+#line 360 "detex.l"
 { LATEX; KILLARGS(2); }
 	YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 349 "detex.l"
+#line 361 "detex.l"
 { LATEX; KILLARGS(2); }
 	YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 350 "detex.l"
+#line 362 "detex.l"
 { LATEX; KILLARGS(3); }
 	YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 352 "detex.l"
+#line 364 "detex.l"
 /* ignore def begin */	{BEGIN Define; IGNORE;}
 	YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 353 "detex.l"
+#line 365 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 91:
 /* rule 91 can match eol */
 YY_RULE_SETUP
-#line 354 "detex.l"
+#line 366 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 355 "detex.l"
+#line 367 "detex.l"
 ;
 	YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 357 "detex.l"
+#line 369 "detex.l"
 /* formula mode */	{LaBEGIN LaFormula; NOUN;}
 	YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 358 "detex.l"
+#line 370 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 95:
 /* rule 95 can match eol */
 YY_RULE_SETUP
-#line 359 "detex.l"
+#line 371 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 360 "detex.l"
+#line 372 "detex.l"
 VERBNOUN;
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 361 "detex.l"
+#line 373 "detex.l"
 ;
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 363 "detex.l"
+#line 375 "detex.l"
 /* display mode */	{LaBEGIN LaDisplay; NOUN;}
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 364 "detex.l"
+#line 376 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 100:
 /* rule 100 can match eol */
 YY_RULE_SETUP
-#line 365 "detex.l"
+#line 377 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 366 "detex.l"
+#line 378 "detex.l"
 VERBNOUN;
 	YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 367 "detex.l"
+#line 379 "detex.l"
 ;
 	YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 369 "detex.l"
+#line 381 "detex.l"
 /* display mode */	{BEGIN Display; NOUN;}
 	YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 370 "detex.l"
+#line 382 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 105:
 /* rule 105 can match eol */
 YY_RULE_SETUP
-#line 371 "detex.l"
+#line 383 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 372 "detex.l"
+#line 384 "detex.l"
 VERBNOUN;
 	YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 373 "detex.l"
+#line 385 "detex.l"
 ;
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 375 "detex.l"
+#line 387 "detex.l"
 /* math mode */		{BEGIN Math; NOUN;}
 	YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 376 "detex.l"
+#line 388 "detex.l"
 BEGIN Normal;
 	YY_BREAK
 case 110:
 /* rule 110 can match eol */
 YY_RULE_SETUP
-#line 377 "detex.l"
+#line 389 "detex.l"
 ;
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 378 "detex.l"
+#line 390 "detex.l"
 ;
 	YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 379 "detex.l"
+#line 391 "detex.l"
 VERBNOUN;
 	YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 380 "detex.l"
+#line 392 "detex.l"
 ;
 	YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 382 "detex.l"
+#line 394 "detex.l"
 /* process files */	{LaBEGIN LaInclude; IGNORE;}
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 383 "detex.l"
+#line 395 "detex.l"
 {   IncludeFile(yytext);
 						    BEGIN Normal;
 						}
@@ -2758,27 +2777,27 @@
 case 116:
 /* rule 116 can match eol */
 YY_RULE_SETUP
-#line 386 "detex.l"
+#line 398 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 387 "detex.l"
+#line 399 "detex.l"
 ;
 	YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 389 "detex.l"
+#line 401 "detex.l"
 {BEGIN IncludeOnly; IGNORE;}
 	YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 390 "detex.l"
+#line 402 "detex.l"
 AddInclude(yytext);
 	YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 391 "detex.l"
+#line 403 "detex.l"
 {   if (csbIncList == 0)
 							rgsbIncList[csbIncList++] = '\0';
 						    BEGIN Normal;
@@ -2787,22 +2806,22 @@
 case 121:
 /* rule 121 can match eol */
 YY_RULE_SETUP
-#line 395 "detex.l"
+#line 407 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 396 "detex.l"
+#line 408 "detex.l"
 ;
 	YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 398 "detex.l"
+#line 410 "detex.l"
 /* process files */	{LaBEGIN LaSubfile; IGNORE;}
 	YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 399 "detex.l"
+#line 411 "detex.l"
 {   IncludeFile(yytext);
 						    BEGIN Normal;
 						}
@@ -2810,22 +2829,22 @@
 case 125:
 /* rule 125 can match eol */
 YY_RULE_SETUP
-#line 402 "detex.l"
+#line 414 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 403 "detex.l"
+#line 415 "detex.l"
 ;
 	YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 405 "detex.l"
+#line 417 "detex.l"
 {BEGIN Input; IGNORE;}
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 406 "detex.l"
+#line 418 "detex.l"
 {   InputFile(yytext);
 						    BEGIN Normal;
 						}
@@ -2833,61 +2852,61 @@
 case 129:
 /* rule 129 can match eol */
 YY_RULE_SETUP
-#line 409 "detex.l"
+#line 421 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 410 "detex.l"
+#line 422 "detex.l"
 ;
 	YY_BREAK
 /* escaping commands */
 case 131:
 YY_RULE_SETUP
-#line 413 "detex.l"
+#line 425 "detex.l"
 putchar('/');
 	YY_BREAK
 case 132:
 /* rule 132 can match eol */
 YY_RULE_SETUP
-#line 415 "detex.l"
+#line 427 "detex.l"
 /* handle ligatures */	{(void)printf("%.2s", yytext+1);}
 	YY_BREAK
 case 133:
 /* rule 133 can match eol */
 YY_RULE_SETUP
-#line 416 "detex.l"
+#line 428 "detex.l"
 {(void)printf("%.1s", yytext+1);}
 	YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 417 "detex.l"
+#line 429 "detex.l"
 {NEWLINE;}	/*BEGIN LaBreak;*/
 	YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 419 "detex.l"
+#line 431 "detex.l"
 /* ignore other \cs */	{BEGIN Control; IGNORE;}
 	YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 420 "detex.l"
+#line 432 "detex.l"
 SPACE;
 	YY_BREAK
 case 137:
 /* rule 137 can match eol */
 YY_RULE_SETUP
-#line 421 "detex.l"
+#line 433 "detex.l"
 NEWLINE;
 	YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 422 "detex.l"
+#line 434 "detex.l"
 IGNORE;
 	YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 423 "detex.l"
+#line 435 "detex.l"
 {  if (yytext==NULL || strlen(yytext)==0
 							|| atoi(yytext)>=0)
 							NEWLINE;
@@ -2896,85 +2915,85 @@
 	YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 429 "detex.l"
+#line 441 "detex.l"
 IGNORE;
 	YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 430 "detex.l"
+#line 442 "detex.l"
 IGNORE;
 	YY_BREAK
 case 142:
 /* rule 142 can match eol */
 YY_RULE_SETUP
-#line 431 "detex.l"
+#line 443 "detex.l"
 {BEGIN Normal; /*NEWLINE;*/}
 	YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 432 "detex.l"
+#line 444 "detex.l"
 {++currBracesLevel;BEGIN Normal; IGNORE;}
 	YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 433 "detex.l"
+#line 445 "detex.l"
 {BEGIN Normal; IGNORE;}
 	YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 434 "detex.l"
+#line 446 "detex.l"
 {yyless(0);BEGIN Normal;}
 	YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 436 "detex.l"
+#line 448 "detex.l"
 /* special characters */	IGNORE;
 	YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 437 "detex.l"
+#line 449 "detex.l"
 IGNORE;
 	YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 438 "detex.l"
+#line 450 "detex.l"
 SPACE;
 	YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 439 "detex.l"
+#line 451 "detex.l"
 putchar('-');
 	YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 440 "detex.l"
+#line 452 "detex.l"
 putchar('"');
 	YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 441 "detex.l"
+#line 453 "detex.l"
 putchar('\'');
 	YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 442 "detex.l"
+#line 454 "detex.l"
 putchar('"');
 	YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 443 "detex.l"
+#line 455 "detex.l"
 putchar('"');
 	YY_BREAK
 /* braces */
 case 154:
 YY_RULE_SETUP
-#line 446 "detex.l"
+#line 458 "detex.l"
 { ++currBracesLevel;
 							}
 	YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 448 "detex.l"
+#line 460 "detex.l"
 {
 							--currBracesLevel;
 							if (currBracesLevel == footnoteLevel) {
@@ -2985,7 +3004,7 @@
 	YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 455 "detex.l"
+#line 467 "detex.l"
 {   if (fWord)
 							(void)printf("%s\n", yytext);
 						    else
@@ -2994,40 +3013,40 @@
 	YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 460 "detex.l"
+#line 472 "detex.l"
 if (!fWord) ECHO;
 	YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 461 "detex.l"
-if (!fWord) ECHO;
+#line 473 "detex.l"
+{ INCRLINENO; if (!fWord) ECHO; }
 	YY_BREAK
 case 159:
 /* rule 159 can match eol */
 YY_RULE_SETUP
-#line 462 "detex.l"
-if (!fWord) NEWLINE;
+#line 474 "detex.l"
+{ if (!fWord) NEWLINE; }
 	YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 463 "detex.l"
+#line 475 "detex.l"
 if (!fWord) putchar('\t');
 	YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 465 "detex.l"
+#line 477 "detex.l"
 { BEGIN LaOptArg; }
 	YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 466 "detex.l"
+#line 478 "detex.l"
 { cOpenBrace++; }
 	YY_BREAK
 case 163:
 /* rule 163 can match eol */
 YY_RULE_SETUP
-#line 467 "detex.l"
-{   cOpenBrace--;
+#line 479 "detex.l"
+{   cOpenBrace--; INCRLINENO;
 						    if (cOpenBrace == 0)
 						    {
 							if (--cArgs==0)
@@ -3037,28 +3056,28 @@
 	YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 474 "detex.l"
+#line 486 "detex.l"
 ;
 	YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 475 "detex.l"
+#line 487 "detex.l"
 BEGIN LaMacro;	
 	YY_BREAK
 case 166:
 /* rule 166 can match eol */
 YY_RULE_SETUP
-#line 476 "detex.l"
+#line 488 "detex.l"
 ;
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 478 "detex.l"
+#line 490 "detex.l"
 { BEGIN LaOptArg2; }
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 479 "detex.l"
+#line 491 "detex.l"
 { if (cOpenBrace == 0)
 						    {
 							if (--cArgs==0)
@@ -3072,30 +3091,30 @@
 	YY_BREAK
 case 169:
 YY_RULE_SETUP
-#line 489 "detex.l"
+#line 501 "detex.l"
 {   cOpenBrace--; }
 	YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 490 "detex.l"
+#line 502 "detex.l"
 ;
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 491 "detex.l"
+#line 503 "detex.l"
 BEGIN LaMacro2;	
 	YY_BREAK
 case 172:
 YY_RULE_SETUP
-#line 492 "detex.l"
+#line 504 "detex.l"
 ;
 	YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 493 "detex.l"
+#line 505 "detex.l"
 ECHO;
 	YY_BREAK
-#line 3099 "lex.yy.c"
+#line 3118 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(Define):
 case YY_STATE_EOF(Display):
@@ -4085,7 +4104,7 @@
 
 #define YYTABLES_NAME "yytables"
 
-#line 493 "detex.l"
+#line 505 "detex.l"
 
 
 /******
@@ -4100,6 +4119,7 @@
 **		-s		replace control sequences with space
 **		-t		force tex mode
 **		-w		word only output
+**              -1              output some location information
 **	Set the list of LaTeX environments to ignore.
 **	Process each input file.
 **	If no input files are specified on the command line, process stdin.
@@ -4173,6 +4193,9 @@
 			case CHVERSIONOPT:
 			VersionExit();
 			break;
+			case CHSRCLOC:
+			fSrcLoc = 1;
+			break;
 		    default:
 			sbBadOpt[0] = *pch;
 			sbBadOpt[1] = '\0';
@@ -4194,6 +4217,8 @@
 		Warning("can't open file", rgsbArgs[iArgs]);
 		continue;;
 	    }
+		fFileNames[csb] = rgsbArgs[iArgs];
+		fFileLines[csb] = 1;
 	    BEGIN Normal;
 	    (void)yylex();
 	}
@@ -4232,6 +4257,7 @@
 #ifdef FLEX_SCANNER
         /* Pop context state */
 	if (csb > 0) {
+		free(fFileNames[csb]);
 		yy_delete_buffer( YY_CURRENT_BUFFER );
 		yy_switch_to_buffer( rgsb[--csb] );
 	}
@@ -4261,6 +4287,74 @@
 #endif
 
 /******
+** PrintPrefix -- In case fSrcLoc is 1 and we are about to
+**	print the first column of a line, we want to output the location of
+**	that line in the original LaTeX document it came from.
+******/
+
+void
+PrintPrefix()
+{
+	if (fSrcLoc && fIsColumn0) {
+		printf("%s:%d: ", fFileNames[csb], fFileLines[csb]);
+		fIsColumn0 = 0;
+	}
+}
+
+/******
+** LineBreak -- choses the proper way to break a line. If '-1' option is
+**	enabled we also want to output some source location information.
+******/
+
+void
+LineBreak()
+{
+	if (fWord) return;
+	PrintPrefix();
+	putchar('\n');
+	fFileLines[csb]++; fIsColumn0=1;
+}
+
+/******
+** Echo -- If we are at column 0 and have specified '-1'; output 
+**	the source location information.
+******/
+
+void
+Echo()
+{
+	PrintPrefix();
+	fprintf(yyout, "%s", yytext);
+}
+
+/******
+** IncrLineNo -- Increase the correct linenumber counter and
+**	reset the the 'fIsColumn0' to true.
+******/
+
+void
+IncrLineNo()
+{
+	for (char* c=yytext; *c != '\0'; c++) {
+		if (*c == '\n') {
+			fFileLines[csb]++; fIsColumn0=1;
+		}
+	}
+}
+
+/******
+** Ignore -- Since we might need to track source location information we
+**	cannot just ignore text. We must at least increase the linenumber counter.
+******/
+
+void 
+Ignore()
+{
+	IncrLineNo();
+	if (fSpace && !fWord) putchar(' ');
+}
+
+/******
 ** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the
 **	sbEnvList.
 ******/
@@ -4315,6 +4409,7 @@
 **	the sbFile is ignored.
 ******/
 
+
 void
 InputFile(char *sbFile)
 {
@@ -4329,8 +4424,10 @@
             return;
 	} 
 #ifdef FLEX_SCANNER
-        rgsb[csb++] = YY_CURRENT_BUFFER;
-        yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
+	rgsb[csb++]     = YY_CURRENT_BUFFER;
+	fFileLines[csb] = 1;
+	fFileNames[csb] = strdup(sbFile);
+	yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
 #endif /* FLEX_SCANNER */
 }
 
@@ -4355,8 +4452,10 @@
             return;
 	}
 #ifdef FLEX_SCANNER
-        rgsb[csb++] = YY_CURRENT_BUFFER;
-        yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
+	rgsb[csb++]     = YY_CURRENT_BUFFER;
+	fFileLines[csb] = 1;
+	fFileNames[csb] = strdup(sbFile);
+	yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
 #endif /* FLEX_SCANNER */
 }
 
@@ -4494,24 +4593,25 @@
 #else
 	    if (*sbFile == '/') {	/* absolute path */
 #endif
-		(void)sprintf(sbFullPath, "%s", sbFile);
-		iPath = csbInputPaths;	/* only check once */
-	    } else
-		(void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile);
+			(void)snprintf(sbFullPath, PATH_MAX-1, "%s", sbFile);
+			iPath = csbInputPaths;	/* only check once */
+	    } else {
+			(void)snprintf(sbFullPath, PATH_MAX-1, "%s/%s", rgsbInputPaths[iPath], sbFile);
+		}
 #ifdef OS2
 	    pch = sbFullPath;
-	    while (pch = strchr(pch, '\\'))
-		*pch = '/';
+	    while (pch = strchr(pch, '\\')) {
+			*pch = '/';
+		}
 #endif
 
 	    /* If sbFile ends in .tex then it must be there */
 	    if ((pch = strrchr(sbFullPath, '.')) != NULL
-			&& (strcmp(pch, ".tex") == 0))
-	    {
-		if ((fp = fopen(sbFullPath, "r")) != NULL)
-		    return(fp);
-		else
-		    continue;
+			&& (strcmp(pch, ".tex") == 0)) {
+			if ((fp = fopen(sbFullPath, "r")) != NULL)
+				return(fp);
+			else
+				continue;
 	    }
 
 	    /* if .<ext> then try to open it.  the '.' represents   */
@@ -4592,7 +4692,7 @@
 void
 UsageExit(void)
 {
-	(void)printf("\n%s [ -clnrstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
+	(void)printf("\n%s [ -clnrstw1 ] [ -e environment-list ] [ filename[.tex] ... ]\n",
 		sbProgName);
 	puts("  -c  echo LaTeX \\cite, \\ref, and \\pageref values\n  \
 -e  <env-list> list of LaTeX environments to ignore\n  \
@@ -4602,6 +4702,7 @@
 -s  replace control sequences with space\n  \
 -t  force tex mode\n  \
 -w  word only output\n  \
+-1  outputs the original file name and line number in the beginning of each line\n  \
 -v  show program version and exit");
 	exit(0);
 }

Modified: trunk/Build/source/texk/detex/detex-src/detex.h
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.h	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/detex.h	2020-06-15 11:23:15 UTC (rev 55553)
@@ -80,7 +80,8 @@
 #define	CHSPACEOPT	's'
 #define	CHTEXOPT	't'
 #define	CHWORDOPT	'w'
-#define CHREPLACE   'r'
-#define CHVERSIONOPT 'v'
+#define CHSRCLOC	'1'
+#define CHREPLACE	'r'
+#define CHVERSIONOPT	'v'
 
 #define	my_ERROR	-1

Modified: trunk/Build/source/texk/detex/detex-src/detex.l
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.l	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/detex.l	2020-06-15 11:23:15 UTC (rev 55553)
@@ -41,7 +41,7 @@
 
 
 /*
- * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [file[.tex] ]
+ * detex [-e environment-list] [-c] [-l] [-n] [-s] [-t] [-w] [-1] [file[.tex] ]
  *
  *	This program is used to remove TeX or LaTeX constructs from a text
  *	file.
@@ -95,13 +95,16 @@
 
 %{
 #undef IGNORE
+#undef ECHO
 
 #define	LaBEGIN		if (fLatex) BEGIN
-#define	IGNORE		if (fSpace && !fWord) putchar(' ')
+#define	IGNORE		Ignore()
+#define INCRLINENO	IncrLineNo()
+#define ECHO		Echo()
 #define NOUN		if (fSpace && !fWord && !fReplace) putchar(' '); else {if (fReplace) printf("noun");}
 #define VERBNOUN		if (fReplace) printf(" verbs noun"); /* puts a verb and a noun to make grammar checking work */
 #define	SPACE		if (!fWord) putchar(' ')
-#define	NEWLINE		if (!fWord) putchar('\n')
+#define	NEWLINE		LineBreak()
 #define	LATEX		fLatex=!fForcetex
 #define KILLARGS(x)	cArgs=x; LaBEGIN LaMacro
 #define STRIPARGS(x)	cArgs=x; LaBEGIN LaMacro2
@@ -109,6 +112,10 @@
 
 #define NO_MALLOC_DECL
 
+void LineBreak();
+void Ignore();
+void IncrLineNo();
+void Echo();
 void AddInclude(char *sbFile);
 void ErrorExit(const char *sb1);
 void UsageExit(void);
@@ -158,8 +165,9 @@
 int	fCite = 0;			/* flag to echo \cite and \ref args */
 int	fSpace = 0;			/* flag to replace \cs with space */
 int	fForcetex = 0;			/* flag to inhibit latex mode */
-int fShowPictures = 0;  /* flag to show picture names */
-int fReplace = 0;  /* flag to replace envirnments with "noun" */
+int	fSrcLoc = 0;			/* flag to display source location of original file */
+int fShowPictures = 0;	/* flag to show picture names */
+int fReplace = 0;		/* flag to replace envirnments with "noun" */
 
 int currBracesLevel = 0;
 int footnoteLevel = -100;
@@ -169,8 +177,11 @@
  * otherwise output contains imported files in reverse order.  Weird, but
  * true.
  */
-YY_BUFFER_STATE rgsb[NOFILE + 1]; /* flex context stack */
-int             csb = 0;		 /* depth of flex context stack */
+YY_BUFFER_STATE rgsb[NOFILE + 1];		/* flex context stack */
+char*			fFileNames[NOFILE + 1];	/* names of the buffers in context stack */
+int				fFileLines[NOFILE + 1];	/* line number in each of the context files */
+int				fIsColumn0 = 1;			/* Are we at the begining of a line? */
+int				csb = 0;				/* depth of flex context stack */
 #endif /* FLEX_SCANNER */
 
 %}
@@ -179,6 +190,7 @@
 W	[a-zA-Z]+
 N	[+-]?(([0-9]+(\.[0-9]+)?)|(\.[0-9]+))
 U	pt|pc|in|bp|cm|mm|dd|cc|sp
+P   [a-zA-Z!]+
 HU	{U}|em
 HD	{S}(({N}{S}{HU})|(\\{W})){S}
 HG	{HD}(plus{HD})?(minus{HD})?
@@ -194,7 +206,7 @@
 %start LaBreak LaPicture
 
 %%
-<Normal>"%".*		/* ignore comments */	;
+<Normal>"%".*		/* ignore comments */	{INCRLINENO;}
 
 <Normal>"\\begin"{S}"{"{S}"document"{S}"}""\n"*	{LATEX; IGNORE;}
 
@@ -219,7 +231,7 @@
 						  IGNORE;
 						}
 
-<LaBegin>{S}"{"{S}"table"{S}"}"{S}"["{W}"]"		{
+<LaBegin>{S}"{"{S}"table"{S}"}"{S}"["{P}"]"		{
 						  if (BeginEnv("table"))
 							BEGIN LaEnv;
 						  else
@@ -227,7 +239,7 @@
 						  IGNORE;
 						}
 
-<LaBegin>{S}"{"{S}"figure"{S}"}"{S}"["{W}"]"		{
+<LaBegin>{S}"{"{S}"figure"{S}"}"{S}"["{P}"]"		{
 						  if (BeginEnv("figure"))
 							BEGIN LaEnv;
 						  else
@@ -242,11 +254,11 @@
 						    IGNORE;
 						}
 	/*<LaBegin>"\n"					NEWLINE;*/
-<LaBegin>.					;
+<LaBegin>.					{INCRLINENO;}
 
 <LaEnv>"\\end"  /* absorb some environments */	{LaBEGIN LaEnd; IGNORE;}
 <LaEnv>"\n"+					;/*NEWLINE;*/
-<LaEnv>.					;
+<LaEnv>.					{INCRLINENO;}
 
 <LaEnd>{W}		 /* end environment */	{   if (EndEnv(yytext))
 							BEGIN Normal;
@@ -254,7 +266,7 @@
 						}
 <LaEnd>"}"					{BEGIN LaEnv; IGNORE;}
 	/*<LaEnd>"\n"					NEWLINE;*/
-<LaEnd>.					;
+<LaEnd>.					{INCRLINENO;}
 
 <Normal>"\\kern"{HD}				;
 <Normal>"\\vskip"{VG}				;
@@ -284,7 +296,7 @@
 
 <LaPicture>"{"					;
 <LaPicture>[^{}]+				{ if(fShowPictures) { printf("<Picture %s>", yytext); } }
-<LaPicture>"\}"{S}"\n"+					BEGIN Normal;
+<LaPicture>"\}"{S}"\n"+				{ BEGIN Normal; INCRLINENO; }
 <LaPicture>"\}"					BEGIN Normal;
 
 <Normal>"\\definecolor"				{ KILLARGS(3); }
@@ -458,13 +470,13 @@
 							ECHO;
 						}
 <Normal>[0-9]+					if (!fWord) ECHO;
-<Normal>.					if (!fWord) ECHO;
-<Normal>"\n"					if (!fWord) NEWLINE;
+<Normal>.					{ INCRLINENO; if (!fWord) ECHO; }
+<Normal>"\n"					{ if (!fWord) NEWLINE; }
 <Normal>("\t")+					if (!fWord) putchar('\t');
 
 <LaMacro>"\["					{ BEGIN LaOptArg; }
 <LaMacro>"{"					{ cOpenBrace++; }
-<LaMacro>"}""\n"{0,1}					{   cOpenBrace--;
+<LaMacro>"}""\n"{0,1}				{   cOpenBrace--; INCRLINENO;
 						    if (cOpenBrace == 0)
 						    {
 							if (--cArgs==0)
@@ -504,6 +516,7 @@
 **		-s		replace control sequences with space
 **		-t		force tex mode
 **		-w		word only output
+**              -1              output some location information
 **	Set the list of LaTeX environments to ignore.
 **	Process each input file.
 **	If no input files are specified on the command line, process stdin.
@@ -577,6 +590,9 @@
 			case CHVERSIONOPT:
 			VersionExit();
 			break;
+			case CHSRCLOC:
+			fSrcLoc = 1;
+			break;
 		    default:
 			sbBadOpt[0] = *pch;
 			sbBadOpt[1] = '\0';
@@ -598,6 +614,8 @@
 		Warning("can't open file", rgsbArgs[iArgs]);
 		continue;;
 	    }
+		fFileNames[csb] = rgsbArgs[iArgs];
+		fFileLines[csb] = 1;
 	    BEGIN Normal;
 	    (void)yylex();
 	}
@@ -636,6 +654,7 @@
 #ifdef FLEX_SCANNER
         /* Pop context state */
 	if (csb > 0) {
+		free(fFileNames[csb]);
 		yy_delete_buffer( YY_CURRENT_BUFFER );
 		yy_switch_to_buffer( rgsb[--csb] );
 	}
@@ -665,6 +684,74 @@
 #endif
 
 /******
+** PrintPrefix -- In case fSrcLoc is 1 and we are about to
+**	print the first column of a line, we want to output the location of
+**	that line in the original LaTeX document it came from.
+******/
+
+void
+PrintPrefix()
+{
+	if (fSrcLoc && fIsColumn0) {
+		printf("%s:%d: ", fFileNames[csb], fFileLines[csb]);
+		fIsColumn0 = 0;
+	}
+}
+
+/******
+** LineBreak -- choses the proper way to break a line. If '-1' option is
+**	enabled we also want to output some source location information.
+******/
+
+void
+LineBreak()
+{
+	if (fWord) return;
+	PrintPrefix();
+	putchar('\n');
+	fFileLines[csb]++; fIsColumn0=1;
+}
+
+/******
+** Echo -- If we are at column 0 and have specified '-1'; output 
+**	the source location information.
+******/
+
+void
+Echo()
+{
+	PrintPrefix();
+	fprintf(yyout, "%s", yytext);
+}
+
+/******
+** IncrLineNo -- Increase the correct linenumber counter and
+**	reset the the 'fIsColumn0' to true.
+******/
+
+void
+IncrLineNo()
+{
+	for (char* c=yytext; *c != '\0'; c++) {
+		if (*c == '\n') {
+			fFileLines[csb]++; fIsColumn0=1;
+		}
+	}
+}
+
+/******
+** Ignore -- Since we might need to track source location information we
+**	cannot just ignore text. We must at least increase the linenumber counter.
+******/
+
+void 
+Ignore()
+{
+	IncrLineNo();
+	if (fSpace && !fWord) putchar(' ');
+}
+
+/******
 ** SetEnvIgnore -- sets rgsbEnvIgnore to the values indicated by the
 **	sbEnvList.
 ******/
@@ -719,6 +806,7 @@
 **	the sbFile is ignored.
 ******/
 
+
 void
 InputFile(char *sbFile)
 {
@@ -733,8 +821,10 @@
             return;
 	} 
 #ifdef FLEX_SCANNER
-        rgsb[csb++] = YY_CURRENT_BUFFER;
-        yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
+	rgsb[csb++]     = YY_CURRENT_BUFFER;
+	fFileLines[csb] = 1;
+	fFileNames[csb] = strdup(sbFile);
+	yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
 #endif /* FLEX_SCANNER */
 }
 
@@ -759,8 +849,10 @@
             return;
 	}
 #ifdef FLEX_SCANNER
-        rgsb[csb++] = YY_CURRENT_BUFFER;
-        yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
+	rgsb[csb++]     = YY_CURRENT_BUFFER;
+	fFileLines[csb] = 1;
+	fFileNames[csb] = strdup(sbFile);
+	yy_switch_to_buffer(yy_create_buffer( yyin, YY_BUF_SIZE ) );
 #endif /* FLEX_SCANNER */
 }
 
@@ -898,24 +990,25 @@
 #else
 	    if (*sbFile == '/') {	/* absolute path */
 #endif
-		(void)sprintf(sbFullPath, "%s", sbFile);
-		iPath = csbInputPaths;	/* only check once */
-	    } else
-		(void)sprintf(sbFullPath, "%s/%s", rgsbInputPaths[iPath], sbFile);
+			(void)snprintf(sbFullPath, PATH_MAX-1, "%s", sbFile);
+			iPath = csbInputPaths;	/* only check once */
+	    } else {
+			(void)snprintf(sbFullPath, PATH_MAX-1, "%s/%s", rgsbInputPaths[iPath], sbFile);
+		}
 #ifdef OS2
 	    pch = sbFullPath;
-	    while (pch = strchr(pch, '\\'))
-		*pch = '/';
+	    while (pch = strchr(pch, '\\')) {
+			*pch = '/';
+		}
 #endif
 
 	    /* If sbFile ends in .tex then it must be there */
 	    if ((pch = strrchr(sbFullPath, '.')) != NULL
-			&& (strcmp(pch, ".tex") == 0))
-	    {
-		if ((fp = fopen(sbFullPath, "r")) != NULL)
-		    return(fp);
-		else
-		    continue;
+			&& (strcmp(pch, ".tex") == 0)) {
+			if ((fp = fopen(sbFullPath, "r")) != NULL)
+				return(fp);
+			else
+				continue;
 	    }
 
 	    /* if .<ext> then try to open it.  the '.' represents   */
@@ -996,7 +1089,7 @@
 void
 UsageExit(void)
 {
-	(void)printf("\n%s [ -clnrstw ] [ -e environment-list ] [ filename[.tex] ... ]\n",
+	(void)printf("\n%s [ -clnrstw1 ] [ -e environment-list ] [ filename[.tex] ... ]\n",
 		sbProgName);
 	puts("  -c  echo LaTeX \\cite, \\ref, and \\pageref values\n  \
 -e  <env-list> list of LaTeX environments to ignore\n  \
@@ -1006,6 +1099,7 @@
 -s  replace control sequences with space\n  \
 -t  force tex mode\n  \
 -w  word only output\n  \
+-1  outputs the original file name and line number in the beginning of each line\n  \
 -v  show program version and exit");
 	exit(0);
 }

Modified: trunk/Build/source/texk/detex/detex-src/detex.man
===================================================================
--- trunk/Build/source/texk/detex/detex-src/detex.man	2020-06-14 23:53:37 UTC (rev 55552)
+++ trunk/Build/source/texk/detex/detex-src/detex.man	2020-06-15 11:23:15 UTC (rev 55553)
@@ -6,7 +6,6 @@
 [ \fB\-clnstw\fR ] [ \fB\-e\fI environment-list\fR ] [ \fIfilename\fR[.tex] ... ]
 .SH DESCRIPTION
 .I Detex
-(Version 2.8.3)
 reads each file in sequence, removes all comments and
 .I TeX
 control sequences
@@ -87,6 +86,11 @@
 preserved where possible
 so that the lines of output match the input as closely as possible.
 .PP
+The 
+.B \-1
+option will prefix each printed line with `filename:linenumber:` indicating
+where that line is coming from in terms of the original (La)TeX document.
+.PP
 The TEXINPUTS environment variable is used to find \\input and \\include
 files.  Like \fITeX\fP, it interprets a leading or trailing `:' as the default
 TEXINPUTS.  It does \fInot\fP support the `//' directory expansion magic sequence.



More information about the tex-live-commits mailing list.