From: Bdale Garbee Date: Sun, 16 Jan 2011 02:31:35 +0000 (-0700) Subject: Imported Upstream version 1.7.4p5 X-Git-Tag: upstream/1.7.4p5^0 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=f98b462217f919db385d27edf7e450f4eef72e40;p=debian%2Fsudo Imported Upstream version 1.7.4p5 --- diff --git a/ChangeLog b/ChangeLog index d5247b7..69c48b7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,102 @@ +2011-01-11 Todd C. Miller + + * check.c: + If the user is running sudo as himself but as a different group we + need to prompt for a password. + [fe8a94f96542] + +2011-01-10 Todd C. Miller + + * pwutil.c: + If user has no supplementary groups, fall back on checking the group + file explicitly. + [c536ddb16bb6] + +2011-01-04 Todd C. Miller + + * match.c: + Fix NULL dereference with "sudo -g group" when the sudoers rule has + no runas user or group listed. Fixes RedHat bug Bug 667103. + [c51e2be737b2] + +2010-12-21 Todd C. Miller + + * term.c: + Clear OPOST from c_oflag like we used to. Fixes screen-based + editors such as vi. + [e26055d17b72] + + * sudoers.pod: + Clarify umask option description. From Reuben Thomas. + [fb8bdcb54feb] + +2010-11-24 Todd C. Miller + + * pp: + Add support for RHEL 6 file modes that include a trailing dot on + files with an SELinux security context + [fcc1daaf4df0] + +2010-11-22 Todd C. Miller + + * sudoers.pod: + fix typo; from Michael T Hunter + [46e70e2063af] + +2010-10-07 Todd C. Miller + + * check.c: + Having a timestamp file defined is no longer indicative of tty + tickets being enabled. Check def_tty_tickets directly. + [6c3803c239d9] + +2010-10-01 Todd C. Miller + + * set_perms.c: + Sync set_project() with trunk. + [646fd9bc0537] + + * set_perms.c, sudo.c: + Move set_project() into runas_setup(). Fixes a NULL deref when + project support is enabled and sudo's -g flag is used without the + -u flag. + [6ffd892243ab] + +2010-09-21 Todd C. Miller + + * linux_audit.c: + Ignore ECONNREFUSED from audit_log_user_command() which will occur + if auditd is not running. + [a686884684ca] + +2010-09-13 Todd C. Miller + + * install-sh: + Use sed instead of expr to split a flag from its argument. Fixes a + problem with expr interpreting its arguments as a flag when they + start with a dash. + [16372da8a286] + +2010-09-08 Todd C. Miller + + * bsm_audit.c: + Solaris BSM audit return EINVAL when auditing is not enabled, + whereas OpenBSM returns ENOSYS. + [bb9c94a8fa7d] + +2010-09-07 Todd C. Miller + + * toke.c, toke.l: + Add missing LOG_INPUT/LOG_OUTPUT support in the lexer. + [0a5519756bf1] + + * sudo.c: + Set NewArgv[0] to the name of the pseudo-command we are running. + Fixes a problem with "sudo -l" when auditing is enabled and the user + is not allowed to run any commands on the host. Adapted from a patch + from Daniel Kopecek. + [694ed1a75a4a] + 2010-09-06 Todd C. Miller * match.c: diff --git a/NEWS b/NEWS index 21d4e61..ffb6d78 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,85 @@ +What's new in Sudo 1.7.4p5? + + * A bug has been fixed that would allow a command to be run without the + user entering a password when sudo's -g flag is used without the -u flag. + + * If user has no supplementary groups, sudo will now fall back on checking + the group file explicitly, which restores historic sudo behavior. + + * A crash has been fixed when sudo's -g flag is used without the -u flag + and the sudoers file contains an entry with no runas user or group listed. + + * A bug has been fixed in the I/O logging support that could cause + visual artifacts in full-screen programs such as text editors,. + + * A crash has been fixed when the Solaris project support is enabled + and sudo's -g flag is used without the -u flag. + + * Sudo no longer exits with an error when support for auditing is + compiled in but auditing is not enabled. + + * Fixed a bug introduced in sudo 1.7.3 where the ticket file was not + being honored when the "targetpw" sudoers Defaults option was enabled. + + * The LOG_INPUT and LOG_OUTPUT tags in sudoers are now parsed correctly. + + * A crash has been fixed in "sudo -l" when sudo is built with auditing + support and the user is not allowed to run any commands on the host. + +What's new in Sudo 1.7.4p4? + + * A potential security issue has been fixed with respect to the handling + of sudo's -g command line option when -u is also specified. The flaw + may allow an attacker to run commands as a user that is not authorized + by the sudoers file. + + * A bug has been fixed where "sudo -l" output was incomplete if multiple + sudoers sources were defined in nsswitch.conf and there was an error + querying one of the sources. + + * The log_input, log_output, and use_pty sudoers options now work correctly + on AIX. Previously, sudo would hang if they were enabled. + + * The "make install" target now works correctly when sudo is built in a + directory other than the source directory. + + * The "runas_default" sudoers setting now works properly in a per-command + Defaults line. + + * Suspending and resuming the bash shell when PAM is in use now works + correctly. The SIGCONT signal was not propagated to the child process. + +What's new in Sudo 1.7.4p3? + + * A bug has been fixed where duplicate HOME environment variables could be + present when the env_reset setting was disabled and the always_set_home + setting was enabled in sudoers. + + * The value of sysconfdir is now substituted into the path to the sudoers.d + directory in the installed sudoers file. + + * Compilation problems on IRIX and other platforms have been fixed. + + * If multiple PAM "auth" actions are specified and the user enters ^C at + the password prompt, sudo will no longer prompt for a password for any + subsequent "auth" actions. Previously it was necessary to enter ^C for + each "auth" action. + +What's new in Sudo 1.7.4p2? + + * A bug where sudo could spin in a busy loop waiting for the child process + has been fixed. + +What's new in Sudo 1.7.4p1? + + * A bug introduced in sudo 1.7.3 that prevented the -k and -K options from + functioning when the tty_tickets sudoers option is enabled has been fixed. + + * Sudo no longer prints a warning when the -k or -K options are specified + and the ticket file does not exist. + + * It is now easier to cross-compile sudo. + What's new in Sudo 1.7.4? * Sudoedit will now preserve the file extension in the name of the diff --git a/bsm_audit.c b/bsm_audit.c index b388b86..a673d28 100644 --- a/bsm_audit.c +++ b/bsm_audit.c @@ -31,6 +31,16 @@ #include "bsm_audit.h" +/* + * Solaris auditon() returns EINVAL if BSM audit not configured. + * OpenBSM returns ENOSYS for unimplemented options. + */ +#ifdef __sun__ +# define AUDIT_NOT_CONFIGURED EINVAL +#else +# define AUDIT_NOT_CONFIGURED ENOSYS +#endif + void log_error(int flags, const char *fmt, ...) __attribute__((__noreturn__)); static int @@ -71,7 +81,7 @@ bsm_audit_success(char **exec_args) * If we are not auditing, don't cut an audit record; just return. */ if (auditon(A_GETCOND, (caddr_t)&au_cond, sizeof(long)) < 0) { - if (errno == ENOSYS) + if (errno == AUDIT_NOT_CONFIGURED) return; log_error(0, "Could not determine audit condition"); } @@ -132,7 +142,7 @@ bsm_audit_failure(char **exec_args, char const *const fmt, va_list ap) * If we are not auditing, don't cut an audit record; just return. */ if (auditon(A_GETCOND, &au_cond, sizeof(long)) < 0) { - if (errno == ENOSYS) + if (errno == AUDIT_NOT_CONFIGURED) return; log_error(0, "Could not determine audit condition"); } diff --git a/check.c b/check.c index d6efa6d..badf3e4 100644 --- a/check.c +++ b/check.c @@ -119,7 +119,13 @@ check_user(validated, mode) if (ISSET(mode, MODE_INVALIDATE)) { SET(validated, FLAG_CHECK_USER); } else { - if (user_uid == 0 || user_uid == runas_pw->pw_uid || user_is_exempt()) + /* + * Don't prompt for the root passwd or if the user is exempt. + * If the user is not changing uid/gid, no need for a password. + */ + if (user_uid == 0 || (user_uid == runas_pw->pw_uid && + (!runas_gr || user_in_group(sudo_user.pw, runas_gr->gr_name))) || + user_is_exempt()) return; } @@ -205,7 +211,7 @@ update_timestamp(timestampdir, timestampfile) char *timestampfile; { /* If using tty timestamps but we have no tty there is nothing to do. */ - if (timestampfile && !user_ttypath) + if (def_tty_tickets && !user_ttypath) return; if (timestamp_uid != 0) @@ -528,7 +534,7 @@ timestamp_status(timestampdir, timestampfile, user, flags) if (timestampfile && status != TS_ERROR) { if (status != TS_MISSING) status = TS_NOFILE; /* dir there, file missing */ - if (!user_ttypath) + if (def_tty_tickets && !user_ttypath) goto done; /* no tty, always prompt */ if (lstat(timestampfile, &sb) == 0) { if (!S_ISREG(sb.st_mode)) { diff --git a/configure b/configure index e66f189..209de36 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for sudo 1.7.4p4. +# Generated by GNU Autoconf 2.65 for sudo 1.7.4p5. # # Report bugs to . # @@ -701,8 +701,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.7.4p4' -PACKAGE_STRING='sudo 1.7.4p4' +PACKAGE_VERSION='1.7.4p5' +PACKAGE_STRING='sudo 1.7.4p5' PACKAGE_BUGREPORT='http://www.sudo.ws/bugs/' PACKAGE_URL='' @@ -1552,7 +1552,7 @@ if test "$ac_init_help" = "long"; then # 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 sudo 1.7.4p4 to adapt to many kinds of systems. +\`configure' configures sudo 1.7.4p5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1617,7 +1617,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.7.4p4:";; + short | recursive ) echo "Configuration of sudo 1.7.4p5:";; esac cat <<\_ACEOF @@ -1828,7 +1828,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.7.4p4 +sudo configure 1.7.4p5 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2527,7 +2527,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sudo $as_me 1.7.4p4, which was +It was created by sudo $as_me 1.7.4p5, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -18977,7 +18977,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sudo $as_me 1.7.4p4, which was +This file was extended by sudo $as_me 1.7.4p5, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19043,7 +19043,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sudo config.status 1.7.4p4 +sudo config.status 1.7.4p5 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" diff --git a/configure.in b/configure.in index 4186b88..aed2ff0 100644 --- a/configure.in +++ b/configure.in @@ -3,7 +3,7 @@ dnl Process this file with GNU autoconf to produce a configure script. dnl dnl Copyright (c) 1994-1996,1998-2010 Todd C. Miller dnl -AC_INIT([sudo], [1.7.4p4], [http://www.sudo.ws/bugs/], [sudo]) +AC_INIT([sudo], [1.7.4p5], [http://www.sudo.ws/bugs/], [sudo]) AC_CONFIG_HEADER(config.h pathnames.h) dnl dnl This won't work before AC_INIT diff --git a/install-sh b/install-sh index 7a207e2..79e7f40 100755 --- a/install-sh +++ b/install-sh @@ -71,7 +71,7 @@ while ${MORETODO} ; do ;; X-b*) BACKIT=true - BACKUP=`expr "$1" : '-b\(.*\)'` + BACKUP="`echo \"$1\" | sed 's/^..//'`" ;; X-c) # backwards compatibility @@ -85,7 +85,7 @@ while ${MORETODO} ; do shift ;; X-g*) - GROUP=`expr "$1" : '-g\(.*\)'` + GROUP="`echo \"$1\" | sed 's/^..//'`" CHGROUPIT=true ;; X-G) @@ -95,7 +95,7 @@ while ${MORETODO} ; do ;; X-G*) if ${ROOT} ; then - GROUP=`expr "$1" : '-g\(.*\)'` + GROUP="`echo \"$1\" | sed 's/^..//'`" CHGROUPIT=true fi ;; @@ -105,7 +105,7 @@ while ${MORETODO} ; do shift ;; X-m*) - MODE=`expr "$1" : '-m\(.*\)'` + MODE="`echo \"$1\" | sed 's/^..//'`" CHMODIT=true ;; X-M) @@ -114,7 +114,7 @@ while ${MORETODO} ; do shift ;; X-M*) - MODE=`expr "$1" : '-m\(.*\)'` + MODE="`echo \"$1\" | sed 's/^..//'`" ${ROOT} && CHMODIT=true ;; X-n) @@ -126,7 +126,7 @@ while ${MORETODO} ; do shift ;; X-o*) - OWNER=`expr "$1" : '-o\(.*\)'` + OWNER="`echo \"$1\" | sed 's/^..//'`" CHOWNIT=true ;; X-O) @@ -136,7 +136,7 @@ while ${MORETODO} ; do ;; X-O*) if ${ROOT} ; then - OWNER=`expr "$1" : '-o\(.*\)'` + OWNER="`echo \"$1\" | sed 's/^..//'`" CHOWNIT=true fi ;; diff --git a/linux_audit.c b/linux_audit.c index ba87e78..b4160c9 100644 --- a/linux_audit.c +++ b/linux_audit.c @@ -82,9 +82,9 @@ linux_audit_command(char *argv[], int result) } *--cp = '\0'; - /* Log command, ignoring EPERM on error. */ + /* Log command, ignoring ECONNREFUSED on error. */ rc = audit_log_user_command(au_fd, AUDIT_USER_CMD, command, NULL, result); - if (rc <= 0) + if (rc <= 0 && errno != ECONNREFUSED) warning("unable to send audit message"); efree(command); diff --git a/match.c b/match.c index 91ec315..6431425 100644 --- a/match.c +++ b/match.c @@ -174,10 +174,11 @@ _runaslist_matches(user_list, group_list) int user_matched = UNSPEC; int group_matched = UNSPEC; - if (tq_empty(user_list) && tq_empty(group_list)) - return(userpw_matches(def_runas_default, runas_pw->pw_name, runas_pw)); - if (runas_pw != NULL) { + /* If no runas user or runas group listed in sudoers, use default. */ + if (tq_empty(user_list) && tq_empty(group_list)) + return(userpw_matches(def_runas_default, runas_pw->pw_name, runas_pw)); + tq_foreach_rev(user_list, m) { switch (m->type) { case ALL: diff --git a/pp b/pp index a997c0f..2776485 100755 --- a/pp +++ b/pp @@ -438,7 +438,7 @@ pp_unique () { pp_mode_strip_altaccess () { case "$1" in - ??????????+) + ??????????[+.]) echo `echo "$1" | cut -b -10`;; *) echo "$1";; diff --git a/pwutil.c b/pwutil.c index 35524f3..86ae0ab 100644 --- a/pwutil.c +++ b/pwutil.c @@ -610,7 +610,7 @@ user_in_group(pw, group) * If we are matching the invoking or list user and that user has a * supplementary group vector, check it. */ - if (user_ngroups >= 0 && + if (user_ngroups > 0 && strcmp(pw->pw_name, list_pw ? list_pw->pw_name : user_name) == 0) { for (i = 0; i < user_ngroups; i++) { if (grp->gr_gid == user_groups[i]) diff --git a/set_perms.c b/set_perms.c index 81e2e76..d028b2c 100644 --- a/set_perms.c +++ b/set_perms.c @@ -47,6 +47,10 @@ #ifdef HAVE_LOGIN_CAP_H # include #endif +#ifdef HAVE_PROJECT_H +# include +# include +#endif #include "sudo.h" @@ -547,6 +551,69 @@ restore_groups() #endif /* HAVE_INITGROUPS */ +#ifdef HAVE_PROJECT_H +static void +set_project(pw) + struct passwd *pw; +{ + struct project proj; + char buf[PROJECT_BUFSZ]; + int errval; + + /* + * Collect the default project for the user and settaskid + */ + setprojent(); + if (getdefaultproj(pw->pw_name, &proj, buf, sizeof(buf)) != NULL) { + errval = setproject(proj.pj_name, pw->pw_name, TASK_NORMAL); + switch(errval) { + case 0: + break; + case SETPROJ_ERR_TASK: + switch (errno) { + case EAGAIN: + warningx("resource control limit has been reached"); + break; + case ESRCH: + warningx("user \"%s\" is not a member of project \"%s\"", + pw->pw_name, proj.pj_name); + break; + case EACCES: + warningx("the invoking task is final"); + break; + default: + warningx("could not join project \"%s\"", proj.pj_name); + } + case SETPROJ_ERR_POOL: + switch (errno) { + case EACCES: + warningx("no resource pool accepting default bindings " + "exists for project \"%s\"", proj.pj_name); + break; + case ESRCH: + warningx("specified resource pool does not exist for " + "project \"%s\"", proj.pj_name); + break; + default: + warningx("could not bind to default resource pool for " + "project \"%s\"", proj.pj_name); + } + break; + default: + if (errval <= 0) { + warningx("setproject failed for project \"%s\"", proj.pj_name); + } else { + warningx("warning, resource control assignment failed for " + "project \"%s\"", proj.pj_name); + } + } + } else { + warning("getdefaultproj"); + } + endprojent(); +} +#endif /* HAVE_PROJECT_H */ + static void runas_setup() { @@ -558,6 +625,9 @@ runas_setup() if (runas_pw->pw_name != NULL) { gid = runas_gr ? runas_gr->gr_gid : runas_pw->pw_gid; +#ifdef HAVE_PROJECT_H + set_project(runas_pw); +#endif #ifdef HAVE_GETUSERATTR aix_prep_user(runas_pw->pw_name, user_ttypath); #endif diff --git a/sudo.c b/sudo.c index 159a2c8..c03b726 100644 --- a/sudo.c +++ b/sudo.c @@ -88,10 +88,6 @@ # define LOGIN_DEFROOTCLASS "daemon" # endif #endif -#ifdef HAVE_PROJECT_H -# include -# include -#endif #ifdef HAVE_MBR_CHECK_MEMBERSHIP # include #endif @@ -118,7 +114,6 @@ static void init_vars __P((char **)); static int set_cmnd __P((int)); static void initial_setup __P((void)); static void set_loginclass __P((struct passwd *)); -static void set_project __P((struct passwd *)); static void set_runasgr __P((char *)); static void set_runaspw __P((char *)); static void show_version __P((void)); @@ -701,14 +696,10 @@ init_vars(envp) set_perms(PERM_ROOT); /* - * If we were given the '-e', '-i' or '-s' options we need to redo - * NewArgv and NewArgc. + * If in shell or edit mode, or if running a pseudo-command + * such as "list", we need to redo NewArgv and NewArgc. */ - if (ISSET(sudo_mode, MODE_EDIT)) { - NewArgv--; - NewArgc++; - NewArgv[0] = "sudoedit"; - } else if (ISSET(sudo_mode, MODE_SHELL)) { + if (ISSET(sudo_mode, MODE_SHELL)) { char **av; /* Allocate an extra slot for execve() failure (ENOEXEC). */ @@ -750,6 +741,10 @@ init_vars(envp) } av[++NewArgc] = NULL; NewArgv = av; + } else if (ISSET(sudo_mode, MODE_EDIT) || NewArgc == 0) { + NewArgv--; + NewArgc++; + NewArgv[0] = user_cmnd; } } @@ -764,9 +759,6 @@ set_cmnd(sudo_mode) int rval; char *path = user_path; - /* Set project if applicable. */ - set_project(runas_pw); - /* Resolve the path and return. */ rval = FOUND; user_stat = emalloc(sizeof(struct stat)); @@ -1142,72 +1134,6 @@ set_loginclass(pw) } #endif /* HAVE_LOGIN_CAP_H */ -#ifdef HAVE_PROJECT_H -static void -set_project(pw) - struct passwd *pw; -{ - int errflags = NO_MAIL|MSG_ONLY|NO_EXIT; - int errval; - struct project proj; - struct project *resultp = '\0'; - char buf[1024]; - - /* - * Collect the default project for the user and settaskid - */ - setprojent(); - if (resultp = getdefaultproj(pw->pw_name, &proj, buf, sizeof(buf))) { - errval = setproject(resultp->pj_name, pw->pw_name, TASK_NORMAL); - if (errval != 0) { - switch(errval) { - case SETPROJ_ERR_TASK: - if (errno == EAGAIN) - log_error(errflags, "resource control limit has been reached"); - else if (errno == ESRCH) - log_error(errflags, "user \"%s\" is not a member of " - "project \"%s\"", pw->pw_name, resultp->pj_name); - else if (errno == EACCES) - log_error(errflags, "the invoking task is final"); - else - log_error(errflags, "could not join project \"%s\"", - resultp->pj_name); - break; - case SETPROJ_ERR_POOL: - if (errno == EACCES) - log_error(errflags, "no resource pool accepting " - "default bindings exists for project \"%s\"", - resultp->pj_name); - else if (errno == ESRCH) - log_error(errflags, "specified resource pool does " - "not exist for project \"%s\"", resultp->pj_name); - else - log_error(errflags, "could not bind to default " - "resource pool for project \"%s\"", resultp->pj_name); - break; - default: - if (errval <= 0) { - log_error(errflags, "setproject failed for project \"%s\"", - resultp->pj_name); - } else { - log_error(errflags, "warning, resource control assignment " - "failed for project \"%s\"", resultp->pj_name); - } - } - } - } else { - log_error(errflags, "getdefaultproj() error: %s", strerror(errno)); - } - endprojent(); -} -#else -static void -set_project(pw) - struct passwd *pw; -{ -} -#endif /* HAVE_PROJECT_H */ - /* * Look up the fully qualified domain name and set user_host and user_shost. */ diff --git a/sudoers.cat b/sudoers.cat index 1649855..018d805 100644 --- a/sudoers.cat +++ b/sudoers.cat @@ -61,7 +61,7 @@ DDEESSCCRRIIPPTTIIOONN -1.7.4 July 21, 2010 1 +1.7.4 January 12, 2011 1 @@ -127,7 +127,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 2 +1.7.4 January 12, 2011 2 @@ -193,7 +193,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 3 +1.7.4 January 12, 2011 3 @@ -259,7 +259,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 4 +1.7.4 January 12, 2011 4 @@ -325,7 +325,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 5 +1.7.4 January 12, 2011 5 @@ -391,7 +391,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 6 +1.7.4 January 12, 2011 6 @@ -457,7 +457,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 7 +1.7.4 January 12, 2011 7 @@ -523,7 +523,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 8 +1.7.4 January 12, 2011 8 @@ -589,7 +589,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 9 +1.7.4 January 12, 2011 9 @@ -655,7 +655,7 @@ SSUUDDOOEERRSS OOPPTTIIOONNSS -1.7.4 July 21, 2010 10 +1.7.4 January 12, 2011 10 @@ -721,7 +721,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 11 +1.7.4 January 12, 2011 11 @@ -787,7 +787,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 12 +1.7.4 January 12, 2011 12 @@ -853,7 +853,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 13 +1.7.4 January 12, 2011 13 @@ -919,7 +919,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 14 +1.7.4 January 12, 2011 14 @@ -985,7 +985,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 15 +1.7.4 January 12, 2011 15 @@ -1030,7 +1030,8 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) umask Umask to use when running the command. Negate this option or set it to 0777 to preserve the user's umask. The actual umask that is used will be the union of the - user's umask and 0022. This guarantees that ssuuddoo never + user's umask and the value of the _u_m_a_s_k option, which + defaults to 0022. This guarantees that ssuuddoo never lowers the umask when running a command. Note on systems that use PAM, the default PAM configuration may specify its own umask which will override the value set @@ -1050,8 +1051,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) - -1.7.4 July 21, 2010 16 +1.7.4 January 12, 2011 16 @@ -1117,7 +1117,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 17 +1.7.4 January 12, 2011 17 @@ -1183,7 +1183,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 18 +1.7.4 January 12, 2011 18 @@ -1249,7 +1249,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 19 +1.7.4 January 12, 2011 19 @@ -1315,7 +1315,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 20 +1.7.4 January 12, 2011 20 @@ -1381,7 +1381,7 @@ EEXXAAMMPPLLEESS -1.7.4 July 21, 2010 21 +1.7.4 January 12, 2011 21 @@ -1447,7 +1447,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 22 +1.7.4 January 12, 2011 22 @@ -1513,7 +1513,7 @@ SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) -1.7.4 July 21, 2010 23 +1.7.4 January 12, 2011 23 @@ -1579,7 +1579,7 @@ SSEECCUURRIITTYY NNOOTTEESS -1.7.4 July 21, 2010 24 +1.7.4 January 12, 2011 24 @@ -1621,7 +1621,7 @@ PPRREEVVEENNTTIINNGG SSHHEELLLL EESSCCAAPPEESS where shell escapes are disabled, though ssuuddooeeddiitt is a better solution to running editors via ssuuddoo. Due to the large number of programs that offer shell escapes, restricting - users to the set of programs that do not if often unworkable. + users to the set of programs that do not is often unworkable. noexec Many systems that support shared libraries have the ability to override default library functions by pointing an @@ -1645,7 +1645,7 @@ PPRREEVVEENNTTIINNGG SSHHEELLLL EESSCCAAPPEESS -1.7.4 July 21, 2010 25 +1.7.4 January 12, 2011 25 @@ -1711,7 +1711,7 @@ SSUUPPPPOORRTT -1.7.4 July 21, 2010 26 +1.7.4 January 12, 2011 26 @@ -1777,6 +1777,6 @@ DDIISSCCLLAAIIMMEERR -1.7.4 July 21, 2010 27 +1.7.4 January 12, 2011 27 diff --git a/sudoers.man.in b/sudoers.man.in index 5dff200..210cf90 100644 --- a/sudoers.man.in +++ b/sudoers.man.in @@ -22,7 +22,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .\" -.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) .\" .\" Standard preamble: .\" ======================================================================== @@ -148,7 +148,7 @@ .\" ======================================================================== .\" .IX Title "SUDOERS @mansectform@" -.TH SUDOERS @mansectform@ "July 21, 2010" "1.7.4" "MAINTENANCE COMMANDS" +.TH SUDOERS @mansectform@ "January 12, 2011" "1.7.4" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -1085,11 +1085,11 @@ own timestamps via \f(CW\*(C`sudo \-v\*(C'\fR and \f(CW\*(C`sudo \-k\*(C'\fR res .IX Item "umask" Umask to use when running the command. Negate this option or set it to 0777 to preserve the user's umask. The actual umask that is -used will be the union of the user's umask and \f(CW\*(C`@sudo_umask@\*(C'\fR. -This guarantees that \fBsudo\fR never lowers the umask when running a -command. Note on systems that use \s-1PAM\s0, the default \s-1PAM\s0 configuration -may specify its own umask which will override the value set in -\&\fIsudoers\fR. +used will be the union of the user's umask and the value of the +\&\fIumask\fR option, which defaults to \f(CW\*(C`@sudo_umask@\*(C'\fR. This guarantees +that \fBsudo\fR never lowers the umask when running a command. Note +on systems that use \s-1PAM\s0, the default \s-1PAM\s0 configuration may specify +its own umask which will override the value set in \fIsudoers\fR. .PP \&\fBStrings\fR: .IP "badpass_message" 16 @@ -1670,7 +1670,7 @@ arbitrary commands. Many editors have a restricted mode where shell escapes are disabled, though \fBsudoedit\fR is a better solution to running editors via \fBsudo\fR. Due to the large number of programs that offer shell escapes, restricting users to the set of programs that -do not if often unworkable. +do not is often unworkable. .IP "noexec" 10 .IX Item "noexec" Many systems that support shared libraries have the ability to diff --git a/sudoers.pod b/sudoers.pod index 798295c..da7ea5f 100644 --- a/sudoers.pod +++ b/sudoers.pod @@ -995,11 +995,11 @@ own timestamps via C and C respectively. Umask to use when running the command. Negate this option or set it to 0777 to preserve the user's umask. The actual umask that is -used will be the union of the user's umask and C<@sudo_umask@>. -This guarantees that B never lowers the umask when running a -command. Note on systems that use PAM, the default PAM configuration -may specify its own umask which will override the value set in -I. +used will be the union of the user's umask and the value of the +I option, which defaults to C<@sudo_umask@>. This guarantees +that B never lowers the umask when running a command. Note +on systems that use PAM, the default PAM configuration may specify +its own umask which will override the value set in I. =back @@ -1598,7 +1598,7 @@ arbitrary commands. Many editors have a restricted mode where shell escapes are disabled, though B is a better solution to running editors via B. Due to the large number of programs that offer shell escapes, restricting users to the set of programs that -do not if often unworkable. +do not is often unworkable. =item noexec diff --git a/term.c b/term.c index a3cad61..b1e9da6 100644 --- a/term.c +++ b/term.c @@ -151,10 +151,11 @@ term_raw(fd, isig) /* Set terminal to raw mode */ term.c_cc[VMIN] = 1; term.c_cc[VTIME] = 0; - CLR(term.c_lflag, ECHO | ECHONL | ICANON | ISIG | IEXTEN); + CLR(term.c_iflag, ICRNL | IGNCR | INLCR | IUCLC | IXON); + SET(term.c_oflag, OPOST); + CLR(term.c_lflag, ECHO | ICANON | ISIG | IEXTEN); if (isig) SET(term.c_lflag, ISIG); - CLR(term.c_iflag, ICRNL | IGNCR | INLCR | IUCLC | IXON); if (tcsetattr(fd, TCSADRAIN|TCSASOFT, &term) == 0) { changed = 1; return(1); diff --git a/toke.c b/toke.c index e8b9243..e58fed9 100644 --- a/toke.c +++ b/toke.c @@ -1,9 +1,9 @@ -/* $OpenBSD: flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ */ +/* $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ + * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */ #define FLEX_SCANNER @@ -288,71 +288,76 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 50 -#define YY_END_OF_BUFFER 51 -static yyconst short int yy_accept[555] = +#define YY_NUM_RULES 54 +#define YY_END_OF_BUFFER 55 +static yyconst short int yy_accept[593] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 38, 46, 45, 44, 38, 49, 38, - 39, 40, 38, 41, 38, 38, 38, 38, 43, 42, - 49, 33, 33, 33, 33, 33, 33, 49, 38, 38, - 46, 49, 33, 33, 33, 33, 33, 1, 49, 38, - 38, 16, 15, 16, 15, 15, 49, 49, 49, 2, - 8, 7, 8, 3, 8, 4, 49, 12, 12, 12, - 10, 11, 38, 0, 46, 44, 38, 0, 0, 0, - 48, 0, 38, 28, 0, 0, 27, 0, 36, 36, - 0, 38, 38, 0, 38, 38, 38, 38, 0, 31, - - 33, 33, 33, 33, 33, 33, 38, 47, 38, 46, - 0, 0, 0, 0, 0, 0, 38, 38, 38, 38, - 38, 1, 0, 34, 34, 0, 38, 16, 16, 14, - 13, 14, 0, 0, 2, 8, 0, 5, 6, 8, - 8, 12, 0, 12, 12, 0, 9, 37, 37, 0, - 0, 28, 0, 0, 38, 38, 38, 38, 38, 0, - 0, 31, 31, 33, 33, 33, 33, 33, 33, 33, - 38, 0, 0, 0, 0, 0, 0, 38, 38, 38, - 38, 38, 0, 38, 9, 0, 38, 38, 38, 38, - 38, 38, 0, 32, 32, 32, 0, 0, 31, 31, - - 31, 31, 31, 31, 31, 33, 33, 33, 33, 33, - 33, 33, 38, 0, 0, 0, 0, 0, 0, 38, - 38, 38, 38, 38, 38, 38, 0, 0, 32, 32, - 32, 0, 31, 31, 0, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 0, 24, 33, 33, - 33, 33, 33, 38, 0, 0, 0, 0, 38, 38, - 38, 38, 38, 38, 38, 38, 0, 32, 0, 31, - 31, 31, 0, 0, 0, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 33, 33, - 33, 33, 33, 38, 0, 0, 0, 38, 38, 38, - - 29, 29, 29, 0, 0, 31, 31, 31, 31, 31, - 31, 31, 0, 0, 0, 0, 0, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 0, 23, 33, 33, 0, 22, 0, 25, 38, - 0, 0, 0, 38, 38, 38, 38, 29, 29, 29, - 29, 0, 31, 0, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 0, 0, 0, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 33, 33, 35, 0, 0, 0, 38, 19, 34, - 38, 30, 30, 30, 31, 0, 0, 0, 31, 31, - - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 0, 0, 0, 0, 0, 31, 31, 31, 31, - 31, 31, 31, 31, 0, 21, 0, 26, 0, 19, - 0, 0, 38, 0, 38, 38, 38, 30, 30, 30, - 30, 30, 0, 0, 0, 0, 0, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 0, 0, 0, - 20, 19, 0, 0, 19, 0, 38, 38, 38, 30, - 30, 0, 0, 0, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - - 31, 31, 20, 0, 17, 0, 38, 38, 38, 38, - 38, 0, 0, 0, 0, 0, 31, 31, 31, 31, - 31, 31, 31, 31, 0, 38, 38, 38, 31, 31, - 31, 31, 31, 31, 0, 38, 38, 38, 38, 38, - 31, 31, 31, 31, 31, 0, 18, 29, 29, 29, - 29, 29, 29, 0 + 0, 0, 55, 42, 50, 49, 48, 42, 53, 42, + 43, 44, 42, 45, 42, 42, 42, 42, 47, 46, + 53, 37, 37, 37, 37, 37, 37, 37, 53, 42, + 42, 50, 53, 37, 37, 37, 37, 37, 1, 53, + 42, 42, 16, 15, 16, 15, 15, 53, 53, 53, + 2, 8, 7, 8, 3, 8, 4, 53, 12, 12, + 12, 10, 11, 42, 0, 50, 48, 42, 0, 0, + 0, 52, 0, 42, 32, 0, 0, 31, 0, 40, + 40, 0, 42, 42, 0, 42, 42, 42, 42, 0, + + 35, 37, 37, 37, 37, 37, 37, 37, 42, 51, + 42, 50, 0, 0, 0, 0, 0, 0, 42, 42, + 42, 42, 42, 1, 0, 38, 38, 0, 42, 16, + 16, 14, 13, 14, 0, 0, 2, 8, 0, 5, + 6, 8, 8, 12, 0, 12, 12, 0, 9, 41, + 41, 0, 0, 32, 0, 0, 42, 42, 42, 42, + 42, 0, 0, 35, 35, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 42, 0, 0, 0, 0, 0, + 0, 42, 42, 42, 42, 42, 0, 42, 9, 0, + 42, 42, 42, 42, 42, 42, 0, 36, 36, 36, + + 0, 0, 35, 35, 35, 35, 35, 35, 35, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 42, 0, + 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, + 42, 42, 0, 0, 36, 36, 36, 0, 35, 35, + 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 0, 24, 37, 37, 37, 37, 37, 37, + 37, 37, 42, 0, 0, 0, 0, 42, 42, 42, + 42, 42, 42, 42, 42, 0, 36, 0, 35, 35, + 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, + + 37, 37, 37, 37, 37, 42, 0, 0, 0, 42, + 42, 42, 33, 33, 33, 0, 0, 35, 35, 35, + 35, 35, 35, 35, 0, 0, 0, 0, 0, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 37, 37, 0, 23, 37, 37, 37, + 37, 0, 22, 0, 25, 42, 0, 0, 0, 42, + 42, 42, 42, 33, 33, 33, 33, 0, 35, 0, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, + + 37, 37, 37, 39, 0, 0, 0, 42, 19, 38, + 42, 34, 34, 34, 35, 0, 0, 0, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 0, 0, 0, 0, 35, 35, 35, 35, + 35, 35, 35, 35, 37, 37, 37, 37, 0, 21, + 0, 26, 0, 19, 0, 0, 42, 0, 42, 42, + 42, 34, 34, 34, 34, 34, 0, 0, 0, 0, + 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 29, 37, 37, 37, 0, 0, 0, 20, + + 19, 0, 0, 19, 0, 42, 42, 42, 34, 34, + 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 27, 37, 37, 20, 0, 17, 0, 42, + 42, 42, 42, 42, 0, 0, 0, 0, 0, 35, + 35, 35, 35, 35, 35, 35, 35, 0, 30, 37, + 0, 42, 42, 42, 35, 35, 35, 35, 35, 35, + 0, 28, 0, 42, 42, 42, 42, 42, 35, 35, + 35, 35, 35, 0, 18, 33, 33, 33, 33, 33, + 33, 0 + } ; static yyconst int yy_ec[256] = @@ -364,13 +369,13 @@ static yyconst int yy_ec[256] = 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 1, 1, 25, 26, 10, 27, 28, 29, 30, 31, 32, 29, - 33, 34, 33, 33, 33, 33, 33, 35, 36, 37, - 33, 38, 39, 40, 41, 42, 43, 44, 33, 33, - 10, 45, 10, 1, 46, 1, 47, 48, 49, 50, + 33, 34, 35, 36, 36, 37, 36, 38, 39, 40, + 36, 41, 42, 43, 44, 45, 46, 47, 36, 36, + 10, 48, 10, 1, 49, 1, 50, 51, 52, 53, - 51, 52, 53, 53, 54, 53, 53, 55, 56, 57, - 58, 53, 53, 59, 60, 61, 62, 53, 53, 53, - 53, 53, 1, 1, 1, 1, 1, 1, 1, 1, + 54, 55, 56, 56, 57, 56, 56, 58, 59, 60, + 61, 56, 56, 62, 63, 64, 65, 56, 56, 56, + 56, 56, 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, 1, 1, 1, 1, @@ -387,563 +392,579 @@ static yyconst int yy_ec[256] = 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[63] = +static yyconst int yy_meta[66] = { 0, 1, 2, 3, 4, 5, 2, 1, 6, 6, 1, 1, 2, 1, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 6, 1, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 12, 13, 14, 14, 14, 14, - 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13 + 1, 1, 1, 1, 1, 1, 1, 12, 13, 14, + 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13 } ; -static yyconst short int yy_base[621] = +static yyconst short int yy_base[659] = { 0, - 0, 61, 62, 63, 69, 84, 128, 189, 250, 294, - 80, 101, 2394, 2348, 2390, 3541, 2387, 338, 381, 52, - 3541, 3541, 2345, 3541, 107, 391, 119, 137, 2351, 3541, - 3541, 443, 2330, 490, 2337, 2335, 2320, 541, 145, 55, - 167, 565, 2293, 2297, 2289, 2258, 2257, 2314, 193, 256, - 56, 0, 3541, 2311, 3541, 0, 264, 617, 77, 0, - 2261, 3541, 82, 3541, 99, 3541, 110, 2243, 126, 106, - 3541, 145, 2240, 306, 2282, 2279, 639, 2277, 2276, 2263, - 3541, 201, 209, 74, 2211, 347, 2208, 550, 276, 2199, - 587, 410, 669, 2210, 2210, 306, 358, 317, 2163, 179, - - 706, 0, 2154, 240, 2111, 2109, 389, 3541, 76, 355, - 2082, 2076, 2066, 2061, 2062, 63, 115, 219, 29, 212, - 98, 2116, 507, 361, 2071, 598, 154, 0, 2111, 256, - 3541, 3541, 636, 284, 0, 2069, 567, 3541, 3541, 2066, - 532, 2050, 2087, 271, 300, 288, 2089, 2038, 3541, 2057, - 2055, 1986, 669, 603, 745, 777, 809, 841, 2014, 2003, - 878, 268, 916, 953, 1996, 1980, 1971, 1945, 1911, 1915, - 236, 1862, 1866, 1856, 1843, 1848, 317, 157, 1851, 307, - 266, 258, 777, 296, 1880, 1877, 686, 402, 992, 1024, - 725, 337, 1839, 1838, 787, 499, 1782, 1781, 343, 755, - - 1056, 796, 694, 1094, 819, 1745, 393, 1736, 1728, 1711, - 1707, 1697, 373, 1681, 1666, 1651, 1664, 1623, 543, 400, - 556, 233, 506, 1133, 1165, 1197, 1657, 1655, 827, 1640, - 1638, 1637, 1621, 540, 858, 546, 895, 602, 1229, 0, - 935, 1240, 970, 731, 1278, 1002, 601, 3541, 1614, 1604, - 1610, 1595, 1583, 486, 1565, 1548, 1548, 387, 343, 380, - 616, 1010, 423, 1317, 1349, 1044, 1555, 1554, 1553, 1506, - 1379, 645, 1076, 1113, 1143, 652, 983, 1035, 1151, 1042, - 1418, 0, 1175, 1429, 1184, 866, 1467, 1207, 644, 1451, - 1458, 648, 672, 625, 1447, 1419, 680, 576, 487, 715, - - 1505, 1536, 1567, 1449, 1447, 1432, 1215, 1599, 1257, 903, - 1636, 1297, 1325, 1441, 1335, 1359, 1369, 841, 1024, 1067, - 1124, 1396, 1308, 1675, 0, 1448, 1686, 1484, 1265, 1724, - 1515, 955, 3541, 1423, 1364, 956, 3541, 975, 3541, 807, - 1350, 1300, 591, 1074, 569, 917, 1523, 155, 1762, 1793, - 1546, 1336, 1300, 1553, 768, 1576, 810, 1825, 0, 429, - 1836, 1584, 1404, 1873, 1618, 1655, 1705, 1743, 1288, 1335, - 1734, 1772, 1772, 1803, 1912, 0, 1805, 1923, 1781, 1492, - 1814, 993, 1156, 1276, 1251, 1244, 730, 635, 1952, 1222, - 1984, 2016, 2048, 2080, 1242, 1855, 1892, 1943, 1241, 1184, - - 1198, 1964, 1350, 2112, 0, 762, 2123, 1972, 1992, 2160, - 2000, 2024, 1227, 2034, 2058, 2068, 1369, 1609, 1934, 772, - 806, 2199, 0, 844, 1173, 3541, 1468, 3541, 1192, 2086, - 1389, 142, 991, 604, 736, 2140, 1038, 2209, 2241, 2273, - 2305, 2103, 2177, 1163, 2219, 2229, 2251, 1152, 1116, 1656, - 1706, 2257, 1837, 2337, 0, 881, 2348, 2281, 2088, 2385, - 2291, 2314, 2323, 2366, 1855, 1122, 927, 1042, 1031, 902, - 951, 990, 1725, 2416, 1836, 2437, 2450, 2482, 2514, 2434, - 1951, 2464, 2492, 2502, 936, 919, 1893, 2001, 2522, 2035, - 2546, 0, 1031, 2557, 2530, 2148, 2576, 838, 2595, 2604, - - 2473, 773, 3541, 659, 3541, 1065, 2612, 1195, 2644, 2676, - 2623, 2629, 618, 2655, 2665, 2686, 573, 566, 2049, 557, - 549, 2694, 0, 1078, 1545, 2708, 2740, 2772, 2716, 2724, - 2748, 509, 0, 455, 357, 2756, 1535, 2804, 2836, 2786, - 3541, 2792, 2816, 2185, 3541, 345, 3541, 2824, 2844, 2854, - 25, 2874, 2866, 3541, 2919, 2933, 2947, 2961, 2975, 2989, - 3003, 3017, 3031, 3045, 3051, 3065, 3079, 1107, 3093, 3107, - 3121, 3135, 3149, 3163, 3177, 3191, 3197, 3204, 3218, 3232, - 3238, 3245, 3251, 3257, 3263, 3270, 3276, 3282, 3288, 3295, - 3303, 3309, 3315, 3321, 3328, 3336, 3342, 3348, 3355, 3363, - - 3369, 3377, 3384, 3392, 3398, 3406, 3413, 3421, 3435, 3449, - 3455, 3463, 3470, 3484, 3490, 3498, 3504, 3512, 1600, 3526 + 0, 64, 65, 66, 72, 87, 134, 198, 262, 309, + 83, 98, 2616, 2548, 2586, 3619, 2562, 356, 402, 58, + 3619, 3619, 2517, 3619, 106, 412, 139, 105, 2540, 3619, + 3619, 467, 2516, 517, 2487, 2486, 2496, 2482, 571, 149, + 44, 175, 595, 2444, 2446, 2438, 2433, 2434, 2494, 204, + 268, 65, 0, 3619, 2474, 3619, 0, 276, 650, 114, + 0, 2420, 3619, 79, 3619, 93, 3619, 131, 2417, 71, + 103, 3619, 140, 2416, 206, 2461, 2458, 672, 2456, 2428, + 2426, 3619, 217, 286, 125, 2380, 321, 2377, 347, 328, + 2375, 382, 322, 705, 2398, 2407, 379, 429, 393, 2387, + + 124, 745, 0, 2366, 2361, 253, 2351, 2347, 241, 3619, + 99, 558, 2329, 2333, 2325, 2319, 2320, 147, 116, 214, + 233, 181, 29, 2380, 534, 555, 2325, 617, 126, 0, + 2359, 178, 3619, 3619, 614, 268, 0, 2297, 677, 3619, + 3619, 2296, 315, 2295, 2337, 243, 280, 295, 2339, 2292, + 3619, 2336, 2320, 2274, 705, 777, 789, 824, 859, 894, + 2307, 2259, 934, 129, 975, 1015, 2252, 2232, 2224, 2221, + 2229, 2224, 2213, 2222, 287, 2193, 2197, 2162, 2162, 2167, + 323, 321, 2170, 235, 163, 304, 811, 331, 2217, 2215, + 638, 369, 1057, 1092, 724, 379, 2193, 2184, 730, 421, + + 2166, 2163, 363, 628, 1127, 808, 437, 1168, 834, 2162, + 365, 434, 2153, 2151, 2141, 2139, 2119, 2117, 422, 2099, + 2095, 2069, 2082, 2069, 413, 444, 542, 495, 528, 1210, + 1245, 1280, 2106, 2105, 842, 2097, 2074, 2072, 2035, 563, + 867, 570, 875, 586, 1315, 0, 885, 1326, 911, 674, + 1367, 953, 603, 3619, 2006, 1993, 2006, 1986, 1962, 1965, + 1965, 1929, 538, 1922, 1905, 1906, 328, 431, 21, 556, + 920, 592, 1409, 1444, 994, 1944, 1942, 1874, 1872, 1477, + 684, 1034, 1067, 1077, 686, 691, 756, 1000, 767, 1519, + 0, 1102, 1530, 1111, 961, 1571, 1146, 1854, 1831, 663, + + 526, 1809, 1816, 790, 791, 655, 1823, 1742, 239, 580, + 640, 721, 1612, 1646, 1680, 1774, 1765, 1757, 1185, 1715, + 1193, 1042, 1755, 1220, 1228, 1766, 1255, 1265, 1290, 770, + 985, 1025, 1298, 1298, 1337, 1797, 0, 1348, 1808, 1384, + 1154, 1849, 1419, 1697, 1690, 847, 3619, 1689, 1682, 1693, + 1632, 959, 3619, 1000, 3619, 652, 1618, 1595, 539, 1044, + 576, 740, 1427, 670, 1890, 1924, 1462, 1634, 1633, 1392, + 808, 1468, 1058, 1959, 0, 764, 1970, 1495, 1236, 2010, + 1549, 1590, 1622, 1632, 1137, 1265, 1656, 1658, 1503, 1660, + 2052, 0, 1690, 2063, 1669, 1435, 1699, 1534, 1531, 1534, + + 1530, 1100, 1101, 1509, 1447, 1439, 816, 572, 1849, 1428, + 2105, 2140, 2175, 2210, 1450, 1734, 1774, 1827, 1368, 1211, + 1246, 1866, 1281, 2245, 0, 798, 2256, 1898, 1452, 2296, + 1908, 1932, 1346, 1942, 1989, 2029, 1540, 1581, 2073, 819, + 853, 2338, 0, 896, 1152, 1284, 1248, 1113, 1193, 3619, + 1351, 3619, 1089, 1552, 2087, 813, 872, 671, 1322, 2087, + 1090, 2348, 2383, 2418, 2453, 1785, 2035, 1123, 2120, 2150, + 2130, 1083, 1040, 1410, 1623, 2158, 1669, 2488, 0, 937, + 2499, 2183, 1598, 2539, 2193, 2219, 2228, 2274, 1725, 1026, + 1121, 1369, 3619, 1392, 958, 877, 811, 836, 1594, 742, + + 1455, 1675, 2383, 1677, 2418, 2581, 2616, 2651, 2282, 1875, + 2315, 2358, 2396, 760, 715, 1828, 1943, 2429, 1971, 2686, + 0, 1171, 2697, 2437, 1742, 2463, 717, 2472, 2517, 1998, + 649, 1596, 3619, 1740, 619, 3619, 559, 3619, 1288, 2525, + 1311, 2739, 2774, 2558, 2564, 530, 2591, 2601, 2626, 451, + 437, 2087, 371, 363, 2634, 0, 1301, 1780, 3619, 1832, + 2097, 2809, 2844, 2879, 2659, 2667, 2675, 326, 0, 305, + 1833, 3619, 200, 2715, 1664, 2914, 2949, 2725, 3619, 2748, + 2758, 1916, 3619, 175, 3619, 2785, 2793, 2826, 127, 2859, + 2835, 3619, 2997, 3011, 3025, 3039, 3053, 3067, 3081, 3095, + + 3109, 3123, 3129, 3143, 3157, 1360, 3171, 3185, 3199, 3213, + 3227, 3241, 3255, 3269, 3275, 3282, 3296, 3310, 3316, 3323, + 3329, 3335, 3341, 3348, 3354, 3360, 3366, 3373, 3381, 3387, + 3393, 3399, 3406, 3414, 3420, 3426, 3433, 3441, 3447, 3455, + 3462, 3470, 3476, 3484, 3491, 3499, 3513, 3527, 3533, 3541, + 3548, 3562, 3568, 3576, 3582, 3590, 1881, 3604 } ; -static yyconst short int yy_def[621] = +static yyconst short int yy_def[659] = { 0, - 554, 1, 1, 1, 555, 555, 556, 556, 557, 557, - 558, 558, 554, 559, 554, 554, 554, 560, 561, 562, - 554, 554, 563, 554, 564, 559, 26, 26, 565, 554, - 554, 554, 32, 32, 34, 34, 34, 559, 26, 559, - 554, 561, 32, 32, 34, 34, 34, 554, 554, 566, - 559, 567, 554, 567, 554, 567, 554, 561, 554, 568, - 569, 554, 569, 554, 569, 554, 570, 571, 571, 571, - 554, 554, 559, 559, 554, 554, 560, 572, 560, 573, - 554, 574, 554, 562, 575, 562, 563, 563, 564, 576, - 559, 559, 26, 565, 93, 93, 93, 93, 577, 578, - - 32, 34, 34, 34, 34, 34, 559, 554, 559, 554, - 554, 554, 554, 554, 554, 573, 559, 93, 559, 559, - 559, 554, 554, 566, 579, 559, 559, 567, 567, 554, - 554, 554, 574, 554, 568, 569, 569, 554, 554, 569, - 569, 571, 554, 571, 571, 554, 554, 559, 554, 573, - 580, 575, 575, 554, 559, 559, 559, 93, 158, 581, - 554, 582, 554, 32, 34, 34, 34, 34, 34, 34, - 559, 554, 554, 554, 554, 554, 573, 559, 158, 559, - 559, 559, 554, 559, 554, 580, 559, 559, 559, 559, - 559, 559, 583, 584, 584, 195, 585, 584, 586, 163, - - 554, 201, 201, 554, 201, 34, 34, 34, 34, 34, - 34, 34, 559, 554, 554, 554, 554, 554, 573, 559, - 559, 559, 559, 559, 559, 559, 554, 587, 587, 229, - 587, 588, 589, 590, 554, 591, 204, 591, 591, 239, - 591, 554, 242, 242, 554, 242, 554, 554, 34, 34, - 34, 34, 34, 559, 554, 554, 554, 573, 559, 559, - 559, 559, 559, 559, 559, 559, 592, 592, 593, 594, - 554, 554, 554, 554, 554, 595, 595, 596, 245, 596, - 596, 281, 596, 554, 284, 284, 554, 284, 34, 34, - 34, 34, 34, 559, 554, 554, 573, 559, 559, 559, - - 559, 559, 559, 554, 597, 598, 271, 554, 308, 308, - 554, 308, 554, 554, 554, 554, 554, 554, 599, 599, - 600, 287, 600, 600, 324, 600, 554, 327, 327, 554, - 327, 554, 554, 34, 34, 554, 554, 554, 554, 559, - 554, 554, 573, 559, 559, 559, 559, 559, 559, 559, - 559, 554, 601, 554, 602, 311, 602, 602, 358, 358, - 554, 361, 361, 554, 361, 554, 554, 554, 554, 603, - 603, 604, 330, 604, 604, 375, 604, 554, 378, 378, - 378, 34, 34, 559, 554, 554, 573, 559, 559, 559, - 559, 559, 559, 559, 554, 554, 554, 554, 605, 605, - - 606, 364, 606, 606, 404, 404, 554, 407, 407, 554, - 407, 554, 554, 554, 554, 554, 554, 607, 607, 608, - 608, 608, 422, 422, 554, 554, 554, 554, 554, 554, - 573, 573, 559, 609, 610, 559, 559, 559, 559, 559, - 559, 559, 554, 554, 554, 554, 554, 554, 611, 611, - 612, 410, 612, 612, 454, 454, 554, 457, 457, 554, - 457, 554, 554, 554, 554, 613, 613, 554, 614, 573, - 559, 609, 609, 609, 610, 610, 559, 559, 559, 559, - 559, 554, 554, 554, 554, 615, 615, 616, 460, 616, - 616, 491, 491, 554, 494, 494, 494, 554, 554, 554, - - 554, 554, 554, 614, 554, 573, 559, 559, 559, 559, - 559, 554, 554, 554, 554, 554, 554, 617, 617, 618, - 618, 618, 522, 522, 573, 559, 559, 559, 554, 554, - 554, 554, 619, 619, 620, 559, 559, 559, 559, 559, - 554, 554, 554, 554, 554, 620, 554, 559, 559, 559, - 559, 559, 559, 0, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554 + 592, 1, 1, 1, 593, 593, 594, 594, 595, 595, + 596, 596, 592, 597, 592, 592, 592, 598, 599, 600, + 592, 592, 601, 592, 602, 597, 26, 26, 603, 592, + 592, 592, 32, 32, 34, 34, 34, 34, 597, 26, + 597, 592, 599, 32, 32, 34, 34, 34, 592, 592, + 604, 597, 605, 592, 605, 592, 605, 592, 599, 592, + 606, 607, 592, 607, 592, 607, 592, 608, 609, 609, + 609, 592, 592, 597, 597, 592, 592, 598, 610, 598, + 611, 592, 612, 592, 600, 613, 600, 601, 601, 602, + 614, 597, 597, 26, 603, 94, 94, 94, 94, 615, + + 616, 32, 34, 34, 34, 34, 34, 34, 597, 592, + 597, 592, 592, 592, 592, 592, 592, 611, 597, 94, + 597, 597, 597, 592, 592, 604, 617, 597, 597, 605, + 605, 592, 592, 592, 612, 592, 606, 607, 607, 592, + 592, 607, 607, 609, 592, 609, 609, 592, 592, 597, + 592, 611, 618, 613, 613, 592, 597, 597, 597, 94, + 160, 619, 592, 620, 592, 32, 34, 34, 34, 34, + 34, 34, 34, 34, 597, 592, 592, 592, 592, 592, + 611, 597, 160, 597, 597, 597, 592, 597, 592, 618, + 597, 597, 597, 597, 597, 597, 621, 622, 622, 199, + + 623, 622, 624, 165, 592, 205, 205, 592, 205, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 597, 592, + 592, 592, 592, 592, 611, 597, 597, 597, 597, 597, + 597, 597, 592, 625, 625, 235, 625, 626, 627, 628, + 592, 629, 208, 629, 629, 245, 629, 592, 248, 248, + 592, 248, 592, 592, 34, 34, 34, 34, 34, 34, + 34, 34, 597, 592, 592, 592, 611, 597, 597, 597, + 597, 597, 597, 597, 597, 630, 630, 631, 632, 592, + 592, 592, 592, 592, 633, 633, 634, 251, 634, 634, + 290, 634, 592, 293, 293, 592, 293, 34, 34, 34, + + 34, 34, 34, 34, 34, 597, 592, 592, 611, 597, + 597, 597, 597, 597, 597, 592, 635, 636, 280, 592, + 320, 320, 592, 320, 592, 592, 592, 592, 592, 592, + 637, 637, 638, 296, 638, 638, 336, 638, 592, 339, + 339, 592, 339, 34, 34, 592, 592, 34, 34, 34, + 34, 592, 592, 592, 592, 597, 592, 592, 611, 597, + 597, 597, 597, 597, 597, 597, 597, 592, 639, 592, + 640, 323, 640, 640, 374, 374, 592, 377, 377, 592, + 377, 592, 592, 592, 592, 641, 641, 642, 342, 642, + 642, 391, 642, 592, 394, 394, 394, 34, 34, 34, + + 34, 34, 34, 597, 592, 592, 611, 597, 597, 597, + 597, 597, 597, 597, 592, 592, 592, 592, 643, 643, + 644, 380, 644, 644, 424, 424, 592, 427, 427, 592, + 427, 592, 592, 592, 592, 592, 592, 645, 645, 646, + 646, 646, 442, 442, 34, 34, 34, 34, 592, 592, + 592, 592, 592, 592, 611, 611, 597, 647, 648, 597, + 597, 597, 597, 597, 597, 597, 592, 592, 592, 592, + 592, 592, 649, 649, 650, 430, 650, 650, 478, 478, + 592, 481, 481, 592, 481, 592, 592, 592, 592, 651, + 651, 592, 592, 34, 34, 34, 592, 652, 611, 597, + + 647, 647, 647, 648, 648, 597, 597, 597, 597, 597, + 592, 592, 592, 592, 653, 653, 654, 484, 654, 654, + 520, 520, 592, 523, 523, 523, 592, 592, 592, 592, + 592, 592, 592, 34, 34, 592, 652, 592, 611, 597, + 597, 597, 597, 597, 592, 592, 592, 592, 592, 592, + 655, 655, 656, 656, 656, 555, 555, 592, 592, 34, + 611, 597, 597, 597, 592, 592, 592, 592, 657, 657, + 592, 592, 658, 597, 597, 597, 597, 597, 592, 592, + 592, 592, 592, 658, 592, 597, 597, 597, 597, 597, + 597, 0, 592, 592, 592, 592, 592, 592, 592, 592, + + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592 } ; -static yyconst short int yy_nxt[3604] = +static yyconst short int yy_nxt[3685] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 14, 23, 24, 14, 14, 25, 26, 27, 28, 26, 26, 26, 26, 26, 29, 30, 31, 14, 32, 32, 32, - 32, 33, 34, 34, 35, 34, 36, 34, 37, 34, - 34, 34, 34, 34, 38, 14, 39, 39, 39, 39, - 39, 39, 14, 14, 14, 14, 14, 14, 14, 40, - 14, 14, 41, 48, 48, 81, 42, 49, 49, 74, - 15, 53, 54, 74, 55, 85, 50, 50, 134, 108, - 55, 69, 16, 70, 71, 15, 53, 54, 180, 55, - 43, 44, 55, 56, 45, 55, 86, 554, 46, 74, - - 74, 47, 69, 16, 70, 71, 138, 55, 56, 145, - 90, 141, 108, 57, 90, 90, 109, 127, 86, 177, - 74, 51, 51, 139, 72, 171, 137, 144, 57, 15, - 16, 17, 90, 58, 96, 96, 96, 96, 96, 96, - 96, 96, 74, 137, 81, 72, 146, 147, 182, 142, - 143, 91, 97, 97, 97, 97, 97, 98, 73, 74, - 95, 95, 95, 95, 95, 95, 95, 95, 110, 347, - 143, 178, 59, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 15, 16, 17, 161, 58, 470, 111, 112, 74, 74, - - 113, 74, 163, 184, 114, 123, 220, 115, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 73, 59, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 15, 16, 17, 62, 58, 74, 134, 108, 125, - 63, 64, 65, 125, 125, 130, 108, 131, 181, 132, - 179, 166, 144, 131, 66, 132, 167, 74, 168, 90, - 74, 125, 161, 90, 90, 134, 108, 132, 132, 146, - 147, 200, 220, 213, 67, 15, 16, 17, 62, 58, - - 126, 90, 74, 145, 63, 64, 65, 73, 132, 73, - 74, 73, 222, 73, 73, 143, 220, 73, 66, 81, - 91, 159, 159, 159, 159, 159, 159, 159, 159, 73, - 73, 73, 159, 159, 159, 159, 159, 159, 67, 78, - 74, 78, 73, 78, 143, 78, 78, 547, 84, 78, - 84, 74, 84, 223, 84, 84, 110, 161, 84, 547, - 94, 78, 78, 78, 125, 219, 200, 220, 125, 125, - 298, 84, 84, 159, 159, 159, 159, 159, 159, 159, - 159, 74, 79, 81, 111, 112, 125, 74, 113, 81, - 134, 108, 114, 82, 247, 115, 83, 83, 83, 83, - - 83, 83, 83, 83, 92, 126, 93, 93, 93, 93, - 93, 93, 93, 93, 94, 187, 248, 74, 95, 95, - 95, 95, 95, 254, 74, 155, 156, 157, 155, 155, - 155, 155, 155, 74, 299, 74, 262, 95, 95, 95, - 95, 95, 95, 73, 74, 259, 74, 73, 297, 73, - 399, 399, 73, 73, 74, 73, 73, 73, 101, 101, - 101, 101, 101, 101, 101, 101, 94, 74, 354, 73, - 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 74, 102, 95, - 95, 95, 95, 95, 95, 73, 73, 73, 73, 73, - - 73, 73, 73, 73, 73, 102, 102, 102, 102, 102, - 102, 102, 102, 554, 231, 231, 231, 102, 102, 102, - 102, 102, 83, 83, 83, 83, 83, 83, 83, 83, - 74, 74, 489, 134, 108, 294, 73, 73, 73, 73, - 73, 73, 107, 108, 73, 81, 73, 345, 73, 73, - 74, 87, 73, 87, 161, 87, 261, 87, 87, 235, - 161, 87, 554, 200, 73, 73, 73, 81, 136, 237, - 354, 136, 136, 87, 87, 87, 137, 82, 136, 94, - 83, 83, 83, 83, 83, 83, 83, 83, 89, 489, - 73, 136, 89, 81, 73, 73, 452, 258, 89, 124, - - 74, 73, 247, 124, 90, 73, 73, 473, 90, 124, - 89, 89, 73, 74, 90, 554, 161, 260, 116, 81, - 74, 124, 124, 73, 248, 237, 90, 90, 389, 133, - 344, 512, 554, 554, 554, 554, 554, 554, 554, 554, - 78, 387, 78, 148, 78, 332, 78, 78, 474, 336, - 78, 554, 554, 554, 554, 554, 554, 554, 554, 161, - 74, 505, 78, 78, 78, 300, 161, 333, 200, 74, - 152, 337, 152, 338, 152, 237, 152, 152, 340, 74, - 152, 433, 81, 79, 158, 158, 158, 158, 158, 158, - 158, 158, 152, 152, 152, 339, 158, 158, 158, 158, - - 158, 224, 225, 226, 224, 224, 224, 224, 224, 240, - 240, 240, 240, 240, 241, 158, 158, 158, 158, 158, - 158, 164, 164, 164, 164, 164, 164, 164, 164, 343, - 74, 431, 81, 164, 164, 164, 164, 164, 187, 473, - 188, 188, 188, 188, 188, 188, 282, 282, 282, 282, - 282, 283, 158, 158, 158, 158, 158, 158, 187, 74, - 188, 188, 188, 188, 188, 188, 188, 188, 346, 74, - 205, 205, 205, 205, 205, 205, 205, 205, 125, 432, - 476, 354, 125, 449, 449, 235, 161, 161, 125, 74, - 187, 356, 189, 189, 189, 189, 189, 189, 189, 189, - - 125, 125, 229, 229, 230, 231, 231, 231, 231, 231, - 197, 239, 239, 239, 239, 239, 239, 239, 239, 554, - 161, 74, 187, 554, 190, 190, 190, 190, 190, 191, - 188, 188, 554, 356, 238, 238, 238, 238, 238, 238, - 238, 238, 268, 268, 268, 268, 268, 268, 268, 268, - 197, 74, 161, 74, 73, 161, 192, 192, 192, 192, - 192, 192, 192, 192, 237, 466, 466, 384, 192, 192, - 192, 192, 192, 273, 274, 275, 273, 273, 273, 273, - 273, 325, 325, 325, 325, 325, 326, 192, 192, 192, - 192, 192, 192, 194, 195, 196, 196, 196, 196, 196, - - 196, 197, 486, 486, 81, 198, 198, 198, 198, 198, - 246, 246, 246, 246, 246, 246, 246, 246, 359, 359, - 359, 359, 359, 360, 198, 198, 198, 198, 198, 198, - 161, 201, 202, 203, 201, 201, 201, 201, 201, 204, - 235, 161, 452, 205, 205, 205, 205, 205, 235, 161, - 277, 277, 277, 277, 277, 277, 332, 336, 237, 402, - 506, 74, 205, 205, 205, 205, 205, 205, 206, 206, - 206, 206, 206, 206, 206, 206, 338, 390, 333, 337, - 206, 206, 206, 206, 206, 281, 281, 281, 281, 281, - 281, 281, 281, 554, 425, 74, 235, 161, 339, 192, - - 192, 192, 192, 192, 192, 187, 237, 188, 188, 188, - 188, 188, 188, 188, 188, 554, 426, 280, 280, 280, - 280, 280, 280, 280, 280, 301, 302, 303, 301, 301, - 301, 301, 301, 505, 474, 74, 74, 187, 161, 188, - 188, 188, 188, 188, 188, 188, 188, 279, 235, 161, - 471, 436, 518, 518, 74, 554, 161, 262, 279, 263, - 263, 263, 263, 263, 263, 279, 525, 81, 74, 235, - 161, 236, 236, 236, 236, 236, 236, 236, 236, 237, - 235, 161, 74, 238, 238, 238, 238, 238, 74, 313, - 279, 314, 314, 314, 314, 314, 314, 314, 314, 533, - - 533, 503, 238, 238, 238, 238, 238, 238, 161, 242, - 243, 244, 242, 242, 242, 242, 242, 245, 74, 135, - 135, 246, 246, 246, 246, 246, 313, 388, 315, 315, - 315, 315, 315, 315, 315, 315, 161, 235, 161, 402, - 246, 246, 246, 246, 246, 246, 262, 322, 263, 263, - 263, 263, 263, 263, 263, 263, 313, 427, 316, 316, - 316, 316, 316, 317, 314, 314, 288, 288, 288, 288, - 288, 288, 288, 288, 425, 356, 443, 74, 262, 428, - 264, 264, 264, 264, 264, 264, 264, 264, 235, 161, - 320, 320, 320, 320, 320, 320, 426, 354, 279, 324, - - 324, 324, 324, 324, 324, 324, 324, 356, 507, 74, - 262, 354, 265, 265, 265, 265, 265, 266, 263, 263, - 554, 402, 323, 323, 323, 323, 323, 323, 323, 323, - 312, 312, 312, 312, 312, 312, 312, 312, 468, 74, - 412, 74, 235, 161, 277, 277, 277, 277, 277, 277, - 277, 277, 237, 235, 161, 278, 278, 278, 278, 278, - 278, 278, 278, 279, 356, 307, 74, 280, 280, 280, - 280, 280, 358, 358, 358, 358, 358, 358, 358, 358, - 376, 376, 376, 376, 376, 377, 280, 280, 280, 280, - 280, 280, 161, 284, 285, 286, 284, 284, 284, 284, - - 284, 287, 161, 430, 429, 288, 288, 288, 288, 288, - 554, 279, 357, 357, 357, 357, 357, 357, 357, 357, - 74, 554, 161, 307, 288, 288, 288, 288, 288, 288, - 262, 322, 263, 263, 263, 263, 263, 263, 263, 263, - 366, 367, 368, 366, 366, 366, 366, 366, 313, 161, - 314, 314, 314, 314, 314, 314, 314, 314, 322, 233, - 386, 74, 262, 554, 263, 263, 263, 263, 263, 263, - 263, 263, 313, 402, 314, 314, 314, 314, 314, 314, - 314, 314, 313, 161, 314, 314, 314, 314, 314, 314, - 431, 81, 322, 74, 308, 309, 310, 308, 308, 308, - - 308, 308, 311, 469, 385, 383, 312, 312, 312, 312, - 312, 331, 331, 331, 331, 331, 331, 331, 331, 405, - 405, 405, 405, 405, 406, 312, 312, 312, 312, 312, - 312, 235, 161, 320, 320, 320, 320, 320, 320, 320, - 320, 279, 235, 161, 321, 321, 321, 321, 321, 321, - 321, 321, 322, 382, 313, 307, 323, 323, 323, 323, - 323, 235, 161, 371, 371, 371, 371, 371, 371, 427, - 233, 322, 197, 342, 341, 323, 323, 323, 323, 323, - 323, 161, 327, 328, 329, 327, 327, 327, 327, 327, - 330, 428, 335, 334, 331, 331, 331, 331, 331, 375, - - 375, 375, 375, 375, 375, 375, 375, 423, 423, 423, - 423, 423, 424, 331, 331, 331, 331, 331, 331, 347, - 348, 348, 348, 348, 348, 348, 348, 348, 554, 307, - 374, 374, 374, 374, 374, 374, 374, 374, 391, 392, - 393, 394, 391, 391, 391, 391, 525, 81, 536, 74, - 347, 349, 349, 349, 349, 349, 349, 349, 349, 535, - 347, 348, 348, 348, 348, 348, 348, 74, 396, 397, - 398, 396, 396, 396, 396, 396, 233, 197, 197, 74, - 74, 347, 350, 350, 350, 350, 350, 351, 348, 348, - 74, 365, 365, 365, 365, 365, 365, 365, 365, 404, - - 404, 404, 404, 404, 404, 404, 404, 255, 545, 296, - 295, 74, 354, 545, 355, 355, 355, 355, 355, 355, - 355, 355, 356, 161, 293, 292, 357, 357, 357, 357, - 357, 554, 373, 403, 403, 403, 403, 403, 403, 403, - 403, 291, 290, 289, 271, 357, 357, 357, 357, 357, - 357, 361, 362, 363, 361, 361, 361, 361, 361, 364, - 233, 197, 267, 365, 365, 365, 365, 365, 412, 354, - 413, 413, 413, 413, 413, 413, 413, 413, 197, 402, - 100, 255, 365, 365, 365, 365, 365, 365, 235, 161, - 371, 371, 371, 371, 371, 371, 371, 371, 322, 235, - - 161, 372, 372, 372, 372, 372, 372, 372, 372, 373, - 257, 255, 256, 374, 374, 374, 374, 374, 412, 354, - 414, 414, 414, 414, 414, 414, 414, 414, 554, 452, - 255, 253, 374, 374, 374, 374, 374, 374, 161, 378, - 379, 380, 378, 378, 378, 378, 378, 235, 161, 252, - 251, 381, 381, 381, 381, 381, 412, 322, 415, 415, - 415, 415, 415, 416, 413, 413, 250, 249, 94, 474, - 381, 381, 381, 381, 381, 381, 347, 348, 348, 348, - 348, 348, 348, 348, 348, 235, 161, 381, 381, 381, - 381, 381, 381, 381, 381, 373, 422, 422, 422, 422, - - 422, 422, 422, 422, 197, 233, 74, 347, 348, 348, - 348, 348, 348, 348, 348, 348, 554, 161, 235, 161, - 419, 419, 419, 419, 419, 419, 373, 554, 373, 421, - 421, 421, 421, 421, 421, 421, 421, 74, 354, 554, - 400, 400, 400, 400, 400, 400, 400, 400, 356, 354, - 554, 401, 401, 401, 401, 401, 401, 401, 401, 402, - 452, 197, 100, 403, 403, 403, 403, 403, 443, 161, - 444, 444, 444, 444, 444, 444, 444, 444, 373, 81, - 476, 185, 403, 403, 403, 403, 403, 403, 407, 408, - 409, 407, 407, 407, 407, 407, 410, 221, 218, 217, - - 411, 411, 411, 411, 411, 443, 354, 445, 445, 445, - 445, 445, 445, 445, 445, 216, 452, 215, 214, 411, - 411, 411, 411, 411, 411, 235, 161, 419, 419, 419, - 419, 419, 419, 419, 419, 373, 235, 161, 420, 420, - 420, 420, 420, 420, 420, 420, 212, 235, 161, 211, - 421, 421, 421, 421, 421, 434, 443, 373, 446, 446, - 446, 446, 446, 447, 444, 444, 481, 481, 481, 421, - 421, 421, 421, 421, 421, 434, 210, 434, 435, 411, - 411, 411, 411, 411, 411, 411, 411, 454, 454, 454, - 454, 454, 454, 454, 454, 74, 74, 436, 209, 437, - - 437, 437, 437, 437, 437, 437, 437, 455, 455, 455, - 455, 455, 456, 554, 354, 453, 453, 453, 453, 453, - 453, 453, 453, 208, 489, 207, 100, 92, 74, 436, - 153, 438, 438, 438, 438, 438, 438, 438, 438, 462, - 463, 464, 462, 462, 462, 462, 462, 412, 554, 413, - 413, 413, 413, 413, 413, 413, 413, 81, 489, 81, - 74, 436, 354, 439, 439, 439, 439, 439, 440, 441, - 441, 412, 489, 413, 413, 413, 413, 413, 413, 413, - 413, 412, 74, 413, 413, 413, 413, 413, 413, 434, - 185, 142, 74, 436, 143, 442, 442, 442, 437, 437, - - 437, 437, 437, 492, 492, 492, 492, 492, 493, 434, - 137, 434, 434, 137, 129, 183, 436, 122, 481, 481, - 481, 176, 175, 174, 74, 354, 173, 450, 450, 450, - 450, 450, 450, 450, 450, 402, 354, 172, 451, 451, - 451, 451, 451, 451, 451, 451, 452, 74, 170, 169, - 453, 453, 453, 453, 453, 477, 478, 479, 477, 477, - 477, 477, 477, 523, 523, 523, 523, 523, 524, 453, - 453, 453, 453, 453, 453, 457, 458, 459, 457, 457, - 457, 457, 457, 460, 74, 165, 100, 461, 461, 461, - 461, 461, 482, 483, 484, 482, 482, 482, 482, 482, - - 541, 541, 541, 541, 541, 541, 461, 461, 461, 461, - 461, 461, 235, 161, 467, 467, 467, 467, 467, 467, - 467, 467, 436, 73, 441, 441, 441, 441, 441, 441, - 441, 441, 443, 100, 444, 444, 444, 444, 444, 444, - 444, 444, 443, 154, 444, 444, 444, 444, 444, 444, - 444, 444, 88, 74, 436, 153, 441, 441, 441, 441, - 441, 441, 441, 441, 443, 81, 444, 444, 444, 444, - 444, 444, 461, 461, 461, 461, 461, 461, 461, 461, - 148, 149, 76, 75, 74, 74, 436, 143, 441, 441, - 441, 441, 441, 441, 480, 480, 491, 491, 491, 491, - - 491, 491, 491, 491, 554, 137, 490, 490, 490, 490, - 490, 490, 490, 490, 129, 122, 121, 74, 436, 120, - 480, 480, 480, 480, 480, 480, 480, 480, 161, 498, - 498, 498, 498, 498, 498, 498, 498, 161, 499, 499, - 499, 499, 499, 499, 499, 499, 119, 118, 117, 74, - 354, 106, 487, 487, 487, 487, 487, 487, 487, 487, - 452, 354, 105, 488, 488, 488, 488, 488, 488, 488, - 488, 489, 104, 103, 100, 490, 490, 490, 490, 490, - 161, 500, 500, 500, 500, 500, 501, 498, 498, 88, - 76, 75, 74, 554, 490, 490, 490, 490, 490, 490, - - 494, 495, 496, 494, 494, 494, 494, 494, 554, 554, - 554, 554, 497, 497, 497, 497, 497, 472, 554, 554, - 554, 472, 554, 472, 472, 554, 554, 472, 554, 554, - 554, 497, 497, 497, 497, 497, 497, 554, 475, 472, - 472, 472, 475, 554, 475, 475, 554, 554, 475, 480, - 480, 480, 480, 480, 480, 480, 480, 554, 554, 554, - 475, 475, 475, 507, 554, 508, 508, 508, 508, 508, - 508, 508, 508, 554, 554, 554, 554, 512, 74, 513, - 513, 513, 513, 513, 513, 513, 513, 161, 498, 498, - 498, 498, 498, 498, 74, 507, 554, 509, 509, 509, - - 509, 509, 509, 509, 509, 512, 554, 514, 514, 514, - 514, 514, 514, 514, 514, 512, 554, 515, 515, 515, - 515, 515, 516, 513, 513, 554, 74, 507, 554, 510, - 510, 510, 510, 510, 511, 508, 508, 497, 497, 497, - 497, 497, 497, 497, 497, 522, 522, 522, 522, 522, - 522, 522, 522, 554, 554, 554, 554, 554, 74, 354, - 554, 519, 519, 519, 519, 519, 519, 519, 519, 489, - 354, 554, 520, 520, 520, 520, 520, 520, 520, 520, - 554, 554, 554, 554, 521, 521, 521, 521, 521, 554, - 554, 521, 521, 521, 521, 521, 521, 521, 521, 554, - - 554, 554, 554, 521, 521, 521, 521, 521, 521, 161, - 498, 498, 498, 498, 498, 498, 498, 498, 161, 498, - 498, 498, 498, 498, 498, 498, 498, 526, 527, 528, - 526, 526, 526, 526, 526, 554, 507, 554, 508, 508, - 508, 508, 508, 508, 529, 530, 531, 529, 529, 529, - 529, 529, 554, 554, 554, 554, 74, 507, 554, 508, - 508, 508, 508, 508, 508, 508, 508, 74, 512, 554, - 513, 513, 513, 513, 513, 513, 513, 513, 512, 554, - 513, 513, 513, 513, 513, 513, 513, 513, 74, 507, - 554, 508, 508, 508, 508, 508, 508, 508, 508, 512, - - 554, 513, 513, 513, 513, 513, 513, 354, 554, 534, - 534, 534, 534, 534, 534, 534, 534, 554, 554, 554, - 74, 536, 554, 537, 537, 537, 537, 537, 537, 537, - 537, 541, 541, 541, 541, 541, 541, 541, 541, 542, - 542, 542, 542, 542, 542, 542, 542, 554, 554, 554, - 554, 554, 74, 536, 554, 538, 538, 538, 538, 538, - 538, 538, 538, 543, 543, 543, 543, 543, 544, 541, - 541, 548, 549, 550, 548, 548, 548, 548, 548, 554, - 554, 554, 554, 554, 74, 536, 554, 539, 539, 539, - 539, 539, 540, 537, 537, 554, 554, 554, 554, 536, - - 74, 537, 537, 537, 537, 537, 537, 541, 541, 541, - 541, 541, 541, 541, 541, 554, 74, 536, 554, 537, - 537, 537, 537, 537, 537, 537, 537, 554, 554, 554, - 74, 541, 541, 541, 541, 541, 541, 541, 541, 551, - 551, 551, 551, 551, 551, 551, 551, 554, 74, 536, - 554, 537, 537, 537, 537, 537, 537, 537, 537, 548, - 548, 548, 548, 548, 548, 548, 548, 554, 74, 552, - 552, 552, 552, 552, 553, 551, 551, 554, 554, 554, - 74, 551, 551, 551, 551, 551, 551, 554, 74, 551, - 551, 551, 551, 551, 551, 551, 551, 554, 74, 554, - - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 74, 554, 554, 554, 554, 554, 554, 554, 74, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 61, 61, 61, + 32, 33, 34, 34, 34, 34, 35, 36, 34, 37, + 34, 38, 34, 34, 34, 34, 34, 39, 14, 40, + 40, 40, 40, 40, 40, 14, 14, 14, 14, 14, + 14, 14, 41, 14, 14, 42, 49, 49, 75, 43, + 50, 50, 146, 15, 54, 55, 75, 56, 311, 51, + 51, 86, 186, 56, 70, 16, 71, 72, 15, 54, + 55, 75, 56, 44, 45, 56, 57, 46, 56, 70, + + 16, 71, 72, 140, 47, 87, 147, 48, 111, 91, + 56, 57, 75, 91, 91, 136, 110, 141, 145, 58, + 98, 98, 98, 98, 98, 99, 139, 52, 52, 129, + 73, 91, 143, 110, 58, 15, 16, 17, 163, 59, + 139, 148, 149, 163, 144, 73, 75, 165, 592, 82, + 145, 175, 204, 92, 97, 97, 97, 97, 97, 97, + 97, 97, 74, 75, 96, 96, 96, 96, 96, 96, + 96, 96, 87, 75, 75, 182, 112, 585, 188, 136, + 110, 60, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 15, + + 16, 17, 585, 59, 113, 114, 181, 74, 115, 74, + 75, 74, 228, 74, 74, 116, 125, 74, 117, 84, + 84, 84, 84, 84, 84, 84, 84, 74, 75, 74, + 74, 74, 84, 84, 84, 84, 84, 84, 84, 84, + 185, 82, 136, 110, 146, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 73, 554, 554, 554, 73, - 554, 73, 73, 73, 554, 554, 73, 73, 73, 77, - 77, 554, 77, 77, 77, 77, 77, 77, 77, 77, - - 77, 77, 77, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 84, 554, 554, - 554, 84, 554, 84, 84, 84, 84, 554, 84, 84, - 84, 87, 554, 554, 554, 87, 554, 87, 87, 87, - 554, 554, 87, 87, 87, 89, 554, 554, 89, 89, - 89, 89, 89, 89, 554, 554, 89, 89, 89, 99, - 99, 554, 554, 554, 99, 124, 554, 554, 124, 124, - 124, 124, 124, 124, 554, 554, 124, 124, 124, 128, - 554, 554, 128, 128, 128, 128, 128, 128, 554, 128, - 554, 128, 128, 136, 554, 554, 136, 554, 136, 136, - - 136, 136, 136, 554, 136, 136, 136, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 142, 142, 554, 142, 554, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 78, 78, 554, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 151, 151, 554, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 152, 554, 554, - 554, 152, 554, 152, 152, 152, 554, 554, 152, 152, - 152, 90, 554, 554, 90, 90, 90, 90, 90, 90, - - 554, 554, 90, 90, 90, 160, 160, 554, 554, 554, - 160, 162, 162, 162, 554, 554, 554, 162, 125, 554, - 554, 125, 125, 125, 125, 125, 125, 554, 554, 125, - 125, 125, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 193, 193, 554, 554, - 554, 193, 199, 199, 199, 554, 554, 554, 199, 227, - 227, 554, 554, 554, 227, 228, 228, 554, 554, 554, - 228, 232, 232, 554, 554, 554, 232, 234, 234, 234, - 554, 554, 554, 234, 267, 267, 554, 554, 554, 267, - 269, 269, 554, 554, 554, 269, 270, 270, 554, 554, - - 554, 270, 272, 272, 272, 554, 554, 554, 272, 276, - 276, 276, 276, 554, 554, 554, 276, 304, 304, 554, - 554, 554, 304, 305, 305, 554, 554, 554, 305, 306, - 306, 554, 554, 554, 306, 318, 318, 318, 554, 554, - 554, 318, 319, 319, 319, 319, 554, 554, 554, 319, - 352, 352, 554, 554, 554, 352, 353, 353, 554, 554, - 554, 353, 369, 369, 369, 554, 554, 554, 369, 370, - 370, 370, 370, 554, 554, 554, 370, 395, 395, 554, - 554, 554, 395, 399, 554, 399, 399, 554, 554, 554, - 399, 417, 417, 417, 554, 554, 554, 417, 418, 418, - - 418, 418, 554, 554, 554, 418, 448, 448, 554, 554, - 554, 448, 449, 554, 449, 449, 554, 554, 554, 449, - 465, 465, 465, 554, 554, 554, 465, 466, 466, 466, - 554, 554, 554, 554, 466, 472, 554, 554, 472, 472, - 554, 472, 472, 472, 554, 554, 472, 472, 472, 475, - 554, 554, 475, 475, 554, 475, 475, 475, 554, 554, - 475, 475, 475, 485, 485, 554, 554, 554, 485, 486, - 554, 486, 486, 554, 554, 554, 486, 502, 502, 554, - 554, 554, 554, 502, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 517, 517, - - 554, 554, 554, 517, 518, 554, 518, 518, 554, 554, - 554, 518, 532, 532, 554, 554, 554, 532, 533, 554, - 533, 554, 554, 554, 554, 533, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 13, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - - 554, 554, 554 + 61, 61, 61, 15, 16, 17, 63, 59, 183, 136, + 110, 127, 64, 65, 66, 127, 127, 132, 110, 133, + 75, 134, 75, 147, 169, 133, 67, 134, 75, 170, + 145, 359, 171, 127, 172, 184, 148, 149, 226, 134, + + 134, 84, 84, 84, 84, 84, 84, 84, 84, 68, + 15, 16, 17, 63, 59, 128, 136, 110, 370, 64, + 65, 66, 85, 134, 85, 82, 85, 145, 85, 85, + 82, 91, 85, 67, 75, 91, 91, 157, 158, 159, + 157, 157, 157, 157, 157, 85, 85, 219, 88, 518, + 88, 75, 88, 91, 88, 88, 68, 79, 88, 79, + 74, 79, 139, 79, 79, 226, 253, 79, 75, 75, + 88, 88, 88, 226, 225, 92, 592, 163, 75, 79, + 79, 79, 191, 90, 370, 74, 204, 90, 254, 74, + 74, 229, 309, 90, 161, 161, 161, 161, 161, 161, + + 161, 161, 95, 80, 82, 90, 90, 74, 161, 161, + 161, 161, 161, 161, 83, 82, 75, 84, 84, 84, + 84, 84, 84, 84, 84, 93, 75, 94, 94, 94, + 94, 94, 94, 94, 94, 95, 237, 237, 237, 96, + 96, 96, 96, 96, 161, 161, 161, 161, 161, 161, + 161, 161, 246, 246, 246, 246, 246, 247, 310, 75, + 518, 96, 96, 96, 96, 96, 96, 74, 255, 75, + 267, 74, 256, 74, 476, 263, 74, 74, 75, 74, + 74, 74, 102, 102, 102, 102, 102, 102, 102, 102, + 95, 75, 268, 74, 102, 102, 102, 102, 102, 103, + + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 75, 103, 96, 96, 96, 96, + 96, 96, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 103, 103, 103, 103, 103, 103, 103, 103, + 592, 82, 75, 545, 103, 103, 103, 103, 103, 84, + 84, 84, 84, 84, 84, 84, 84, 226, 127, 112, + 348, 538, 127, 127, 349, 95, 74, 74, 74, 74, + 74, 74, 109, 110, 74, 75, 74, 163, 74, 74, + 127, 270, 74, 241, 163, 75, 204, 113, 114, 75, + 306, 115, 407, 243, 74, 74, 74, 82, 116, 592, + + 163, 117, 128, 75, 253, 271, 269, 83, 312, 243, + 84, 84, 84, 84, 84, 84, 84, 84, 126, 75, + 74, 457, 126, 75, 74, 74, 254, 75, 126, 592, + 592, 592, 592, 592, 592, 592, 592, 360, 409, 75, + 126, 126, 74, 209, 209, 209, 209, 209, 209, 209, + 209, 118, 82, 230, 231, 232, 230, 230, 230, 230, + 230, 560, 135, 163, 346, 592, 592, 592, 592, 592, + 592, 592, 592, 79, 502, 79, 150, 79, 138, 79, + 79, 138, 138, 79, 363, 75, 347, 75, 138, 291, + 291, 291, 291, 291, 292, 79, 79, 79, 163, 75, + + 163, 138, 75, 361, 241, 163, 154, 204, 154, 243, + 154, 356, 154, 154, 243, 404, 154, 75, 503, 80, + 160, 160, 160, 160, 160, 160, 160, 160, 154, 154, + 154, 163, 160, 160, 160, 160, 160, 191, 476, 192, + 192, 192, 192, 192, 192, 235, 235, 236, 237, 237, + 237, 237, 237, 201, 160, 160, 160, 160, 160, 160, + 166, 166, 166, 166, 166, 166, 166, 166, 75, 241, + 163, 75, 166, 166, 166, 166, 166, 362, 91, 288, + 592, 163, 91, 422, 163, 419, 419, 75, 91, 75, + 288, 352, 354, 243, 160, 160, 160, 160, 160, 160, + + 91, 91, 191, 410, 192, 192, 192, 192, 192, 192, + 192, 192, 127, 353, 355, 82, 127, 455, 82, 473, + 473, 370, 127, 245, 245, 245, 245, 245, 245, 245, + 245, 372, 241, 163, 127, 127, 75, 191, 538, 193, + 193, 193, 193, 193, 193, 193, 193, 592, 346, 244, + 244, 244, 244, 244, 244, 244, 244, 277, 277, 277, + 277, 277, 277, 277, 277, 201, 592, 163, 456, 499, + 347, 75, 191, 536, 194, 194, 194, 194, 194, 195, + 192, 192, 282, 283, 284, 282, 282, 282, 282, 282, + 252, 252, 252, 252, 252, 252, 252, 252, 241, 163, + + 286, 286, 286, 286, 286, 286, 75, 74, 243, 196, + 196, 196, 196, 196, 196, 196, 196, 490, 490, 75, + 535, 196, 196, 196, 196, 196, 290, 290, 290, 290, + 290, 290, 290, 290, 500, 313, 314, 315, 313, 313, + 313, 313, 313, 196, 196, 196, 196, 196, 196, 198, + 199, 200, 200, 200, 200, 200, 200, 201, 515, 515, + 352, 202, 202, 202, 202, 202, 592, 75, 289, 289, + 289, 289, 289, 289, 289, 289, 337, 337, 337, 337, + 337, 338, 353, 202, 202, 202, 202, 202, 202, 163, + 205, 206, 207, 205, 205, 205, 205, 205, 208, 163, + + 534, 354, 209, 209, 209, 209, 209, 271, 288, 272, + 272, 272, 272, 272, 272, 297, 297, 297, 297, 297, + 297, 297, 297, 355, 209, 209, 209, 209, 209, 209, + 210, 210, 210, 210, 210, 210, 210, 210, 241, 163, + 163, 75, 210, 210, 210, 210, 210, 325, 288, 326, + 326, 326, 326, 326, 326, 326, 326, 375, 375, 375, + 375, 375, 376, 422, 196, 196, 196, 196, 196, 196, + 191, 592, 192, 192, 192, 192, 192, 192, 192, 192, + 325, 372, 327, 327, 327, 327, 327, 327, 327, 327, + 325, 75, 328, 328, 328, 328, 328, 329, 326, 326, + + 408, 449, 451, 460, 75, 191, 372, 192, 192, 192, + 192, 192, 192, 192, 192, 241, 163, 332, 332, 332, + 332, 332, 332, 450, 452, 288, 336, 336, 336, 336, + 336, 336, 336, 336, 241, 163, 467, 75, 497, 75, + 241, 163, 242, 242, 242, 242, 242, 242, 242, 242, + 243, 163, 496, 492, 244, 244, 244, 244, 244, 592, + 288, 335, 335, 335, 335, 335, 335, 335, 335, 392, + 392, 392, 392, 392, 393, 493, 244, 244, 244, 244, + 244, 244, 163, 248, 249, 250, 248, 248, 248, 248, + 248, 251, 551, 551, 449, 252, 252, 252, 252, 252, + + 324, 324, 324, 324, 324, 324, 324, 324, 374, 374, + 374, 374, 374, 374, 374, 374, 450, 252, 252, 252, + 252, 252, 252, 271, 370, 272, 272, 272, 272, 272, + 272, 272, 272, 592, 372, 373, 373, 373, 373, 373, + 373, 373, 373, 382, 383, 384, 382, 382, 382, 382, + 382, 425, 425, 425, 425, 425, 426, 75, 271, 370, + 273, 273, 273, 273, 273, 273, 273, 273, 325, 422, + 326, 326, 326, 326, 326, 326, 326, 326, 325, 163, + 326, 326, 326, 326, 326, 326, 326, 326, 334, 561, + 82, 495, 75, 271, 592, 274, 274, 274, 274, 274, + + 275, 272, 272, 325, 422, 326, 326, 326, 326, 326, + 326, 241, 163, 343, 343, 343, 343, 343, 343, 343, + 343, 334, 569, 569, 540, 502, 494, 75, 241, 163, + 286, 286, 286, 286, 286, 286, 286, 286, 243, 241, + 163, 287, 287, 287, 287, 287, 287, 287, 287, 288, + 592, 163, 451, 289, 289, 289, 289, 289, 75, 432, + 334, 241, 163, 387, 387, 387, 387, 387, 387, 505, + 492, 334, 137, 137, 452, 289, 289, 289, 289, 289, + 289, 163, 293, 294, 295, 293, 293, 293, 293, 293, + 296, 372, 493, 532, 297, 297, 297, 297, 297, 391, + + 391, 391, 391, 391, 391, 391, 391, 416, 417, 418, + 416, 416, 416, 416, 416, 533, 297, 297, 297, 297, + 297, 297, 271, 370, 272, 272, 272, 272, 272, 272, + 272, 272, 592, 422, 390, 390, 390, 390, 390, 390, + 390, 390, 411, 412, 413, 414, 411, 411, 411, 411, + 443, 443, 443, 443, 443, 444, 75, 271, 592, 272, + 272, 272, 272, 272, 272, 272, 272, 479, 479, 479, + 479, 479, 480, 319, 75, 75, 363, 364, 364, 364, + 364, 364, 364, 381, 381, 381, 381, 381, 381, 381, + 381, 75, 320, 321, 322, 320, 320, 320, 320, 320, + + 323, 454, 503, 453, 324, 324, 324, 324, 324, 75, + 424, 424, 424, 424, 424, 424, 424, 424, 397, 397, + 397, 397, 397, 397, 397, 397, 324, 324, 324, 324, + 324, 324, 241, 163, 332, 332, 332, 332, 332, 332, + 332, 332, 288, 241, 163, 333, 333, 333, 333, 333, + 333, 333, 333, 334, 163, 458, 75, 335, 335, 335, + 335, 335, 592, 334, 423, 423, 423, 423, 423, 423, + 423, 423, 448, 447, 446, 458, 445, 458, 458, 335, + 335, 335, 335, 335, 335, 163, 339, 340, 341, 339, + 339, 339, 339, 339, 342, 163, 82, 532, 343, 343, + + 343, 343, 343, 432, 389, 433, 433, 433, 433, 433, + 433, 433, 433, 521, 521, 521, 521, 521, 522, 533, + 343, 343, 343, 343, 343, 343, 363, 364, 364, 364, + 364, 364, 364, 364, 364, 432, 370, 434, 434, 434, + 434, 434, 434, 434, 434, 432, 476, 435, 435, 435, + 435, 435, 436, 433, 433, 539, 319, 239, 406, 75, + 363, 365, 365, 365, 365, 365, 365, 365, 365, 241, + 163, 241, 163, 592, 163, 405, 403, 574, 592, 334, + 592, 389, 592, 389, 442, 442, 442, 442, 442, 442, + 442, 442, 476, 75, 363, 366, 366, 366, 366, 366, + + 367, 364, 364, 241, 163, 439, 439, 439, 439, 439, + 439, 75, 592, 389, 441, 441, 441, 441, 441, 441, + 441, 441, 503, 402, 505, 401, 400, 75, 370, 399, + 371, 371, 371, 371, 371, 371, 371, 371, 372, 163, + 398, 558, 373, 373, 373, 373, 373, 467, 389, 468, + 468, 468, 468, 468, 468, 468, 468, 556, 556, 556, + 556, 556, 557, 559, 373, 373, 373, 373, 373, 373, + 377, 378, 379, 377, 377, 377, 377, 377, 380, 325, + 319, 558, 381, 381, 381, 381, 381, 467, 239, 469, + 469, 469, 469, 469, 469, 469, 469, 201, 460, 358, + + 510, 510, 510, 559, 381, 381, 381, 381, 381, 381, + 241, 163, 387, 387, 387, 387, 387, 387, 387, 387, + 334, 241, 163, 388, 388, 388, 388, 388, 388, 388, + 388, 389, 75, 571, 571, 390, 390, 390, 390, 390, + 467, 370, 470, 470, 470, 470, 470, 471, 468, 468, + 357, 476, 458, 351, 350, 572, 572, 390, 390, 390, + 390, 390, 390, 163, 394, 395, 396, 394, 394, 394, + 394, 394, 458, 345, 458, 459, 397, 397, 397, 397, + 397, 431, 431, 431, 431, 431, 431, 431, 431, 583, + 510, 510, 510, 344, 583, 319, 75, 239, 397, 397, + + 397, 397, 397, 397, 363, 364, 364, 364, 364, 364, + 364, 364, 364, 478, 478, 478, 478, 478, 478, 478, + 478, 592, 75, 477, 477, 477, 477, 477, 477, 477, + 477, 579, 579, 579, 579, 579, 579, 75, 363, 364, + 364, 364, 364, 364, 364, 364, 364, 486, 487, 488, + 486, 486, 486, 486, 486, 432, 370, 433, 433, 433, + 433, 433, 433, 433, 433, 201, 518, 201, 264, 308, + 307, 75, 370, 305, 420, 420, 420, 420, 420, 420, + 420, 420, 372, 370, 592, 421, 421, 421, 421, 421, + 421, 421, 421, 422, 518, 304, 303, 423, 423, 423, + + 423, 423, 432, 302, 433, 433, 433, 433, 433, 433, + 433, 433, 163, 527, 527, 527, 527, 527, 527, 423, + 423, 423, 423, 423, 423, 427, 428, 429, 427, 427, + 427, 427, 427, 430, 301, 300, 299, 431, 431, 431, + 431, 431, 432, 298, 433, 433, 433, 433, 433, 433, + 511, 512, 513, 511, 511, 511, 511, 511, 280, 431, + 431, 431, 431, 431, 431, 241, 163, 439, 439, 439, + 439, 439, 439, 439, 439, 389, 241, 163, 440, 440, + 440, 440, 440, 440, 440, 440, 241, 163, 455, 82, + 441, 441, 441, 441, 441, 239, 389, 201, 561, 82, + + 370, 498, 506, 507, 508, 506, 506, 506, 506, 506, + 518, 573, 441, 441, 441, 441, 441, 441, 460, 276, + 461, 461, 461, 461, 461, 461, 461, 461, 201, 101, + 264, 266, 264, 467, 75, 468, 468, 468, 468, 468, + 468, 468, 468, 467, 265, 468, 468, 468, 468, 468, + 468, 264, 75, 460, 262, 462, 462, 462, 462, 462, + 462, 462, 462, 467, 261, 468, 468, 468, 468, 468, + 468, 468, 468, 485, 485, 485, 485, 485, 485, 485, + 485, 260, 259, 258, 257, 95, 201, 75, 460, 239, + 463, 463, 463, 463, 463, 464, 465, 465, 520, 520, + + 520, 520, 520, 520, 520, 520, 592, 201, 519, 519, + 519, 519, 519, 519, 519, 519, 101, 82, 189, 227, + 224, 223, 75, 460, 222, 466, 466, 466, 461, 461, + 461, 461, 461, 163, 527, 527, 527, 527, 527, 527, + 527, 527, 163, 528, 528, 528, 528, 528, 528, 528, + 528, 221, 220, 218, 217, 216, 215, 75, 370, 214, + 474, 474, 474, 474, 474, 474, 474, 474, 422, 370, + 213, 475, 475, 475, 475, 475, 475, 475, 475, 476, + 212, 211, 101, 477, 477, 477, 477, 477, 163, 529, + 529, 529, 529, 529, 530, 527, 527, 509, 509, 509, + + 509, 509, 509, 509, 509, 477, 477, 477, 477, 477, + 477, 481, 482, 483, 481, 481, 481, 481, 481, 484, + 93, 155, 82, 485, 485, 485, 485, 485, 545, 75, + 546, 546, 546, 546, 546, 546, 546, 546, 82, 75, + 189, 144, 145, 139, 139, 485, 485, 485, 485, 485, + 485, 241, 163, 491, 491, 491, 491, 491, 491, 491, + 491, 460, 131, 465, 465, 465, 465, 465, 465, 465, + 465, 545, 187, 547, 547, 547, 547, 547, 547, 547, + 547, 124, 180, 179, 501, 178, 177, 176, 501, 174, + 501, 501, 173, 168, 501, 75, 460, 167, 465, 465, + + 465, 465, 465, 465, 465, 465, 501, 501, 501, 545, + 101, 548, 548, 548, 548, 548, 549, 546, 546, 504, + 74, 101, 156, 504, 89, 504, 504, 155, 82, 504, + 75, 460, 150, 465, 465, 465, 465, 465, 465, 509, + 509, 504, 504, 504, 526, 526, 526, 526, 526, 526, + 526, 526, 555, 555, 555, 555, 555, 555, 555, 555, + 151, 77, 76, 75, 145, 75, 460, 139, 509, 509, + 509, 509, 509, 509, 509, 509, 592, 131, 554, 554, + 554, 554, 554, 554, 554, 554, 163, 527, 527, 527, + 527, 527, 527, 527, 527, 124, 123, 122, 121, 120, + + 75, 370, 119, 516, 516, 516, 516, 516, 516, 516, + 516, 476, 370, 108, 517, 517, 517, 517, 517, 517, + 517, 517, 518, 107, 106, 105, 519, 519, 519, 519, + 519, 163, 527, 527, 527, 527, 527, 527, 527, 527, + 562, 563, 564, 562, 562, 562, 562, 562, 519, 519, + 519, 519, 519, 519, 523, 524, 525, 523, 523, 523, + 523, 523, 104, 101, 89, 77, 526, 526, 526, 526, + 526, 540, 75, 541, 541, 541, 541, 541, 541, 565, + 566, 567, 565, 565, 565, 565, 565, 76, 526, 526, + 526, 526, 526, 526, 540, 75, 541, 541, 541, 541, + + 541, 541, 541, 541, 545, 75, 546, 546, 546, 546, + 546, 546, 546, 546, 545, 592, 546, 546, 546, 546, + 546, 546, 546, 546, 592, 592, 592, 592, 75, 540, + 592, 542, 542, 542, 542, 542, 542, 542, 542, 545, + 592, 546, 546, 546, 546, 546, 546, 370, 592, 570, + 570, 570, 570, 570, 570, 570, 570, 592, 592, 592, + 592, 592, 592, 75, 540, 592, 543, 543, 543, 543, + 543, 544, 541, 541, 579, 579, 579, 579, 579, 579, + 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, + 581, 581, 581, 581, 581, 582, 579, 579, 75, 370, + + 592, 552, 552, 552, 552, 552, 552, 552, 552, 518, + 370, 592, 553, 553, 553, 553, 553, 553, 553, 553, + 592, 592, 592, 592, 554, 554, 554, 554, 554, 592, + 586, 587, 588, 586, 586, 586, 586, 586, 574, 592, + 575, 575, 575, 575, 575, 575, 554, 554, 554, 554, + 554, 554, 540, 592, 541, 541, 541, 541, 541, 541, + 541, 541, 75, 579, 579, 579, 579, 579, 579, 579, + 579, 592, 75, 579, 579, 579, 579, 579, 579, 579, + 579, 592, 592, 592, 592, 592, 75, 540, 592, 541, + 541, 541, 541, 541, 541, 541, 541, 592, 592, 592, + + 589, 589, 589, 589, 589, 589, 589, 589, 586, 586, + 586, 586, 586, 586, 586, 586, 592, 592, 592, 592, + 592, 75, 574, 592, 575, 575, 575, 575, 575, 575, + 575, 575, 75, 592, 592, 592, 592, 592, 592, 592, + 75, 590, 590, 590, 590, 590, 591, 589, 589, 592, + 589, 589, 589, 589, 589, 589, 75, 574, 592, 576, + 576, 576, 576, 576, 576, 576, 576, 592, 592, 592, + 592, 592, 592, 75, 589, 589, 589, 589, 589, 589, + 589, 589, 75, 592, 592, 592, 592, 592, 592, 592, + 592, 75, 574, 592, 577, 577, 577, 577, 577, 578, + + 575, 575, 592, 592, 592, 592, 75, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 75, 574, 592, 575, + 575, 575, 575, 575, 575, 575, 575, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 75, 574, 592, 575, 575, 575, 575, 575, 575, + 575, 575, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 75, 53, 53, 53, + + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 74, 592, 592, 592, 74, 592, 74, + 74, 74, 592, 592, 74, 74, 74, 78, 78, 592, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 85, 592, 592, 592, 85, + + 592, 85, 85, 85, 85, 592, 85, 85, 85, 88, + 592, 592, 592, 88, 592, 88, 88, 88, 592, 592, + 88, 88, 88, 90, 592, 592, 90, 90, 90, 90, + 90, 90, 592, 592, 90, 90, 90, 100, 100, 592, + 592, 592, 100, 126, 592, 592, 126, 126, 126, 126, + 126, 126, 592, 592, 126, 126, 126, 130, 592, 592, + 130, 130, 130, 130, 130, 130, 592, 130, 592, 130, + 130, 138, 592, 592, 138, 592, 138, 138, 138, 138, + 138, 592, 138, 138, 138, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 144, + + 144, 592, 144, 592, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 79, 79, 592, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 153, 153, 592, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 154, 592, 592, 592, 154, + 592, 154, 154, 154, 592, 592, 154, 154, 154, 91, + 592, 592, 91, 91, 91, 91, 91, 91, 592, 592, + 91, 91, 91, 162, 162, 592, 592, 592, 162, 164, + 164, 164, 592, 592, 592, 164, 127, 592, 592, 127, + + 127, 127, 127, 127, 127, 592, 592, 127, 127, 127, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 197, 197, 592, 592, 592, 197, + 203, 203, 203, 592, 592, 592, 203, 233, 233, 592, + 592, 592, 233, 234, 234, 592, 592, 592, 234, 238, + 238, 592, 592, 592, 238, 240, 240, 240, 592, 592, + 592, 240, 276, 276, 592, 592, 592, 276, 278, 278, + 592, 592, 592, 278, 279, 279, 592, 592, 592, 279, + 281, 281, 281, 592, 592, 592, 281, 285, 285, 285, + 285, 592, 592, 592, 285, 316, 316, 592, 592, 592, + + 316, 317, 317, 592, 592, 592, 317, 318, 318, 592, + 592, 592, 318, 330, 330, 330, 592, 592, 592, 330, + 331, 331, 331, 331, 592, 592, 592, 331, 368, 368, + 592, 592, 592, 368, 369, 369, 592, 592, 592, 369, + 385, 385, 385, 592, 592, 592, 385, 386, 386, 386, + 386, 592, 592, 592, 386, 415, 415, 592, 592, 592, + 415, 419, 592, 419, 419, 592, 592, 592, 419, 437, + 437, 437, 592, 592, 592, 437, 438, 438, 438, 438, + 592, 592, 592, 438, 472, 472, 592, 592, 592, 472, + 473, 592, 473, 473, 592, 592, 592, 473, 489, 489, + + 489, 592, 592, 592, 489, 490, 490, 490, 592, 592, + 592, 592, 490, 501, 592, 592, 501, 501, 592, 501, + 501, 501, 592, 592, 501, 501, 501, 504, 592, 592, + 504, 504, 592, 504, 504, 504, 592, 592, 504, 504, + 504, 514, 514, 592, 592, 592, 514, 515, 592, 515, + 515, 592, 592, 592, 515, 531, 531, 592, 592, 592, + 592, 531, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 550, 550, 592, 592, + 592, 550, 551, 592, 551, 551, 592, 592, 592, 551, + 568, 568, 592, 592, 592, 568, 569, 592, 569, 592, + + 592, 592, 592, 569, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 584, 13, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592 } ; -static yyconst short int yy_chk[3604] = +static yyconst short int yy_chk[3685] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -951,397 +972,405 @@ static yyconst short int yy_chk[3604] = 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, 2, 3, 4, 116, 2, 3, 4, 551, - 5, 5, 5, 119, 5, 20, 3, 4, 59, 59, - 5, 11, 11, 11, 11, 6, 6, 6, 119, 6, - 2, 2, 5, 5, 2, 6, 20, 84, 2, 40, - - 51, 2, 12, 12, 12, 12, 63, 6, 6, 70, - 25, 67, 67, 5, 25, 25, 40, 51, 84, 116, - 109, 3, 4, 65, 11, 109, 63, 69, 6, 7, - 7, 7, 25, 7, 27, 27, 27, 27, 27, 27, - 27, 27, 121, 65, 432, 12, 72, 72, 121, 72, - 70, 25, 28, 28, 28, 28, 28, 28, 39, 117, - 39, 39, 39, 39, 39, 39, 39, 39, 41, 348, - 69, 117, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 100, 8, 432, 41, 41, 127, 348, - - 41, 178, 100, 127, 41, 49, 178, 41, 49, 49, - 49, 49, 49, 49, 49, 49, 82, 82, 82, 82, - 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, - 83, 83, 118, 8, 8, 8, 8, 8, 8, 8, + 1, 1, 1, 1, 1, 2, 3, 4, 269, 2, + 3, 4, 70, 5, 5, 5, 123, 5, 269, 3, + 4, 20, 123, 5, 11, 11, 11, 11, 6, 6, + 6, 41, 6, 2, 2, 5, 5, 2, 6, 12, + + 12, 12, 12, 64, 2, 20, 71, 2, 41, 25, + 6, 6, 52, 25, 25, 60, 60, 66, 70, 5, + 28, 28, 28, 28, 28, 28, 64, 3, 4, 52, + 11, 25, 68, 68, 6, 7, 7, 7, 101, 7, + 66, 73, 73, 164, 73, 12, 111, 101, 85, 118, + 71, 111, 164, 25, 27, 27, 27, 27, 27, 27, + 27, 27, 40, 119, 40, 40, 40, 40, 40, 40, + 40, 40, 85, 129, 589, 119, 42, 584, 129, 132, + 132, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, + + 8, 8, 573, 8, 42, 42, 118, 75, 42, 75, + 185, 75, 185, 75, 75, 42, 50, 75, 42, 50, + 50, 50, 50, 50, 50, 50, 50, 120, 122, 75, + 75, 75, 83, 83, 83, 83, 83, 83, 83, 83, + 122, 309, 109, 109, 146, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 9, 9, 120, 130, 130, 50, - 9, 9, 9, 50, 50, 57, 57, 57, 120, 57, - 118, 104, 144, 57, 9, 57, 104, 222, 104, 89, - 171, 50, 162, 89, 89, 134, 134, 57, 57, 146, - 146, 162, 222, 171, 9, 10, 10, 10, 10, 10, - - 50, 89, 182, 145, 10, 10, 10, 74, 57, 74, - 181, 74, 181, 74, 74, 144, 182, 74, 10, 177, - 89, 96, 96, 96, 96, 96, 96, 96, 96, 74, - 74, 74, 98, 98, 98, 98, 98, 98, 10, 18, - 184, 18, 18, 18, 145, 18, 18, 546, 86, 18, - 86, 180, 86, 184, 86, 86, 110, 199, 86, 535, - 192, 18, 18, 18, 124, 177, 199, 180, 124, 124, - 259, 86, 86, 97, 97, 97, 97, 97, 97, 97, - 97, 192, 18, 19, 110, 110, 124, 259, 110, 258, - 107, 107, 110, 19, 207, 110, 19, 19, 19, 19, - - 19, 19, 19, 19, 26, 124, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 188, 207, 213, 26, 26, - 26, 26, 26, 213, 260, 92, 92, 92, 92, 92, - 92, 92, 92, 107, 260, 26, 263, 26, 26, 26, - 26, 26, 26, 32, 220, 220, 188, 32, 258, 32, - 360, 360, 32, 32, 92, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 263, 534, 32, + 8, 8, 8, 9, 9, 9, 9, 9, 120, 136, + 136, 51, 9, 9, 9, 51, 51, 58, 58, 58, + 121, 58, 184, 147, 106, 58, 9, 58, 109, 106, + 146, 309, 106, 51, 106, 121, 148, 148, 184, 58, + + 58, 84, 84, 84, 84, 84, 84, 84, 84, 9, + 10, 10, 10, 10, 10, 51, 143, 143, 570, 10, + 10, 10, 87, 58, 87, 181, 87, 147, 87, 87, + 267, 90, 87, 10, 175, 90, 90, 93, 93, 93, + 93, 93, 93, 93, 93, 87, 87, 175, 89, 568, + 89, 186, 89, 90, 89, 89, 10, 18, 89, 18, + 18, 18, 143, 18, 18, 186, 211, 18, 182, 93, + 89, 89, 89, 182, 181, 90, 554, 203, 188, 18, + 18, 18, 192, 92, 553, 92, 203, 92, 211, 92, + 92, 188, 267, 92, 97, 97, 97, 97, 97, 97, + + 97, 97, 196, 18, 19, 92, 92, 92, 99, 99, + 99, 99, 99, 99, 19, 225, 192, 19, 19, 19, + 19, 19, 19, 19, 19, 26, 196, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 200, 200, 200, 26, + 26, 26, 26, 26, 98, 98, 98, 98, 98, 98, + 98, 98, 207, 207, 207, 207, 207, 207, 268, 26, + 551, 26, 26, 26, 26, 26, 26, 32, 212, 219, + 225, 32, 212, 32, 550, 219, 32, 32, 268, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 226, 226, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, - - 32, 32, 32, 32, 32, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 196, 196, 196, 34, 34, 34, - 34, 34, 123, 123, 123, 123, 123, 123, 123, 123, - 254, 299, 532, 141, 141, 254, 34, 34, 34, 34, - 34, 34, 38, 38, 38, 219, 38, 299, 38, 38, - 223, 88, 38, 88, 234, 88, 223, 88, 88, 236, - 236, 88, 521, 234, 38, 38, 38, 42, 137, 236, - 520, 137, 137, 88, 88, 88, 141, 42, 137, 221, - 42, 42, 42, 42, 42, 42, 42, 42, 91, 518, - 91, 137, 91, 343, 91, 91, 517, 219, 91, 126, - - 221, 126, 247, 126, 154, 126, 126, 434, 154, 126, - 91, 91, 91, 345, 154, 238, 238, 221, 42, 58, - 298, 126, 126, 126, 247, 238, 154, 154, 345, 58, - 298, 513, 58, 58, 58, 58, 58, 58, 58, 58, - 77, 343, 77, 77, 77, 289, 77, 77, 434, 292, - 77, 133, 133, 133, 133, 133, 133, 133, 133, 272, - 261, 504, 77, 77, 77, 261, 276, 289, 272, 294, - 153, 292, 153, 293, 153, 276, 153, 153, 294, 388, - 153, 388, 297, 77, 93, 93, 93, 93, 93, 93, - 93, 93, 153, 153, 153, 293, 93, 93, 93, 93, - - 93, 187, 187, 187, 187, 187, 187, 187, 187, 203, - 203, 203, 203, 203, 203, 93, 93, 93, 93, 93, - 93, 101, 101, 101, 101, 101, 101, 101, 101, 297, - 187, 387, 387, 101, 101, 101, 101, 101, 191, 435, - 191, 191, 191, 191, 191, 191, 244, 244, 244, 244, - 244, 244, 101, 101, 101, 101, 101, 101, 155, 300, - 155, 155, 155, 155, 155, 155, 155, 155, 300, 191, - 200, 200, 200, 200, 200, 200, 200, 200, 183, 387, - 435, 355, 183, 406, 406, 420, 420, 502, 183, 155, - 156, 355, 156, 156, 156, 156, 156, 156, 156, 156, - - 183, 183, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 202, 202, 202, 202, 202, 202, 202, 202, 421, - 421, 156, 157, 357, 157, 157, 157, 157, 157, 157, - 157, 157, 205, 357, 205, 205, 205, 205, 205, 205, - 205, 205, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 340, 498, 157, 158, 318, 158, 158, 158, 158, - 158, 158, 158, 158, 318, 424, 424, 340, 158, 158, - 158, 158, 158, 235, 235, 235, 235, 235, 235, 235, - 235, 286, 286, 286, 286, 286, 286, 158, 158, 158, - 158, 158, 158, 161, 161, 161, 161, 161, 161, 161, - - 161, 161, 456, 456, 470, 161, 161, 161, 161, 161, - 237, 237, 237, 237, 237, 237, 237, 237, 310, 310, - 310, 310, 310, 310, 161, 161, 161, 161, 161, 161, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 467, 467, 486, 163, 163, 163, 163, 163, 241, 241, - 241, 241, 241, 241, 241, 241, 332, 336, 241, 485, - 470, 346, 163, 163, 163, 163, 163, 163, 164, 164, - 164, 164, 164, 164, 164, 164, 338, 346, 332, 336, - 164, 164, 164, 164, 164, 243, 243, 243, 243, 243, - 243, 243, 243, 472, 382, 471, 277, 277, 338, 164, - - 164, 164, 164, 164, 164, 189, 277, 189, 189, 189, - 189, 189, 189, 189, 189, 246, 382, 246, 246, 246, - 246, 246, 246, 246, 246, 262, 262, 262, 262, 262, - 262, 262, 262, 469, 472, 433, 189, 190, 319, 190, - 190, 190, 190, 190, 190, 190, 190, 319, 278, 278, - 433, 437, 493, 493, 262, 280, 280, 266, 278, 266, - 266, 266, 266, 266, 266, 280, 506, 506, 190, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 320, 320, 437, 201, 201, 201, 201, 201, 266, 273, - 320, 273, 273, 273, 273, 273, 273, 273, 273, 524, - - 524, 468, 201, 201, 201, 201, 201, 201, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 344, 568, - 568, 204, 204, 204, 204, 204, 274, 344, 274, 274, - 274, 274, 274, 274, 274, 274, 466, 321, 321, 449, - 204, 204, 204, 204, 204, 204, 224, 321, 224, 224, - 224, 224, 224, 224, 224, 224, 275, 383, 275, 275, - 275, 275, 275, 275, 275, 275, 279, 279, 279, 279, - 279, 279, 279, 279, 425, 448, 444, 224, 225, 383, - 225, 225, 225, 225, 225, 225, 225, 225, 283, 283, - 283, 283, 283, 283, 283, 283, 425, 400, 283, 285, - - 285, 285, 285, 285, 285, 285, 285, 400, 508, 225, - 226, 401, 226, 226, 226, 226, 226, 226, 226, 226, - 288, 401, 288, 288, 288, 288, 288, 288, 288, 288, - 307, 307, 307, 307, 307, 307, 307, 307, 429, 508, - 413, 226, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 399, 395, 390, 242, 242, 242, - 242, 242, 309, 309, 309, 309, 309, 309, 309, 309, - 329, 329, 329, 329, 329, 329, 242, 242, 242, 242, - 242, 242, 245, 245, 245, 245, 245, 245, 245, 245, - - 245, 245, 369, 386, 385, 245, 245, 245, 245, 245, - 312, 369, 312, 312, 312, 312, 312, 312, 312, 312, - 384, 323, 323, 353, 245, 245, 245, 245, 245, 245, - 264, 323, 264, 264, 264, 264, 264, 264, 264, 264, - 313, 313, 313, 313, 313, 313, 313, 313, 315, 370, - 315, 315, 315, 315, 315, 315, 315, 315, 370, 352, - 342, 264, 265, 403, 265, 265, 265, 265, 265, 265, - 265, 265, 316, 403, 316, 316, 316, 316, 316, 316, - 316, 316, 317, 417, 317, 317, 317, 317, 317, 317, - 431, 431, 417, 265, 271, 271, 271, 271, 271, 271, - - 271, 271, 271, 431, 341, 335, 271, 271, 271, 271, - 271, 322, 322, 322, 322, 322, 322, 322, 322, 363, - 363, 363, 363, 363, 363, 271, 271, 271, 271, 271, - 271, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 281, 281, 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 334, 314, 306, 284, 284, 284, 284, - 284, 326, 326, 326, 326, 326, 326, 326, 326, 427, - 305, 326, 304, 296, 295, 284, 284, 284, 284, 284, - 284, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 427, 291, 290, 287, 287, 287, 287, 287, 328, - - 328, 328, 328, 328, 328, 328, 328, 380, 380, 380, - 380, 380, 380, 287, 287, 287, 287, 287, 287, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 331, 270, - 331, 331, 331, 331, 331, 331, 331, 331, 347, 347, - 347, 347, 347, 347, 347, 347, 525, 525, 537, 301, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 525, - 351, 351, 351, 351, 351, 351, 351, 347, 354, 354, - 354, 354, 354, 354, 354, 354, 269, 268, 267, 537, - 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, - 351, 356, 356, 356, 356, 356, 356, 356, 356, 362, - - 362, 362, 362, 362, 362, 362, 362, 257, 619, 256, - 255, 303, 308, 619, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 418, 253, 252, 308, 308, 308, 308, - 308, 365, 418, 365, 365, 365, 365, 365, 365, 365, - 365, 251, 250, 249, 233, 308, 308, 308, 308, 308, - 308, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 232, 231, 230, 311, 311, 311, 311, 311, 366, 450, - 366, 366, 366, 366, 366, 366, 366, 366, 228, 450, - 227, 218, 311, 311, 311, 311, 311, 311, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 327, - - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 217, 216, 215, 327, 327, 327, 327, 327, 367, 451, - 367, 367, 367, 367, 367, 367, 367, 367, 473, 451, - 214, 212, 327, 327, 327, 327, 327, 327, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 371, 371, 211, - 210, 330, 330, 330, 330, 330, 368, 371, 368, 368, - 368, 368, 368, 368, 368, 368, 209, 208, 206, 473, - 330, 330, 330, 330, 330, 330, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 372, 372, 373, 373, 373, - 373, 373, 373, 373, 373, 372, 379, 379, 379, 379, - - 379, 379, 379, 379, 198, 197, 349, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 374, 374, 377, 377, - 377, 377, 377, 377, 377, 377, 374, 381, 377, 381, - 381, 381, 381, 381, 381, 381, 381, 350, 358, 475, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 361, - 453, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 453, 194, 193, 361, 361, 361, 361, 361, 396, 465, - 396, 396, 396, 396, 396, 396, 396, 396, 465, 186, - 475, 185, 361, 361, 361, 361, 361, 361, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 179, 176, 175, - - 364, 364, 364, 364, 364, 397, 487, 397, 397, 397, - 397, 397, 397, 397, 397, 174, 487, 173, 172, 364, - 364, 364, 364, 364, 364, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 170, 419, 419, 169, - 378, 378, 378, 378, 378, 389, 398, 419, 398, 398, - 398, 398, 398, 398, 398, 398, 481, 481, 481, 378, - 378, 378, 378, 378, 378, 389, 168, 389, 389, 402, - 402, 402, 402, 402, 402, 402, 402, 408, 408, 408, - 408, 408, 408, 408, 408, 481, 389, 391, 167, 391, - - 391, 391, 391, 391, 391, 391, 391, 409, 409, 409, - 409, 409, 409, 411, 488, 411, 411, 411, 411, 411, - 411, 411, 411, 166, 488, 165, 160, 159, 391, 392, - 152, 392, 392, 392, 392, 392, 392, 392, 392, 412, - 412, 412, 412, 412, 412, 412, 412, 414, 490, 414, - 414, 414, 414, 414, 414, 414, 414, 151, 490, 150, - 392, 393, 519, 393, 393, 393, 393, 393, 393, 393, - 393, 415, 519, 415, 415, 415, 415, 415, 415, 415, - 415, 416, 148, 416, 416, 416, 416, 416, 416, 430, - 147, 143, 393, 394, 142, 394, 394, 394, 394, 394, - - 394, 394, 394, 459, 459, 459, 459, 459, 459, 430, - 140, 430, 430, 136, 129, 125, 442, 122, 442, 442, - 442, 115, 114, 113, 394, 404, 112, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 407, 111, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 442, 106, 105, - 407, 407, 407, 407, 407, 436, 436, 436, 436, 436, - 436, 436, 436, 496, 496, 496, 496, 496, 496, 407, - 407, 407, 407, 407, 407, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 436, 103, 99, 410, 410, 410, - 410, 410, 443, 443, 443, 443, 443, 443, 443, 443, - - 544, 544, 544, 544, 544, 544, 410, 410, 410, 410, - 410, 410, 422, 422, 422, 422, 422, 422, 422, 422, - 422, 422, 438, 95, 438, 438, 438, 438, 438, 438, - 438, 438, 445, 94, 445, 445, 445, 445, 445, 445, - 445, 445, 446, 90, 446, 446, 446, 446, 446, 446, - 446, 446, 87, 438, 439, 85, 439, 439, 439, 439, - 439, 439, 439, 439, 447, 80, 447, 447, 447, 447, - 447, 447, 452, 452, 452, 452, 452, 452, 452, 452, - 79, 78, 76, 75, 73, 439, 440, 68, 440, 440, - 440, 440, 440, 440, 440, 440, 458, 458, 458, 458, - - 458, 458, 458, 458, 461, 61, 461, 461, 461, 461, - 461, 461, 461, 461, 54, 48, 47, 440, 441, 46, - 441, 441, 441, 441, 441, 441, 441, 441, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 45, 44, 43, 441, - 454, 37, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 457, 36, 457, 457, 457, 457, 457, 457, 457, - 457, 457, 35, 33, 29, 457, 457, 457, 457, 457, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 23, - 17, 15, 14, 13, 457, 457, 457, 457, 457, 457, - - 460, 460, 460, 460, 460, 460, 460, 460, 0, 0, - 0, 0, 460, 460, 460, 460, 460, 474, 0, 0, - 0, 474, 0, 474, 474, 0, 0, 474, 0, 0, - 0, 460, 460, 460, 460, 460, 460, 0, 476, 474, - 474, 474, 476, 0, 476, 476, 0, 0, 476, 480, - 480, 480, 480, 480, 480, 480, 480, 0, 0, 0, - 476, 476, 476, 477, 0, 477, 477, 477, 477, 477, - 477, 477, 477, 0, 0, 0, 0, 482, 480, 482, - 482, 482, 482, 482, 482, 482, 482, 501, 501, 501, - 501, 501, 501, 501, 477, 478, 0, 478, 478, 478, - - 478, 478, 478, 478, 478, 483, 0, 483, 483, 483, - 483, 483, 483, 483, 483, 484, 0, 484, 484, 484, - 484, 484, 484, 484, 484, 0, 478, 479, 0, 479, - 479, 479, 479, 479, 479, 479, 479, 489, 489, 489, - 489, 489, 489, 489, 489, 495, 495, 495, 495, 495, - 495, 495, 495, 0, 0, 0, 0, 0, 479, 491, - 0, 491, 491, 491, 491, 491, 491, 491, 491, 491, - 494, 0, 494, 494, 494, 494, 494, 494, 494, 494, - 0, 0, 0, 0, 494, 494, 494, 494, 494, 497, - 0, 497, 497, 497, 497, 497, 497, 497, 497, 0, - - 0, 0, 0, 494, 494, 494, 494, 494, 494, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 507, 507, 507, - 507, 507, 507, 507, 507, 0, 511, 0, 511, 511, - 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, - 512, 512, 0, 0, 0, 0, 507, 509, 0, 509, - 509, 509, 509, 509, 509, 509, 509, 511, 514, 0, - 514, 514, 514, 514, 514, 514, 514, 514, 515, 0, - 515, 515, 515, 515, 515, 515, 515, 515, 509, 510, - 0, 510, 510, 510, 510, 510, 510, 510, 510, 516, - - 0, 516, 516, 516, 516, 516, 516, 522, 0, 522, - 522, 522, 522, 522, 522, 522, 522, 0, 0, 0, - 510, 526, 0, 526, 526, 526, 526, 526, 526, 526, - 526, 529, 529, 529, 529, 529, 529, 529, 529, 530, - 530, 530, 530, 530, 530, 530, 530, 0, 0, 0, - 0, 0, 526, 527, 0, 527, 527, 527, 527, 527, - 527, 527, 527, 531, 531, 531, 531, 531, 531, 531, - 531, 536, 536, 536, 536, 536, 536, 536, 536, 0, - 0, 0, 0, 0, 527, 528, 0, 528, 528, 528, - 528, 528, 528, 528, 528, 0, 0, 0, 0, 540, - - 536, 540, 540, 540, 540, 540, 540, 542, 542, 542, - 542, 542, 542, 542, 542, 0, 528, 538, 0, 538, - 538, 538, 538, 538, 538, 538, 538, 0, 0, 0, - 540, 543, 543, 543, 543, 543, 543, 543, 543, 548, - 548, 548, 548, 548, 548, 548, 548, 0, 538, 539, - 0, 539, 539, 539, 539, 539, 539, 539, 539, 549, - 549, 549, 549, 549, 549, 549, 549, 0, 548, 550, - 550, 550, 550, 550, 550, 550, 550, 0, 0, 0, - 539, 553, 553, 553, 553, 553, 553, 0, 549, 552, - 552, 552, 552, 552, 552, 552, 552, 0, 550, 0, - + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 359, 228, 546, 34, 34, 34, 34, 34, 125, + 125, 125, 125, 125, 125, 125, 125, 228, 126, 112, + 301, 537, 126, 126, 301, 227, 34, 34, 34, 34, + 34, 34, 39, 39, 39, 229, 39, 240, 39, 39, + 126, 229, 39, 242, 242, 263, 240, 112, 112, 227, + 263, 112, 359, 242, 39, 39, 39, 43, 112, 244, + + 244, 112, 126, 270, 253, 272, 227, 43, 270, 244, + 43, 43, 43, 43, 43, 43, 43, 43, 128, 408, + 128, 408, 128, 361, 128, 128, 253, 310, 128, 135, + 135, 135, 135, 135, 135, 135, 135, 310, 361, 272, + 128, 128, 128, 204, 204, 204, 204, 204, 204, 204, + 204, 43, 59, 191, 191, 191, 191, 191, 191, 191, + 191, 535, 59, 531, 300, 59, 59, 59, 59, 59, + 59, 59, 59, 78, 458, 78, 78, 78, 139, 78, + 78, 139, 139, 78, 364, 191, 300, 311, 139, 250, + 250, 250, 250, 250, 250, 78, 78, 78, 281, 356, + + 285, 139, 306, 311, 286, 286, 155, 281, 155, 285, + 155, 306, 155, 155, 286, 356, 155, 364, 458, 78, + 94, 94, 94, 94, 94, 94, 94, 94, 155, 155, + 155, 527, 94, 94, 94, 94, 94, 195, 515, 195, + 195, 195, 195, 195, 195, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 94, 94, 94, 94, 94, 94, + 102, 102, 102, 102, 102, 102, 102, 102, 312, 287, + 287, 195, 102, 102, 102, 102, 102, 312, 156, 287, + 289, 289, 156, 514, 330, 376, 376, 362, 156, 500, + 289, 304, 305, 330, 102, 102, 102, 102, 102, 102, + + 156, 156, 157, 362, 157, 157, 157, 157, 157, 157, + 157, 157, 187, 304, 305, 456, 187, 407, 407, 426, + 426, 371, 187, 206, 206, 206, 206, 206, 206, 206, + 206, 371, 440, 440, 187, 187, 157, 158, 498, 158, + 158, 158, 158, 158, 158, 158, 158, 209, 346, 209, + 209, 209, 209, 209, 209, 209, 209, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 441, 441, 407, 456, + 346, 158, 159, 497, 159, 159, 159, 159, 159, 159, + 159, 159, 241, 241, 241, 241, 241, 241, 241, 241, + 243, 243, 243, 243, 243, 243, 243, 243, 247, 247, + + 247, 247, 247, 247, 247, 247, 159, 160, 247, 160, + 160, 160, 160, 160, 160, 160, 160, 444, 444, 457, + 496, 160, 160, 160, 160, 160, 249, 249, 249, 249, + 249, 249, 249, 249, 457, 271, 271, 271, 271, 271, + 271, 271, 271, 160, 160, 160, 160, 160, 160, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 480, 480, + 352, 163, 163, 163, 163, 163, 252, 271, 252, 252, + 252, 252, 252, 252, 252, 252, 295, 295, 295, 295, + 295, 295, 352, 163, 163, 163, 163, 163, 163, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 331, + + 495, 354, 165, 165, 165, 165, 165, 275, 331, 275, + 275, 275, 275, 275, 275, 288, 288, 288, 288, 288, + 288, 288, 288, 354, 165, 165, 165, 165, 165, 165, + 166, 166, 166, 166, 166, 166, 166, 166, 332, 332, + 490, 275, 166, 166, 166, 166, 166, 282, 332, 282, + 282, 282, 282, 282, 282, 282, 282, 322, 322, 322, + 322, 322, 322, 473, 166, 166, 166, 166, 166, 166, + 193, 373, 193, 193, 193, 193, 193, 193, 193, 193, + 283, 373, 283, 283, 283, 283, 283, 283, 283, 283, + 284, 360, 284, 284, 284, 284, 284, 284, 284, 284, + + 360, 402, 403, 461, 193, 194, 472, 194, 194, 194, + 194, 194, 194, 194, 194, 292, 292, 292, 292, 292, + 292, 292, 292, 402, 403, 292, 294, 294, 294, 294, + 294, 294, 294, 294, 491, 491, 468, 461, 453, 194, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 385, 448, 445, 205, 205, 205, 205, 205, 297, + 385, 297, 297, 297, 297, 297, 297, 297, 297, 341, + 341, 341, 341, 341, 341, 445, 205, 205, 205, 205, + 205, 205, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 522, 522, 449, 208, 208, 208, 208, 208, + + 319, 319, 319, 319, 319, 319, 319, 319, 321, 321, + 321, 321, 321, 321, 321, 321, 449, 208, 208, 208, + 208, 208, 208, 230, 420, 230, 230, 230, 230, 230, + 230, 230, 230, 324, 420, 324, 324, 324, 324, 324, + 324, 324, 324, 325, 325, 325, 325, 325, 325, 325, + 325, 379, 379, 379, 379, 379, 379, 230, 231, 421, + 231, 231, 231, 231, 231, 231, 231, 231, 327, 421, + 327, 327, 327, 327, 327, 327, 327, 327, 328, 386, + 328, 328, 328, 328, 328, 328, 328, 328, 386, 539, + 539, 447, 231, 232, 423, 232, 232, 232, 232, 232, + + 232, 232, 232, 329, 423, 329, 329, 329, 329, 329, + 329, 333, 333, 334, 334, 334, 334, 334, 334, 334, + 334, 333, 557, 557, 541, 459, 446, 232, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 335, 335, 451, 248, 248, 248, 248, 248, 541, 433, + 335, 338, 338, 338, 338, 338, 338, 338, 338, 459, + 492, 338, 606, 606, 451, 248, 248, 248, 248, 248, + 248, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 419, 492, 494, 251, 251, 251, 251, 251, 340, + + 340, 340, 340, 340, 340, 340, 340, 370, 370, 370, + 370, 370, 370, 370, 370, 494, 251, 251, 251, 251, + 251, 251, 273, 474, 273, 273, 273, 273, 273, 273, + 273, 273, 343, 474, 343, 343, 343, 343, 343, 343, + 343, 343, 363, 363, 363, 363, 363, 363, 363, 363, + 396, 396, 396, 396, 396, 396, 273, 274, 501, 274, + 274, 274, 274, 274, 274, 274, 274, 429, 429, 429, + 429, 429, 429, 415, 363, 410, 367, 367, 367, 367, + 367, 367, 367, 372, 372, 372, 372, 372, 372, 372, + 372, 274, 280, 280, 280, 280, 280, 280, 280, 280, + + 280, 406, 501, 405, 280, 280, 280, 280, 280, 367, + 378, 378, 378, 378, 378, 378, 378, 378, 389, 389, + 389, 389, 389, 389, 389, 389, 280, 280, 280, 280, + 280, 280, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 293, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 437, 454, 404, 293, 293, 293, + 293, 293, 381, 437, 381, 381, 381, 381, 381, 381, + 381, 381, 401, 400, 399, 454, 398, 454, 454, 293, + 293, 293, 293, 293, 293, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 438, 499, 532, 296, 296, + + 296, 296, 296, 382, 438, 382, 382, 382, 382, 382, + 382, 382, 382, 483, 483, 483, 483, 483, 483, 532, + 296, 296, 296, 296, 296, 296, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 383, 475, 383, 383, 383, + 383, 383, 383, 383, 383, 384, 475, 384, 384, 384, + 384, 384, 384, 384, 384, 499, 369, 368, 358, 313, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 387, + 387, 388, 388, 390, 390, 357, 351, 575, 502, 387, + 504, 388, 477, 390, 395, 395, 395, 395, 395, 395, + 395, 395, 477, 314, 315, 315, 315, 315, 315, 315, + + 315, 315, 315, 393, 393, 393, 393, 393, 393, 393, + 393, 575, 397, 393, 397, 397, 397, 397, 397, 397, + 397, 397, 502, 350, 504, 349, 348, 315, 320, 345, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 489, + 344, 534, 320, 320, 320, 320, 320, 416, 489, 416, + 416, 416, 416, 416, 416, 416, 416, 525, 525, 525, + 525, 525, 525, 534, 320, 320, 320, 320, 320, 320, + 323, 323, 323, 323, 323, 323, 323, 323, 323, 326, + 318, 558, 323, 323, 323, 323, 323, 417, 317, 417, + 417, 417, 417, 417, 417, 417, 417, 316, 466, 308, + + 466, 466, 466, 558, 323, 323, 323, 323, 323, 323, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 466, 560, 571, 339, 339, 339, 339, 339, + 418, 516, 418, 418, 418, 418, 418, 418, 418, 418, + 307, 516, 409, 303, 302, 560, 571, 339, 339, 339, + 339, 339, 339, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 409, 299, 409, 409, 342, 342, 342, 342, + 342, 422, 422, 422, 422, 422, 422, 422, 422, 657, + 510, 510, 510, 298, 657, 279, 409, 278, 342, 342, + + 342, 342, 342, 342, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 428, 428, 428, 428, 428, 428, 428, + 428, 431, 510, 431, 431, 431, 431, 431, 431, 431, + 431, 582, 582, 582, 582, 582, 582, 365, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 432, 432, 432, + 432, 432, 432, 432, 432, 434, 517, 434, 434, 434, + 434, 434, 434, 434, 434, 277, 517, 276, 266, 265, + 264, 366, 374, 262, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 377, 519, 377, 377, 377, 377, 377, + 377, 377, 377, 377, 519, 261, 260, 377, 377, 377, + + 377, 377, 435, 259, 435, 435, 435, 435, 435, 435, + 435, 435, 530, 530, 530, 530, 530, 530, 530, 377, + 377, 377, 377, 377, 377, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 258, 257, 256, 380, 380, 380, + 380, 380, 436, 255, 436, 436, 436, 436, 436, 436, + 467, 467, 467, 467, 467, 467, 467, 467, 239, 380, + 380, 380, 380, 380, 380, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 439, 439, 455, 455, + 394, 394, 394, 394, 394, 238, 439, 237, 561, 561, + + 552, 455, 460, 460, 460, 460, 460, 460, 460, 460, + 552, 561, 394, 394, 394, 394, 394, 394, 411, 236, + 411, 411, 411, 411, 411, 411, 411, 411, 234, 233, + 224, 223, 222, 469, 460, 469, 469, 469, 469, 469, + 469, 469, 469, 471, 221, 471, 471, 471, 471, 471, + 471, 220, 411, 412, 218, 412, 412, 412, 412, 412, + 412, 412, 412, 470, 217, 470, 470, 470, 470, 470, + 470, 470, 470, 476, 476, 476, 476, 476, 476, 476, + 476, 216, 215, 214, 213, 210, 202, 412, 413, 201, + 413, 413, 413, 413, 413, 413, 413, 413, 482, 482, + + 482, 482, 482, 482, 482, 482, 485, 198, 485, 485, + 485, 485, 485, 485, 485, 485, 197, 190, 189, 183, + 180, 179, 413, 414, 178, 414, 414, 414, 414, 414, + 414, 414, 414, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 487, 487, 487, 487, 487, 487, 487, 487, + 487, 177, 176, 174, 173, 172, 171, 414, 424, 170, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 427, + 169, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 168, 167, 162, 427, 427, 427, 427, 427, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 509, 509, 509, + + 509, 509, 509, 509, 509, 427, 427, 427, 427, 427, + 427, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 161, 154, 153, 430, 430, 430, 430, 430, 511, 509, + 511, 511, 511, 511, 511, 511, 511, 511, 152, 150, + 149, 145, 144, 142, 138, 430, 430, 430, 430, 430, + 430, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 462, 131, 462, 462, 462, 462, 462, 462, 462, + 462, 512, 127, 512, 512, 512, 512, 512, 512, 512, + 512, 124, 117, 116, 503, 115, 114, 113, 503, 108, + 503, 503, 107, 105, 503, 462, 463, 104, 463, 463, + + 463, 463, 463, 463, 463, 463, 503, 503, 503, 513, + 100, 513, 513, 513, 513, 513, 513, 513, 513, 505, + 96, 95, 91, 505, 88, 505, 505, 86, 81, 505, + 463, 464, 80, 464, 464, 464, 464, 464, 464, 464, + 464, 505, 505, 505, 518, 518, 518, 518, 518, 518, + 518, 518, 524, 524, 524, 524, 524, 524, 524, 524, + 79, 77, 76, 74, 69, 464, 465, 62, 465, 465, + 465, 465, 465, 465, 465, 465, 526, 55, 526, 526, + 526, 526, 526, 526, 526, 526, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 49, 48, 47, 46, 45, + + 465, 478, 44, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 481, 38, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 37, 36, 35, 481, 481, 481, 481, + 481, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 540, 540, 540, 540, 540, 540, 540, 540, 481, 481, + 481, 481, 481, 481, 484, 484, 484, 484, 484, 484, + 484, 484, 33, 29, 23, 17, 484, 484, 484, 484, + 484, 544, 540, 544, 544, 544, 544, 544, 544, 545, + 545, 545, 545, 545, 545, 545, 545, 15, 484, 484, + 484, 484, 484, 484, 506, 14, 506, 506, 506, 506, + + 506, 506, 506, 506, 547, 544, 547, 547, 547, 547, + 547, 547, 547, 547, 548, 13, 548, 548, 548, 548, + 548, 548, 548, 548, 0, 0, 0, 0, 506, 507, + 0, 507, 507, 507, 507, 507, 507, 507, 507, 549, + 0, 549, 549, 549, 549, 549, 549, 555, 0, 555, + 555, 555, 555, 555, 555, 555, 555, 0, 0, 0, + 0, 0, 0, 507, 508, 0, 508, 508, 508, 508, + 508, 508, 508, 508, 565, 565, 565, 565, 565, 565, + 565, 565, 566, 566, 566, 566, 566, 566, 566, 566, + 567, 567, 567, 567, 567, 567, 567, 567, 508, 520, + + 0, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 523, 0, 523, 523, 523, 523, 523, 523, 523, 523, + 0, 0, 0, 0, 523, 523, 523, 523, 523, 0, + 574, 574, 574, 574, 574, 574, 574, 574, 578, 0, + 578, 578, 578, 578, 578, 578, 523, 523, 523, 523, + 523, 523, 542, 0, 542, 542, 542, 542, 542, 542, + 542, 542, 574, 580, 580, 580, 580, 580, 580, 580, + 580, 0, 578, 581, 581, 581, 581, 581, 581, 581, + 581, 0, 0, 0, 0, 0, 542, 543, 0, 543, + 543, 543, 543, 543, 543, 543, 543, 0, 0, 0, + + 586, 586, 586, 586, 586, 586, 586, 586, 587, 587, + 587, 587, 587, 587, 587, 587, 0, 0, 0, 0, + 0, 543, 562, 0, 562, 562, 562, 562, 562, 562, + 562, 562, 586, 0, 0, 0, 0, 0, 0, 0, + 587, 588, 588, 588, 588, 588, 588, 588, 588, 0, + 591, 591, 591, 591, 591, 591, 562, 563, 0, 563, + 563, 563, 563, 563, 563, 563, 563, 0, 0, 0, + 0, 0, 0, 588, 590, 590, 590, 590, 590, 590, + 590, 590, 591, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 0, 564, 564, 564, 564, 564, 564, + + 564, 564, 0, 0, 0, 0, 590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 553, 0, 0, 0, 0, 0, 0, 0, 552, 555, - 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 556, 556, 556, 556, 556, 556, 556, - 556, 556, 556, 556, 556, 556, 556, 557, 557, 557, - 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, - 557, 558, 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 559, 0, 0, 0, 559, - 0, 559, 559, 559, 0, 0, 559, 559, 559, 560, - 560, 0, 560, 560, 560, 560, 560, 560, 560, 560, - - 560, 560, 560, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 562, 0, 0, - 0, 562, 0, 562, 562, 562, 562, 0, 562, 562, - 562, 563, 0, 0, 0, 563, 0, 563, 563, 563, - 0, 0, 563, 563, 563, 564, 0, 0, 564, 564, - 564, 564, 564, 564, 0, 0, 564, 564, 564, 565, - 565, 0, 0, 0, 565, 566, 0, 0, 566, 566, - 566, 566, 566, 566, 0, 0, 566, 566, 566, 567, - 0, 0, 567, 567, 567, 567, 567, 567, 0, 567, - 0, 567, 567, 569, 0, 0, 569, 0, 569, 569, - - 569, 569, 569, 0, 569, 569, 569, 570, 570, 570, - 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, - 570, 571, 571, 0, 571, 0, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 572, 572, 0, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, - 573, 573, 573, 574, 574, 0, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 575, 0, 0, - 0, 575, 0, 575, 575, 575, 0, 0, 575, 575, - 575, 576, 0, 0, 576, 576, 576, 576, 576, 576, - - 0, 0, 576, 576, 576, 577, 577, 0, 0, 0, - 577, 578, 578, 578, 0, 0, 0, 578, 579, 0, - 0, 579, 579, 579, 579, 579, 579, 0, 0, 579, - 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, - 580, 580, 580, 580, 580, 580, 581, 581, 0, 0, - 0, 581, 582, 582, 582, 0, 0, 0, 582, 583, - 583, 0, 0, 0, 583, 584, 584, 0, 0, 0, - 584, 585, 585, 0, 0, 0, 585, 586, 586, 586, - 0, 0, 0, 586, 587, 587, 0, 0, 0, 587, - 588, 588, 0, 0, 0, 588, 589, 589, 0, 0, - - 0, 589, 590, 590, 590, 0, 0, 0, 590, 591, - 591, 591, 591, 0, 0, 0, 591, 592, 592, 0, - 0, 0, 592, 593, 593, 0, 0, 0, 593, 594, - 594, 0, 0, 0, 594, 595, 595, 595, 0, 0, - 0, 595, 596, 596, 596, 596, 0, 0, 0, 596, - 597, 597, 0, 0, 0, 597, 598, 598, 0, 0, - 0, 598, 599, 599, 599, 0, 0, 0, 599, 600, - 600, 600, 600, 0, 0, 0, 600, 601, 601, 0, - 0, 0, 601, 602, 0, 602, 602, 0, 0, 0, - 602, 603, 603, 603, 0, 0, 0, 603, 604, 604, - - 604, 604, 0, 0, 0, 604, 605, 605, 0, 0, - 0, 605, 606, 0, 606, 606, 0, 0, 0, 606, - 607, 607, 607, 0, 0, 0, 607, 608, 608, 608, - 0, 0, 0, 0, 608, 609, 0, 0, 609, 609, - 0, 609, 609, 609, 0, 0, 609, 609, 609, 610, - 0, 0, 610, 610, 0, 610, 610, 610, 0, 0, - 610, 610, 610, 611, 611, 0, 0, 0, 611, 612, - 0, 612, 612, 0, 0, 0, 612, 613, 613, 0, - 0, 0, 0, 613, 614, 614, 614, 614, 614, 614, - 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, - - 0, 0, 0, 615, 616, 0, 616, 616, 0, 0, - 0, 616, 617, 617, 0, 0, 0, 617, 618, 0, - 618, 0, 0, 0, 0, 618, 620, 620, 620, 620, - 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - - 554, 554, 554 + 0, 0, 0, 0, 0, 0, 564, 576, 0, 576, + 576, 576, 576, 576, 576, 576, 576, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 576, 577, 0, 577, 577, 577, 577, 577, 577, + 577, 577, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 577, 593, 593, 593, + + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 593, 594, 594, 594, 594, 594, 594, 594, 594, 594, + 594, 594, 594, 594, 594, 595, 595, 595, 595, 595, + 595, 595, 595, 595, 595, 595, 595, 595, 595, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 597, 0, 0, 0, 597, 0, 597, + 597, 597, 0, 0, 597, 597, 597, 598, 598, 0, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 600, 0, 0, 0, 600, + + 0, 600, 600, 600, 600, 0, 600, 600, 600, 601, + 0, 0, 0, 601, 0, 601, 601, 601, 0, 0, + 601, 601, 601, 602, 0, 0, 602, 602, 602, 602, + 602, 602, 0, 0, 602, 602, 602, 603, 603, 0, + 0, 0, 603, 604, 0, 0, 604, 604, 604, 604, + 604, 604, 0, 0, 604, 604, 604, 605, 0, 0, + 605, 605, 605, 605, 605, 605, 0, 605, 0, 605, + 605, 607, 0, 0, 607, 0, 607, 607, 607, 607, + 607, 0, 607, 607, 607, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, 608, 609, + + 609, 0, 609, 0, 609, 609, 609, 609, 609, 609, + 609, 609, 609, 610, 610, 0, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 611, 612, 612, 0, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 613, 0, 0, 0, 613, + 0, 613, 613, 613, 0, 0, 613, 613, 613, 614, + 0, 0, 614, 614, 614, 614, 614, 614, 0, 0, + 614, 614, 614, 615, 615, 0, 0, 0, 615, 616, + 616, 616, 0, 0, 0, 616, 617, 0, 0, 617, + + 617, 617, 617, 617, 617, 0, 0, 617, 617, 617, + 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, + 618, 618, 618, 618, 619, 619, 0, 0, 0, 619, + 620, 620, 620, 0, 0, 0, 620, 621, 621, 0, + 0, 0, 621, 622, 622, 0, 0, 0, 622, 623, + 623, 0, 0, 0, 623, 624, 624, 624, 0, 0, + 0, 624, 625, 625, 0, 0, 0, 625, 626, 626, + 0, 0, 0, 626, 627, 627, 0, 0, 0, 627, + 628, 628, 628, 0, 0, 0, 628, 629, 629, 629, + 629, 0, 0, 0, 629, 630, 630, 0, 0, 0, + + 630, 631, 631, 0, 0, 0, 631, 632, 632, 0, + 0, 0, 632, 633, 633, 633, 0, 0, 0, 633, + 634, 634, 634, 634, 0, 0, 0, 634, 635, 635, + 0, 0, 0, 635, 636, 636, 0, 0, 0, 636, + 637, 637, 637, 0, 0, 0, 637, 638, 638, 638, + 638, 0, 0, 0, 638, 639, 639, 0, 0, 0, + 639, 640, 0, 640, 640, 0, 0, 0, 640, 641, + 641, 641, 0, 0, 0, 641, 642, 642, 642, 642, + 0, 0, 0, 642, 643, 643, 0, 0, 0, 643, + 644, 0, 644, 644, 0, 0, 0, 644, 645, 645, + + 645, 0, 0, 0, 645, 646, 646, 646, 0, 0, + 0, 0, 646, 647, 0, 0, 647, 647, 0, 647, + 647, 647, 0, 0, 647, 647, 647, 648, 0, 0, + 648, 648, 0, 648, 648, 648, 0, 0, 648, 648, + 648, 649, 649, 0, 0, 0, 649, 650, 0, 650, + 650, 0, 0, 0, 650, 651, 651, 0, 0, 0, + 0, 651, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 653, 653, 0, 0, + 0, 653, 654, 0, 654, 654, 0, 0, 0, 654, + 655, 655, 0, 0, 0, 655, 656, 0, 656, 0, + + 0, 0, 0, 656, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592 } ; static yy_state_type yy_last_accepting_state; @@ -1471,7 +1500,7 @@ extern void yyerror __P((const char *)); #define INSTR 5 -#line 1475 "lex.yy.c" +#line 1504 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1627,7 +1656,7 @@ YY_DECL #line 127 "toke.l" -#line 1631 "lex.yy.c" +#line 1660 "lex.yy.c" if ( yy_init ) { @@ -1679,13 +1708,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 555 ) + if ( yy_current_state >= 593 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3541 ); + while ( yy_base[yy_current_state] != 3619 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2005,6 +2034,38 @@ YY_RULE_SETUP case 27: YY_RULE_SETUP #line 341 "toke.l" +{ + LEXTRACE("LOG_OUTPUT "); + return(LOG_OUTPUT); + } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 346 "toke.l" +{ + LEXTRACE("NOLOG_OUTPUT "); + return(NOLOG_OUTPUT); + } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 351 "toke.l" +{ + LEXTRACE("LOG_INPUT "); + return(LOG_INPUT); + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 356 "toke.l" +{ + LEXTRACE("NOLOG_INPUT "); + return(NOLOG_INPUT); + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 361 "toke.l" { /* netgroup */ if (!fill(yytext, yyleng)) @@ -2013,9 +2074,9 @@ YY_RULE_SETUP return(NETGROUP); } YY_BREAK -case 28: +case 32: YY_RULE_SETUP -#line 349 "toke.l" +#line 369 "toke.l" { /* UN*X group */ if (!fill(yytext, yyleng)) @@ -2024,9 +2085,9 @@ YY_RULE_SETUP return(USERGROUP); } YY_BREAK -case 29: +case 33: YY_RULE_SETUP -#line 357 "toke.l" +#line 377 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); @@ -2034,9 +2095,9 @@ YY_RULE_SETUP return(NTWKADDR); } YY_BREAK -case 30: +case 34: YY_RULE_SETUP -#line 364 "toke.l" +#line 384 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); @@ -2044,9 +2105,9 @@ YY_RULE_SETUP return(NTWKADDR); } YY_BREAK -case 31: +case 35: YY_RULE_SETUP -#line 371 "toke.l" +#line 391 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); @@ -2058,9 +2119,9 @@ YY_RULE_SETUP return(NTWKADDR); } YY_BREAK -case 32: +case 36: YY_RULE_SETUP -#line 382 "toke.l" +#line 402 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); @@ -2072,9 +2133,9 @@ YY_RULE_SETUP return(NTWKADDR); } YY_BREAK -case 33: +case 37: YY_RULE_SETUP -#line 393 "toke.l" +#line 413 "toke.l" { if (strcmp(yytext, "ALL") == 0) { LEXTRACE("ALL "); @@ -2097,9 +2158,9 @@ YY_RULE_SETUP return(ALIAS); } YY_BREAK -case 34: +case 38: YY_RULE_SETUP -#line 415 "toke.l" +#line 435 "toke.l" { /* no command args allowed for Defaults!/path */ if (!fill_cmnd(yytext, yyleng)) @@ -2108,9 +2169,9 @@ YY_RULE_SETUP return(COMMAND); } YY_BREAK -case 35: +case 39: YY_RULE_SETUP -#line 423 "toke.l" +#line 443 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2118,9 +2179,9 @@ YY_RULE_SETUP yyterminate(); } /* sudo -e */ YY_BREAK -case 36: +case 40: YY_RULE_SETUP -#line 430 "toke.l" +#line 450 "toke.l" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -2136,9 +2197,9 @@ YY_RULE_SETUP } } /* a pathname */ YY_BREAK -case 37: +case 41: YY_RULE_SETUP -#line 445 "toke.l" +#line 465 "toke.l" { /* a quoted user/group name */ if (!fill(yytext + 1, yyleng - 2)) @@ -2156,9 +2217,9 @@ YY_RULE_SETUP } } YY_BREAK -case 38: +case 42: YY_RULE_SETUP -#line 462 "toke.l" +#line 482 "toke.l" { /* a word */ if (!fill(yytext, yyleng)) @@ -2167,57 +2228,57 @@ YY_RULE_SETUP return(WORD); } YY_BREAK -case 39: +case 43: YY_RULE_SETUP -#line 470 "toke.l" +#line 490 "toke.l" { LEXTRACE("( "); return ('('); } YY_BREAK -case 40: +case 44: YY_RULE_SETUP -#line 475 "toke.l" +#line 495 "toke.l" { LEXTRACE(") "); return(')'); } YY_BREAK -case 41: +case 45: YY_RULE_SETUP -#line 480 "toke.l" +#line 500 "toke.l" { LEXTRACE(", "); return(','); } /* return ',' */ YY_BREAK -case 42: +case 46: YY_RULE_SETUP -#line 485 "toke.l" +#line 505 "toke.l" { LEXTRACE("= "); return('='); } /* return '=' */ YY_BREAK -case 43: +case 47: YY_RULE_SETUP -#line 490 "toke.l" +#line 510 "toke.l" { LEXTRACE(": "); return(':'); } /* return ':' */ YY_BREAK -case 44: +case 48: YY_RULE_SETUP -#line 495 "toke.l" +#line 515 "toke.l" { if (yyleng % 2 == 1) return('!'); /* return '!' */ } YY_BREAK -case 45: +case 49: YY_RULE_SETUP -#line 500 "toke.l" +#line 520 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2225,25 +2286,25 @@ YY_RULE_SETUP return(COMMENT); } /* return newline */ YY_BREAK -case 46: +case 50: YY_RULE_SETUP -#line 507 "toke.l" +#line 527 "toke.l" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK -case 47: +case 51: YY_RULE_SETUP -#line 511 "toke.l" +#line 531 "toke.l" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; LEXTRACE("\n\t"); } /* throw away EOL after \ */ YY_BREAK -case 48: +case 52: YY_RULE_SETUP -#line 517 "toke.l" +#line 537 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2251,9 +2312,9 @@ YY_RULE_SETUP return(COMMENT); } /* comment, not uid/gid */ YY_BREAK -case 49: +case 53: YY_RULE_SETUP -#line 524 "toke.l" +#line 544 "toke.l" { LEXTRACE("ERROR "); return(ERROR); @@ -2265,7 +2326,7 @@ case YY_STATE_EOF(GOTCMND): case YY_STATE_EOF(STARTDEFS): case YY_STATE_EOF(INDEFS): case YY_STATE_EOF(INSTR): -#line 529 "toke.l" +#line 549 "toke.l" { if (YY_START != INITIAL) { BEGIN INITIAL; @@ -2276,12 +2337,12 @@ case YY_STATE_EOF(INSTR): yyterminate(); } YY_BREAK -case 50: +case 54: YY_RULE_SETUP -#line 539 "toke.l" +#line 559 "toke.l" ECHO; YY_BREAK -#line 2285 "lex.yy.c" +#line 2346 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -2572,7 +2633,7 @@ static yy_state_type yy_get_previous_state() while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 555 ) + if ( yy_current_state >= 593 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2607,11 +2668,11 @@ yy_state_type yy_current_state; while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 555 ) + if ( yy_current_state >= 593 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 554); + yy_is_jam = (yy_current_state == 592); return yy_is_jam ? 0 : yy_current_state; } @@ -2662,6 +2723,7 @@ register char *yy_bp; #endif /* ifndef YY_NO_UNPUT */ +#ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput() #else @@ -2734,6 +2796,7 @@ static int input() return c; } +#endif /* ifndef YY_NO_INPUT */ #ifdef YY_USE_PROTOS @@ -3170,7 +3233,7 @@ int main() return 0; } #endif -#line 539 "toke.l" +#line 559 "toke.l" static unsigned char hexchar(s) diff --git a/toke.l b/toke.l index ce1fd4c..263693e 100644 --- a/toke.l +++ b/toke.l @@ -338,6 +338,26 @@ NOSETENV[[:blank:]]*: { return(NOSETENV); } +LOG_OUTPUT[[:blank:]]*: { + LEXTRACE("LOG_OUTPUT "); + return(LOG_OUTPUT); + } + +NOLOG_OUTPUT[[:blank:]]*: { + LEXTRACE("NOLOG_OUTPUT "); + return(NOLOG_OUTPUT); + } + +LOG_INPUT[[:blank:]]*: { + LEXTRACE("LOG_INPUT "); + return(LOG_INPUT); + } + +NOLOG_INPUT[[:blank:]]*: { + LEXTRACE("NOLOG_INPUT "); + return(NOLOG_INPUT); + } + \+{WORD} { /* netgroup */ if (!fill(yytext, yyleng))