diff --git a/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt b/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt
index cbe8204501..63792c007b 100644
--- a/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt
+++ b/pkgs/drracket-pkgs/drracket/pkg/gui/by-installed.rkt
@@ -20,7 +20,6 @@
[else
(case a
[(installation) #t]
- [(user) (eq? b 'shared)]
[else #f])]))
(define (ipkg a b)
diff --git a/pkgs/drracket-pkgs/drracket/pkg/gui/by-source.rkt b/pkgs/drracket-pkgs/drracket/pkg/gui/by-source.rkt
index bb413f0214..8950beb1f6 100644
--- a/pkgs/drracket-pkgs/drracket/pkg/gui/by-source.rkt
+++ b/pkgs/drracket-pkgs/drracket/pkg/gui/by-source.rkt
@@ -38,7 +38,6 @@
(define sc-install-pkg-scope-label (string-constant install-pkg-scope-label))
(define sc-install-pkg-installation (string-constant install-pkg-installation))
(define sc-install-pkg-user (string-constant install-pkg-user))
-(define sc-install-pkg-shared (string-constant install-pkg-shared))
(define sc-install-pkg-set-as-default (string-constant install-pkg-set-as-default))
(define sc-install-pkg-scope-is (string-constant install-pkg-scope-is))
@@ -184,13 +183,11 @@
[callback (λ (x y) (adjust-all))]
[choices (list sc-install-pkg-default
sc-install-pkg-installation
- sc-install-pkg-user
- sc-install-pkg-shared)]))
+ sc-install-pkg-user)]))
(define/private (selected-scope) (case (send scope-choice get-selection)
[(0) (default-pkg-scope)]
[(1) 'installation]
- [(2) 'user]
- [(3) 'shared]))
+ [(2) 'user]))
(define scope-default-button (new button%
[label sc-install-pkg-set-as-default]
[font small-control-font]
@@ -331,14 +328,12 @@
(send scope-msg set-label (format sc-install-pkg-scope-is
(case (selected-scope)
[(installation) sc-install-pkg-installation]
- [(user) sc-install-pkg-user]
- [(shared) sc-install-pkg-shared])))
+ [(user) sc-install-pkg-user])))
(define is-default? (let ([v (send scope-choice get-selection)])
(or (zero? v)
(= v (case (default-pkg-scope)
[(installation) 1]
- [(user) 2]
- [(shared) 3])))))
+ [(user) 2])))))
(define deleted? (not (member scope-default-button (send scope-panel get-children))))
(unless (equal? is-default? deleted?)
(if is-default?
diff --git a/pkgs/drracket-pkgs/drracket/pkg/gui/common.rkt b/pkgs/drracket-pkgs/drracket/pkg/gui/common.rkt
index ca5cce6cde..d2772d51cd 100644
--- a/pkgs/drracket-pkgs/drracket/pkg/gui/common.rkt
+++ b/pkgs/drracket-pkgs/drracket/pkg/gui/common.rkt
@@ -40,4 +40,4 @@
(if (equal? d main)
'installation
d))))
- '(user shared)))
+ '(user)))
diff --git a/pkgs/racket-pkgs/racket-doc/pkg/scribblings/lib.scrbl b/pkgs/racket-pkgs/racket-doc/pkg/scribblings/lib.scrbl
index c421993d2f..efc00a88ad 100644
--- a/pkgs/racket-pkgs/racket-doc/pkg/scribblings/lib.scrbl
+++ b/pkgs/racket-pkgs/racket-doc/pkg/scribblings/lib.scrbl
@@ -32,13 +32,14 @@ that are documented to require the lock. Other functions from
@racketmodname[pkg/lib] take the lock as needed.}
@deftogether[(
-@defparam[current-pkg-scope scope (or/c 'installation 'user 'shared
+@defparam[current-pkg-scope scope (or/c 'installation 'user
(and/c path? complete-path?))]
@defparam[current-pkg-scope-version s string?]
)]{
-Parameters that together determine @tech{package scope} for management
-operations and the version for version-specific scope.}
+Parameters that determine @tech{package scope} for management
+operations and, in the case of @racket['user] scope, the relevant
+installation name/version.}
@defparam[current-pkg-error err procedure?]{
@@ -75,13 +76,13 @@ Returns the directory that holds the installation of the installed
is installed.}
-@defproc[(default-pkg-scope) (or/c 'installation 'user 'shared
+@defproc[(default-pkg-scope) (or/c 'installation 'user
(and/c path? complete-path?))]{
Returns the user's configured default @tech{package scope}.}
-@defproc[(installed-pkg-names [#:scope scope (or/c #f 'installation 'user 'shared
+@defproc[(installed-pkg-names [#:scope scope (or/c #f 'installation 'user
(and/c path? complete-path?))])
(listof string?)]{
@@ -90,7 +91,7 @@ scope}, where @racket[#f] indicates the user's default @tech{package
scope}.}
-@defproc[(installed-pkg-table [#:scope scope (or/c #f 'installation 'user 'shared
+@defproc[(installed-pkg-table [#:scope scope (or/c #f 'installation 'user
(and/c path? complete-path?))])
(hash/c string? pkg-info?)]{
diff --git a/pkgs/racket-pkgs/racket-doc/pkg/scribblings/pkg.scrbl b/pkgs/racket-pkgs/racket-doc/pkg/scribblings/pkg.scrbl
index e53fae480c..9cec1f3d76 100644
--- a/pkgs/racket-pkgs/racket-doc/pkg/scribblings/pkg.scrbl
+++ b/pkgs/racket-pkgs/racket-doc/pkg/scribblings/pkg.scrbl
@@ -243,17 +243,15 @@ the version is part of the source. A @tech{single-collection package}
can be a @tech{package update} of a @tech{multi-collection package}
and vice versa.
-A @deftech{package scope} determines the effect of package installations,
-updates, @|etc|, with respect to different users, Racket versions, and
-Racket installations. The default @tech{package scope} can be configured, but it is
-normally @exec{user}, which is user-specific and version-specific;
-that is, package installation makes the package visible only for the
-installing user and with the installing version of Racket. The
-@exec{installation} scope means that package installation makes the
-package visible to all users of the specific Racket installation that
-is used to install the package. The @exec{shared} scope means
-user-specific, but for all versions and installations of Racket.
-Finally, a directory path can be used as a package scope, in which case
+A @deftech{package scope} determines the effect of package
+installations, updates, @|etc|, with respect to different users and
+Racket installations. The default @tech{package scope} can be
+configured, but it is normally @exec{user}, which makes actions
+specific to both the current user and the installation's name/version
+(in the sense of @racket[get-installation-name]). The
+@exec{installation} scope means that package operations affect
+all users of the Racket installation.
+Finally, a directory path can be used as a @tech{package scope}, in which case
package operations affect the set of packages installations in the
directory (and an installation can be configured to include the
directory in its search path for installed packages).
@@ -325,14 +323,12 @@ sub-sub-commands:
@item{@DFlag{scope} @nonterm{scope} --- Selects the @tech{package scope} for installation, where @nonterm{scope} is one of
@itemlist[
@item{@exec{installation} --- Install packages for all users of a Racket installation, rather than user-specific.}
- @item{@exec{user} --- Install packages as user-specific and Racket version-specific.}
- @item{@exec{shared} --- Install packages as user-specific, but for all Racket versions.}
+ @item{@exec{user} --- Install packages for the current user and current installation's name/version.}
]
The default package scope is normally @exec{user}, but it can be configured with
@command-ref{config}@exec{ --set default-scope @nonterm{scope}}.}
@item{@Flag{i} or @DFlag{installation} --- Shorthand for @exec{--scope installation}.}
@item{@Flag{u} or @DFlag{user} --- Shorthand for @exec{--scope user}.}
- @item{@Flag{s} or @DFlag{shared} --- Shorthand for @exec{--scope shared}.}
@item{@DFlag{scope-dir} @nonterm{dir} --- Select @nonterm{dir} as the @tech{package scope}.}
@item{@DFlag{catalog} @nonterm{catalog} --- Use @nonterm{catalog} instead of of the currently configured
@@ -363,7 +359,6 @@ this command fails without installing any of the @nonterm{pkg}s
@item{@DFlag{scope} @nonterm{scope} --- Selects a @tech{package scope}, the same as for @command-ref{install}.}
@item{@Flag{i} or @DFlag{installation} --- Shorthand for @exec{--scope installation}.}
@item{@Flag{u} or @DFlag{user} --- Shorthand for @exec{--scope user}.}
- @item{@Flag{s} or @DFlag{shared} --- Shorthand for @exec{--scope shared}.}
@item{@DFlag{scope-dir} @nonterm{dir} --- Selects @nonterm{dir} as the @tech{package scope}, the same as for @command-ref{install}.}
@item{@DFlag{no-setup} --- Same as for @command-ref{install}.}
@item{@DFlag{binary} --- Same as for @command-ref{install}.}
@@ -387,7 +382,6 @@ removing any of the @nonterm{pkg}s.
@item{@DFlag{scope} @nonterm{scope} --- Selects a @tech{package scope}, the same as for @command-ref{install}.}
@item{@Flag{i} or @DFlag{installation} --- Shorthand for @exec{--scope installation}.}
@item{@Flag{u} or @DFlag{user} --- Shorthand for @exec{--scope user}.}
- @item{@Flag{s} or @DFlag{shared} --- Shorthand for @exec{--scope shared}.}
@item{@DFlag{scope-dir} @nonterm{dir} --- Selects @nonterm{dir} as the @tech{package scope}, the same as for @command-ref{install}.}
@item{@DFlag{no-setup} --- Same as for @command-ref{install}.}
@item{@DFlag{jobs} @nonterm{n} or @Flag{j} @nonterm{n} --- Same as for @command-ref{install}.}
@@ -395,8 +389,7 @@ removing any of the @nonterm{pkg}s.
}
@item{@command/toc{show} @nonterm{option} ... --- Print information about currently installed packages.
- By default, packages are shown for all installation modes (installation-wide,
- user- and Racket-version-specific, and user-specific all-version), but only for packages
+ By default, packages are shown for all @tech{package scopes}, but only for packages
not marked as auto-installed to fulfill dependencies.
The @exec{show} sub-command accepts
@@ -410,15 +403,15 @@ removing any of the @nonterm{pkg}s.
@item{@DFlag{scope} @nonterm{scope} --- Shows only packages in @nonterm{scope}, which is one of
@itemlist[
@item{@exec{installation} --- Show only installation-wide packages.}
- @item{@exec{user} --- Show only user-specific, version-specific packages.}
- @item{@exec{shared} --- Show only user-specific, all-version packages.}
+ @item{@exec{user} --- Show only user-specific packages for the current installation's name/version
+ or the name/version specified with @DFlag{version} or @Flag{v}.}
]
The default is to show packages for all @tech{package scopes}.}
@item{@Flag{i} or @DFlag{installation} --- Shorthand for @exec{--scope installation}.}
@item{@Flag{u} or @DFlag{user} --- Shorthand for @exec{--scope user}.}
- @item{@Flag{s} or @DFlag{shared} --- Shorthand for @exec{--scope shared}.}
@item{@DFlag{scope-dir} @nonterm{dir} --- Shows only packages installed in @nonterm{dir}.}
- @item{@DFlag{version} @nonterm{vers} or @Flag{v} @nonterm{vers} --- Show only user-specific packages for Racket version @nonterm{vers}.}
+ @item{@DFlag{version} @nonterm{vers} or @Flag{v} @nonterm{vers} --- Show only user-specific packages for
+ the installation name/version @nonterm{vers}.}
]
}
@@ -462,20 +455,17 @@ View and modify configuration of the package manager itself, with the following
@item{@DFlag{set} --- Sets an option, rather than printing it.}
@item{@DFlag{scope} @nonterm{scope} --- Selects a @tech{package scope}, the same as for @command-ref{install}.
A configuration value set at @exec{installation} scope serves
- as the default value at @exec{shared} scope, and
- a configuration value set at @exec{shared} scope serves
as the default value at @exec{user} scope.}
@item{@Flag{i} or @DFlag{installation} --- Shorthand for @exec{--scope installation}.}
@item{@Flag{u} or @DFlag{user} --- Shorthand for @exec{--scope user}.}
- @item{@Flag{s} or @DFlag{shared} --- Shorthand for @exec{--scope shared}.}
]
The valid keys are:
@itemlist[
@item{@exec{catalogs} --- A list of URLs for @tech{package catalogs}.}
- @item{@exec{default-scope} --- Either @exec{installation}, @exec{user}, or @exec{shared}.
+ @item{@exec{default-scope} --- Either @exec{installation} or @exec{user}.
The value of this key at @exec{user} scope (possibly defaulting from
- @exec{shared} or @exec{installation} scope) is
+ @exec{installation} scope) is
the default @tech{package scope} for all @exec{raco pkg} commands
(even @command{config}, which is consistent but potentially confusing).}
]
@@ -930,13 +920,9 @@ and rebuilt.
If you change the default @tech{package scope}, you can use the
@Flag{u} or @DFlag{user} flag with a specific @exec{raco pkg} command
-to perform the command with user- and version-specific @tech{package
-scope}.
-
-Finally, you can use the @Flag{s} or @DFlag{shared} flag
-with @exec{raco pkg} commands to install user-specific packages that
-apply to all Racket versions that you run. (In contrast, @|Planet1|
-requires reinstallation of all packages every version change.)
+to perform the command with user-specific @tech{package scope}.
+User-specific scope is also specific for a Racket installation
+name, where an installation name is typically a Racket version.
@subsection{Where and how are packages installed?}
diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/raco/config.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/raco/config.scrbl
index da3bbd893a..6b6a44ec64 100644
--- a/pkgs/racket-pkgs/racket-doc/scribblings/raco/config.scrbl
+++ b/pkgs/racket-pkgs/racket-doc/scribblings/raco/config.scrbl
@@ -90,6 +90,11 @@ directory:
path for resolving package names; an @racket[#f] in the list
is replaced with the default search path.}
+ @item{@racket['installation-name] --- a string for the installation
+ name, which is used for packages in @exec{user}
+ @tech[#:doc '(lib "pkg/scribblings/pkg.scrbl")]{package
+ scope}; the default is @racket[(version)].}
+
@item{@racket['absolute-installation?] --- a boolean that is
@racket[#t] if the installation uses absolute path names,
@racket[#f] otherwise.}
diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/raco/link.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/raco/link.scrbl
index 63b1884c8b..d20972353b 100644
--- a/pkgs/racket-pkgs/racket-doc/scribblings/raco/link.scrbl
+++ b/pkgs/racket-pkgs/racket-doc/scribblings/raco/link.scrbl
@@ -4,7 +4,8 @@
"common.rkt"
(for-label racket/base
racket/contract
- setup/link))
+ setup/link
+ setup/dirs))
@title[#:tag "link"]{@exec{raco link}: Library Collection Links}
@@ -55,7 +56,7 @@ Full command-line options:
any other command-line arguments are provided that modify the
link table, the table is shown after modifications. If no
directory arguments are provided, and if none of @Flag{u},
- @DFlag{user}, @Flag{s}, @DFlag{shared}, @Flag{i}, @DFlag{installation}, @Flag{f}, or
+ @DFlag{user}, @Flag{i}, @DFlag{installation}, @Flag{f}, or
@DFlag{file} are specified, then the link table is shown for
all user-specific and installation-wide @tech[#:doc
reference-doc]{collection links files}.}
@@ -86,7 +87,8 @@ Full command-line options:
@nonterm{regexp} --- Sets a version regexp that limits the link
to use only by Racket versions (as reported by
@racket[version]) matching @nonterm{regexp}. This flag
- is normally used with @Flag{s} or @DFlag{shared}. When the @Flag{r}
+ is normally used with @Flag{u} or @DFlag{user} with installations
+ that have different versions but the same installation name. When the @Flag{r}
or @DFlag{remove} flag is also used, only links with a
version regexp matching @nonterm{regexp} are removed.}
@@ -94,24 +96,17 @@ Full command-line options:
of add mode.}
@item{@Flag{u} or @DFlag{user} --- Limits listing and removal
- of links to the user- and version-specific @tech[#:doc
- reference-doc]{collection links file} and not the all-version or
- collection-wide @tech[#:doc reference-doc]{collection links
- file}. This flag is mutually exclusive with @Flag{s}, @DFlag{shared}, @Flag{i},
- @DFlag{installation}, @Flag{f}, and @DFlag{file}.}
-
- @item{@Flag{s} or @DFlag{shared} --- Limits listing and removal
- of links to the user-specific, all-version @tech[#:doc
- reference-doc]{collection links file} and not the version-specific or
- collection-wide @tech[#:doc reference-doc]{collection links
- file}. This flag is mutually exclusive with @Flag{u}, @DFlag{user}, @Flag{i},
+ of links to the user-specific @tech[#:doc
+ reference-doc]{collection links file} and not the
+ installation-wide @tech[#:doc reference-doc]{collection links
+ file}. This flag is mutually exclusive with @Flag{i},
@DFlag{installation}, @Flag{f}, and @DFlag{file}.}
@item{@Flag{i} or @DFlag{installation} --- Reads and writes links in
installation-wide @tech[#:doc reference-doc]{collection links
file} and not the user-specific @tech[#:doc
reference-doc]{collection links file}. This flag is mutually
- exclusive with @Flag{u}, @DFlag{user}, @Flag{s}, @DFlag{shared}, @Flag{f}, and
+ exclusive with @Flag{u}, @DFlag{user}, @Flag{f}, and
@DFlag{file}.}
@item{@Flag{f} @nonterm{file} or @DFlag{file} @nonterm{file} ---
@@ -120,6 +115,11 @@ Full command-line options:
file}. This flag is mutually exclusive with @Flag{u},
@DFlag{user}, @Flag{s}, @DFlag{shared}, @Flag{i}, and @DFlag{installation}.}
+ @item{@Flag{v} @nonterm{vers} or @DFlag{version} @nonterm{vers} ---
+ Selects @nonterm{vers} as relevant installation name for
+ operations on the user-specific @tech[#:doc
+ reference-doc]{collection links file}.}
+
@item{@DFlag{repair} --- Enables repairs to the existing file content
when the content is erroneous. The file is repaired by deleting
individual links when possible.}
@@ -134,7 +134,7 @@ Full command-line options:
@defproc[(links [dir path?] ...
[#:user? user? any/c #t]
- [#:shared? shared? any/c #t]
+ [#:user-version user-version string? (get-installation-name)]
[#:file file (or/c path-string? #f) #f]
[#:name name (or/c string? #f) #f]
[#:root? root? any/c #f]
@@ -149,11 +149,11 @@ Full command-line options:
A function version of the @exec{raco link} command that always works
on a single file---either @racket[file] if it is a path string, the
-user- and version-specific @tech[#:doc reference-doc]{collection links file} if
-@racket[user?] is true and @racket[shared?] is false, the
-user-specific, all-version @tech[#:doc reference-doc]{collection links file} if
-@racket[shared?] is true, or the installation-wide @tech[#:doc
-reference-doc]{collection links file} otherwise.
+user--specific @tech[#:doc reference-doc]{collection links file} if
+@racket[user?] is true, or the installation-wide @tech[#:doc
+reference-doc]{collection links file} otherwise. If @racket[user?]
+is true, then @racket[user-version] determines the relevant
+installation name (defaulting to the current installation's name).
The @racket[static-root?] flag value is ignored unless @racket[root?]
is true and @racket[remove?] is false, in which case each given
diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/raco/setup.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/raco/setup.scrbl
index 0b4ef5ab7d..0beef4048e 100644
--- a/pkgs/racket-pkgs/racket-doc/scribblings/raco/setup.scrbl
+++ b/pkgs/racket-pkgs/racket-doc/scribblings/raco/setup.scrbl
@@ -991,16 +991,11 @@ v
installation scope; the directory indicated by the returned path may
or may not exist.}
-@defproc[(find-user-pkgs-dir) path?]{
+@defproc[(find-user-pkgs-dir [vers string? (get-installation-name)]) path?]{
Returns a path to the directory containing packages with
- user- and version-specific scope; the directory indicated by
+ user-specific scope for installation name @racket[vers]; the directory indicated by
the returned path may or may not exist.}
-@defproc[(find-shared-pkgs-dir) path?]{
- Returns a path to the directory containing packages with
- user-specific, all-version scope; the directory indicated by the
- returned path may or may not exist.}
-
@defproc[(get-pkgs-search-dirs) (listof path?)]{
Returns a list of paths to the directories containing packages in
installation scope. (Normally, the result includes the result of
@@ -1104,6 +1099,11 @@ v
Returns a string that is used by the documentation system, augmented
with a version and search-key query, for remote documentation links.}
+@defproc[(get-installation-name) string?]{ Returns the current
+ installation's name, which is often @racket[(version)] but can be
+ configured via @racket['installation-name] in @filepath{config.rktd}
+ (see @secref["config-file"]).}
+
@defthing[absolute-installation? boolean?]{
A binary boolean flag that is true if this installation is using
absolute path names.}
diff --git a/pkgs/racket-pkgs/racket-doc/scribblings/reference/collects.scrbl b/pkgs/racket-pkgs/racket-doc/scribblings/reference/collects.scrbl
index f1751e8c48..8b68a824b3 100644
--- a/pkgs/racket-pkgs/racket-doc/scribblings/reference/collects.scrbl
+++ b/pkgs/racket-pkgs/racket-doc/scribblings/reference/collects.scrbl
@@ -91,7 +91,7 @@ Produces a list of paths as follows:
@itemize[
@item{The path produced by @racket[(build-path (find-system-path
- 'addon-dir) (version) "collects")] is the first element of the
+ 'addon-dir) (get-installation-name) "collects")] is the first element of the
default collection path list, unless the value of the
@racket[use-user-specific-search-paths] parameter is @racket[#f].}
@@ -197,17 +197,14 @@ The @deftech{collection links files} are used by
default @tech{module name resolver} to locate collections before
trying the @racket[(current-library-collection-paths)] search
path, but only if the @racket[use-collection-link-paths] parameter is set to
-@racket[#t]. Furthermore, a user- and version-specific @tech{collection links file} takes
-precedence over a user-specific and all-version @tech{collection links file},
-which in turn takes precedence over an installation-wide @tech{collection links file}.
-The user-specific @tech{collection links files} are used only if the
+@racket[#t]. Furthermore, a user-specific @tech{collection links file} takes
+precedence over an installation-wide @tech{collection links file}.
+The user-specific @tech{collection links file} is used only if the
@racket[use-user-specific-search-paths] parameter is set to
@racket[#t].
-The path of the user- and version-specific @tech{collection links file} is
-@racket[(build-path (find-system-path 'addon-dir) (version) "links.rktd")].
-The path of the user-specific and all-version @tech{collection links file} is
-@racket[(build-path (find-system-path 'addon-dir) "links.rktd")].
+The path of the user--specific @tech{collection links file} is
+@racket[(build-path (find-system-path 'addon-dir) (get-installation-name) "links.rktd")].
The path of the installation-wide @tech{collection links file} is
@racket[(build-path (find-config-dir) "links.rktd")].
Each @tech{collection links file} is cached by Racket, but
diff --git a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-config.rkt b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-config.rkt
index 665c964ded..027ada9595 100644
--- a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-config.rkt
+++ b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-config.rkt
@@ -7,20 +7,12 @@
(shelly-case
"reading and writing configs"
$ "raco pkg config catalogs" =stdout> "https://pkg.racket-lang.org\nhttps://planet-compat.racket-lang.org\n"
- $ "raco pkg config -s --set catalogs http://localhost:9000"
- $ "raco pkg config -s catalogs" =stdout> "http://localhost:9000\n"
-
- ;; shared value inherited as user:
- $ "raco pkg config catalogs" =stdout> "http://localhost:9000\n"
-
- ;; user separate from shared:
- $ "raco pkg config --set -u catalogs http://localhost:0999"
- $ "raco pkg config -u catalogs" =stdout> "http://localhost:0999\n"
- $ "raco pkg config -s catalogs" =stdout> "http://localhost:9000\n"
+ $ "raco pkg config -u --set catalogs http://localhost:9000"
+ $ "raco pkg config -u catalogs" =stdout> "http://localhost:9000\n"
;; can set default scope:
- $ "raco pkg config --set -u default-scope shared"
- $ "raco pkg config -u default-scope" =stdout> "shared\n"
- $ "raco pkg config -s default-scope" =stdout> "user\n"
+ $ "raco pkg config --set -u default-scope installation"
+ $ "raco pkg config -u default-scope" =stdout> "installation\n"
+ $ "raco pkg config -i default-scope" =stdout> "user\n"
$ "raco pkg config default-scope" =stdout> "user\n"
- $ "raco pkg config catalogs" =stdout> "http://localhost:9000\n")))
+ $ "raco pkg config -u catalogs" =stdout> "http://localhost:9000\n")))
diff --git a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt
index 72da6d4ba3..fa4385489f 100644
--- a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt
+++ b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-remove.rkt
@@ -20,7 +20,7 @@
(shelly-case
"remove and show"
(shelly-case "remove of not installed package fails"
- $ "raco pkg show -u" =stdout> " [none]\n"
+ $ "raco pkg show -u -a" =stdout> " [none]\n"
$ "raco pkg remove not-there" =exit> 1)
(shelly-install "remove test"
"test-pkgs/pkg-test1.zip")
@@ -29,12 +29,12 @@
"pkg-test1 pkg-test1")
(shelly-install "remove of dep fails"
"test-pkgs/pkg-test1.zip"
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n"
$ "raco pkg install test-pkgs/pkg-test2.zip"
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n"
$ "raco pkg remove pkg-test1" =exit> 1 =stderr> #rx"pkg-test1 \\(required by: \\(pkg-test2\\)\\)"
$ "raco pkg remove pkg-test2"
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n")
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test1.zip\\)\n")
(shelly-install "remove of dep can be forced"
"test-pkgs/pkg-test1.zip"
$ "raco pkg install test-pkgs/pkg-test2.zip"
@@ -62,21 +62,21 @@
$ "racket -e '(require pkg-test1)'" =exit> 1
$ "racket -e '(require pkg-test2)'" =exit> 1
$ "raco pkg install --deps search-auto test-pkgs/pkg-test2.zip" =exit> 0
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\npkg-test2 +[a-f0-9]+ +\\(file .+tests/pkg/test-pkgs/pkg-test2.zip\\)\n"
$ "racket -e '(require pkg-test1)'" =exit> 0
$ "racket -e '(require pkg-test2)'" =exit> 0
$ "racket -e '(require pkg-test2/contains-dep)'" =exit> 0
$ "raco pkg remove pkg-test2"
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-test1\\* +[a-f0-9]+ +\\(catalog pkg-test1\\)\n"
$ "racket -e '(require pkg-test1)'" =exit> 0
$ "raco pkg remove --auto"
- $ "raco pkg show -u" =stdout> " [none]\n"
+ $ "raco pkg show -u -a" =stdout> " [none]\n"
$ "racket -e '(require pkg-test1)'" =exit> 1
$ "racket -e '(require pkg-test2)'" =exit> 1))
(with-fake-root
(shelly-case
"different scope error"
- $ "raco pkg install --shared test-pkgs/pkg-test1.zip" =exit> 0
- $ "raco pkg remove pkg-test1" =exit> 1
- =stderr> #rx"package installed in a different scope: shared"
- $ "raco pkg remove --shared pkg-test1")))))
+ $ "raco pkg install test-pkgs/pkg-test1.zip" =exit> 0
+ $ "raco pkg remove --installation pkg-test1" =exit> 1
+ =stderr> #rx"package installed in a different scope: user"
+ $ "raco pkg remove pkg-test1")))))
diff --git a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt
index a9915c803f..a858ba0553 100644
--- a/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt
+++ b/pkgs/racket-pkgs/racket-test/tests/pkg/tests-update-auto.rkt
@@ -46,12 +46,12 @@
'source
"http://localhost:9999/pkg-a-first.plt"))
$ "raco pkg install --deps search-auto pkg-b" =exit> 0 #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n"
$ "racket -e '(require pkg-b)'" =exit> 43
$ "racket -e '(require pkg-a)'" =exit> 0
;; remove auto doesn't do anything because everything is needed
$ "raco pkg remove --auto"
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ \\(catalog pkg-a\\)\npkg-b +[a-f0-9]+ +\\(catalog pkg-b\\)\n"
$ "racket -e '(require pkg-b)'" =exit> 43
$ "racket -e '(require pkg-a)'" =exit> 0
;; pkg-a is now an auto
@@ -63,9 +63,9 @@
$ "raco pkg update -a" =exit> 0
$ "racket -e '(require pkg-a)'" =exit> 43
$ "raco pkg remove pkg-b"
- $ "raco pkg show -u" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ +\\(catalog pkg-a\\)\n"
+ $ "raco pkg show -u -a" =stdout> #rx"Package\\[\\*=auto\\] +Checksum +Source\npkg-a\\* +[a-f0-9]+ +\\(catalog pkg-a\\)\n"
$ "racket -e '(require pkg-b)'" =exit> 1
;; pkg-a is now not needed
$ "raco pkg remove --auto"
- $ "raco pkg show -u" =stdout> " [none]\n"
+ $ "raco pkg show -u -a" =stdout> " [none]\n"
$ "racket -e '(require pkg-a)'" =exit> 1)))
diff --git a/pkgs/sandbox-lib/racket/sandbox.rkt b/pkgs/sandbox-lib/racket/sandbox.rkt
index 42fe5287bd..bd26e361a1 100644
--- a/pkgs/sandbox-lib/racket/sandbox.rkt
+++ b/pkgs/sandbox-lib/racket/sandbox.rkt
@@ -930,13 +930,11 @@
#:when (file-exists? f))
(links #:root? #t #:file f)))
(links #:root? #t #:user? #t)
- (links #:root? #t #:shared? #t)
(apply append
(for/list ([f (get-links-search-files)]
#:when (file-exists? f))
(map cdr (links #:file f #:with-path? #t))))
- (map cdr (links #:user? #t #:with-path? #t))
- (map cdr (links #:shared? #t #:with-path? #t))))
+ (map cdr (links #:user? #t #:with-path? #t))))
(read-bytecode ,(PLANET-BASE-DIR))
(exists ,(find-system-path 'addon-dir))
(read ,(build-path (find-system-path 'addon-dir) "links.rktd"))
diff --git a/racket/collects/pkg/lib.rkt b/racket/collects/pkg/lib.rkt
index 19ea84c5ed..462a1bf4b8 100644
--- a/racket/collects/pkg/lib.rkt
+++ b/racket/collects/pkg/lib.rkt
@@ -35,7 +35,7 @@
(define current-pkg-scope
(make-parameter 'user))
(define current-pkg-scope-version
- (make-parameter (version)))
+ (make-parameter (get-installation-name)))
(define current-pkg-error
(make-parameter (lambda args (apply error 'pkg args))))
(define current-no-pkg-db
@@ -409,13 +409,9 @@
(for*/hash ([dir (in-list (get-pkgs-search-dirs))]
[(k v) (read-pkgs-db dir)])
(values k v))]
- [(shared)
- (define db (read-pkgs-db 'shared))
- (for/fold ([ht (merge-next-pkg-dbs 'installation)]) ([(k v) (in-hash db)])
- (hash-set ht k v))]
[(user)
(define db (read-pkgs-db 'user))
- (for/fold ([ht (merge-next-pkg-dbs 'shared)]) ([(k v) (in-hash db)])
+ (for/fold ([ht (merge-next-pkg-dbs 'installation)]) ([(k v) (in-hash db)])
(hash-set ht k v))])))
(define (package-info pkg-name [fail? #t] #:db [given-db #f])
@@ -430,7 +426,6 @@
(pkg-not-installed pkg-name db)]))
;; return the current scope as a string
-;; -> (or/c "user" "shared" "installation")
(define (current-scope->string)
(define scope (current-pkg-scope))
(cond
@@ -446,22 +441,17 @@
(define user-db
(parameterize ([current-pkg-scope 'user])
(read-pkg-db)))
- (define shared-db
- (parameterize ([current-pkg-scope 'shared])
- (read-pkg-db)))
;; see if the package is installed in any scope
- (define-values (in-install? in-user? in-shared?)
+ (define-values (in-install? in-user?)
(values
(and (hash-ref installation-db pkg-name #f)
"--installation")
(and (hash-ref user-db pkg-name #f)
- "--user")
- (and (hash-ref shared-db pkg-name #f)
- "--shared")))
+ "--user")))
(define not-installed-msg
- (cond [(or in-user? in-install? in-shared?)
+ (cond [(or in-user? in-install?)
=>
(λ (scope-str)
(~a "could not remove package\n"
@@ -510,9 +500,7 @@
;; Hard-wided:
(get-default)
;; Enclosing:
- (parameterize ([current-pkg-scope (if (eq? s 'user)
- 'shared
- 'installation)])
+ (parameterize ([current-pkg-scope 'installation])
(read-pkg-cfg/def k)))]
[else
(match k
@@ -535,7 +523,6 @@
(define (default-pkg-scope)
(match (default-pkg-scope-as-string)
["installation" 'installation]
- ["shared" 'shared]
[else 'user]))
(define (default-pkg-scope-as-string)
(read-pkg-cfg/def 'default-scope))
@@ -568,7 +555,7 @@
(if (path? current-scope)
(list current-scope)
(member current-scope
- (append '(user shared)
+ (append '(user)
(let ([main (find-pkgs-dir)])
(for/list ([d (get-pkgs-search-dirs)])
(if (equal? d main)
@@ -603,21 +590,17 @@
(define scope (current-pkg-scope))
(define user? (not (or (eq? scope 'installation)
(path? scope))))
- (define shared? (and user?
- (eq? (current-pkg-scope) 'shared)))
(match orig-pkg
[`(,(or 'link 'static-link) ,_)
(links pkg-dir
#:remove? #t
#:user? user?
- #:shared? shared?
#:file (scope->links-file scope)
#:root? (not (sc-pkg-info? pi)))]
[_
(links pkg-dir
#:remove? #t
#:user? user?
- #:shared? shared?
#:file (scope->links-file scope)
#:root? (not (sc-pkg-info? pi)))
(delete-directory/files pkg-dir)]))
@@ -1323,7 +1306,6 @@
#:name single-collect
#:user? (not (or (eq? 'installation scope)
(path? scope)))
- #:shared? (eq? 'shared scope)
#:file (scope->links-file scope)
#:root? (not single-collect)
#:static-root? (and (pair? orig-pkg)
@@ -1641,11 +1623,11 @@
[(list* (and key "catalogs") val)
(update-pkg-cfg! 'catalogs val)]
[(list (and key "default-scope") val)
- (unless (member val '("installation" "user" "shared"))
+ (unless (member val '("installation" "user"))
(pkg-error (~a "invalid value for config key\n"
" config key: ~a\n"
" given value: ~a\n"
- " valid values: installation, user, or shared")
+ " valid values: installation, user")
key
val))
(update-pkg-cfg! 'default-scope val)]
@@ -1784,10 +1766,9 @@
(parameterize ([current-pkg-scope scope])
(with-pkg-lock/read-only
(pkg-directory* dir-or-name))))
- (define dir (or (get-dir 'user)
- (get-dir 'shared)))
+ (define dir (get-dir 'user))
(unless dir
- (pkg-error (~a "package not installed in user or shared scope\n"
+ (pkg-error (~a "package not installed in user scope\n"
" package name: ~a"
(if (get-dir 'installation)
"\n installed in scope: installation"
@@ -2258,7 +2239,7 @@
(or/c #f 'fail 'force 'search-ask 'search-auto))
(define package-scope/c
- (or/c 'installation 'user 'shared
+ (or/c 'installation 'user
(and/c path? complete-path?)))
(provide
diff --git a/racket/collects/pkg/main.rkt b/racket/collects/pkg/main.rkt
index 880e293809..b36cc88067 100644
--- a/racket/collects/pkg/main.rkt
+++ b/racket/collects/pkg/main.rkt
@@ -1,6 +1,5 @@
#lang racket/base
-(require (only-in racket/base [version r:version])
- racket/function
+(require racket/function
racket/list
raco/command-name
setup/dirs
@@ -31,15 +30,14 @@
(string->symbol (format "~a ~a" (short-program+command-name) cmd))
args))
-(define (call-with-package-scope who given-scope scope-dir installation shared user thunk)
+(define (call-with-package-scope who given-scope scope-dir installation user thunk)
(define scope
(case given-scope
- [(installation user shared) given-scope]
+ [(installation user) given-scope]
[else
(cond
[installation 'installation]
[user 'user]
- [shared 'shared]
[scope-dir (path->complete-path scope-dir)]
[else (default-pkg-scope)])]))
(parameterize ([current-pkg-scope scope]
@@ -83,14 +81,12 @@
#:once-each
[#:bool skip-installed () ("Skip a if already installed")]
#:once-any
- [(#:sym scope [installation user shared] #f) scope ()
+ [(#:sym scope [installation user] #f) scope ()
("Select package , one of"
" installation: Install for all users of the Racket installation"
- " user: Install as user- and version-specific"
- " shared: Install as user-specific but shared for all Racket versions")]
+ " user: Install as user-specific for an installation version/name")]
[#:bool installation ("-i") "Shorthand for `--scope installation'"]
[#:bool user ("-u") "Shorthand for `--scope user'"]
- [#:bool shared ("-s") "Shorthand for `--scope shared'"]
[(#:str dir #f) scope-dir () "Install for package scope "]
#:once-each
[(#:str catalog #f) catalog () "Use instead of configured catalogs"]
@@ -100,7 +96,7 @@
#:args pkg-source
(call-with-package-scope
'install
- scope scope-dir installation shared user
+ scope scope-dir installation user
(lambda ()
(unless (or (not name) (package-source->name name))
((current-pkg-error) (format "~e is an invalid package name" name)))
@@ -135,14 +131,12 @@
" search-auto: like 'search-ask' but does not ask for permission to install")]
[#:bool update-deps () "Check named packages' dependencies for updates"]
#:once-any
- [(#:sym scope [installation user shared] #f) scope ()
+ [(#:sym scope [installation user] #f) scope ()
("Select package scope, one of"
" installation: Update only for all users of the Racket installation"
- " user: Update only user- and version-specific packages"
- " shared: Update only user-specific packages for all Racket versions")]
+ " user: Update only user-specific for an installation version/name")]
[#:bool installation ("-i") "Shorthand for `--scope installation'"]
[#:bool user ("-u") "Shorthand for `--scope user'"]
- [#:bool shared ("-s") "Shorthand for `--scope shared'"]
[(#:str dir #f) scope-dir () "Update for package scope "]
#:once-any
[#:bool source () ("Strip built elements of the package before installing")]
@@ -154,7 +148,7 @@
#:args pkg
(call-with-package-scope
'update
- scope scope-dir installation shared user
+ scope scope-dir installation user
(lambda ()
(define setup-collects
(with-pkg-lock
@@ -170,14 +164,12 @@
[#:bool force () "Force removal of packages"]
[#:bool auto () "Remove automatically installed packages with no dependencies"]
#:once-any
- [(#:sym scope [installation user shared] #f) scope ()
+ [(#:sym scope [installation user] #f) scope ()
("Select package , one of"
" installation: Remove packages for all users of the Racket installation"
- " user: Remove user- and version-specific packages"
- " shared: Remove user-specific packages for all Racket versions")]
+ " user: Remove user-specific for an installation version/name")]
[#:bool installation ("-i") "Shorthand for `--scope installation'"]
[#:bool user ("-u") "Shorthand for `--scope user'"]
- [#:bool shared ("-s") "Shorthand for `--scope shared'"]
[(#:str dir #f) scope-dir () "Remove for package scope "]
#:once-each
[#:bool no-setup () ("Don't run `raco setup' after changing packages (usually"
@@ -186,7 +178,7 @@
#:args pkg
(call-with-package-scope
'remove
- scope scope-dir installation shared user
+ scope scope-dir installation user
(lambda ()
(define setup-collects
(with-pkg-lock
@@ -200,24 +192,21 @@
[#:bool all ("-a") "Show auto-installed packages, too"]
[#:bool dir ("-d") "Show the directory where the package is installed"]
#:once-any
- [(#:sym scope [installation user shared] #f) scope ()
+ [(#:sym scope [installation user] #f) scope ()
("Show only for package , one of"
" installation: Show only for all users of the Racket installation"
- " user: Show only user- and version-specific"
- " shared: Show only user-specific for all Racket versions")]
- [(#:str vers #f) version ("-v") "Show only user-specific for Racket "]
+ " user: Show only user-specific for an installation version/name")]
+ [(#:str vers #f) version ("-v") "Show user-specific for installation "]
[#:bool installation ("-i") "Shorthand for `--scope installation'"]
[#:bool user ("-u") "Shorthand for `--scope user'"]
- [#:bool shared ("-s") "Shorthand for `--scope shared'"]
[(#:str dir #f) scope-dir () "Show only for package scope "]
#:args ()
(define only-mode (case scope
- [(installation user shared) scope]
+ [(installation user) scope]
[else
(cond
[scope-dir (path->complete-path scope-dir)]
[installation 'installation]
- [shared 'shared]
[user 'user]
[else (if version 'user #f)])]))
(for ([mode (if only-mode
@@ -228,18 +217,17 @@
(if (equal? d main)
'installation
d))))
- '(shared user)))])
+ '(user)))])
(when (or (equal? mode only-mode) (not only-mode))
(unless only-mode
(printf "~a\n" (case mode
[(installation) "Installation-wide:"]
- [(shared) "User-specific, all-version:"]
- [(user) (format "User-specific, version-specific (~a):"
- (or version (r:version)))]
+ [(user) (format "User-specific for installation ~s:"
+ (or version (get-installation-name)))]
[else (format "~a:" mode)])))
(parameterize ([current-pkg-scope mode]
[current-pkg-error (pkg-error 'show)]
- [current-pkg-scope-version (or version (r:version))])
+ [current-pkg-scope-version (or version (get-installation-name))])
(with-pkg-lock/read-only
(pkg-show (if only-mode "" " ")
#:auto? all
@@ -280,18 +268,16 @@
#:once-each
[#:bool set () "Completely replace the value"]
#:once-any
- [(#:sym scope [installation user shared] #f) scope ()
+ [(#:sym scope [installation user] #f) scope ()
("Select configuration , one of"
" installation: Operate on the installation-wide package configuration"
- " user: Operate on the user-specific, version-specific package configuration"
- " shared: Operate on the user-specific all-version package configuration")]
+ " user: Operate on the user-specific for an installation name")]
[#:bool installation ("-i") "Shorthand for `--scope installation'"]
[#:bool user ("-u") "Shorthand for `--scope user'"]
- [#:bool shared ("-s") "Shorthand for `--scope shared'"]
#:args key/val
(call-with-package-scope
'config
- scope #f installation shared user
+ scope #f installation user
(lambda ()
(if set
(with-pkg-lock
diff --git a/racket/collects/pkg/path.rkt b/racket/collects/pkg/path.rkt
index 727a50e86c..23177c6e4c 100644
--- a/racket/collects/pkg/path.rkt
+++ b/racket/collects/pkg/path.rkt
@@ -15,13 +15,12 @@
(define (check-scope who scope)
(unless (or (eq? scope 'user)
- (eq? scope 'shared)
(eq? scope 'installation)
(and (path? scope)
(complete-path? scope)))
(raise-argument-error
who
- "(or/c 'user 'shared 'installation (and/c path? complete-path?))"
+ "(or/c 'user 'installation (and/c path? complete-path?))"
scope)))
(define (get-pkgs-dir scope [user-version (version)])
@@ -33,7 +32,6 @@
(case scope
[(installation) (find-pkgs-dir)]
[(user) (find-user-pkgs-dir user-version)]
- [(shared) (find-shared-pkgs-dir)]
[else (error "unknown package scope")])))
(define (read-pkg-file-hash file)
@@ -87,7 +85,7 @@
(define (build-path* l)
(if (null? l) 'same (apply build-path l)))
(for/fold ([pkg #f] [subpath #f] [collect #f])
- ([scope (in-list (list* 'user 'shared
+ ([scope (in-list (list* 'user
(get-pkgs-search-dirs)))]
#:when (not pkg))
(define d (or (and cache
diff --git a/racket/collects/racket/HISTORY.txt b/racket/collects/racket/HISTORY.txt
index 6820fbc0de..2df5022913 100644
--- a/racket/collects/racket/HISTORY.txt
+++ b/racket/collects/racket/HISTORY.txt
@@ -1,3 +1,8 @@
+Version 5.90.0.3
+Base user directoy paths on an installation name instead
+ of the Racket version string
+Remove "shared" links and package scope
+
Version 5.90.0.2
Added #%declare
Cross-phase persistent modules must be declared with
diff --git a/racket/collects/setup/commands/link.rkt b/racket/collects/setup/commands/link.rkt
index f48f4fe7e7..018836f103 100644
--- a/racket/collects/setup/commands/link.rkt
+++ b/racket/collects/setup/commands/link.rkt
@@ -14,7 +14,7 @@
(define show-mode (make-parameter #f))
(define install-only (make-parameter #f))
(define user-only (make-parameter #f))
-(define user-shared (make-parameter #f))
+(define user-version (make-parameter #f))
(define link-symbol (string->symbol (short-program+command-name)))
@@ -42,16 +42,16 @@
[("-r" "--remove") "Remove links for the specified directories"
(remove-mode #t)]
#:once-any
- [("-u" "--user") "Adjust/list user-specific, version-specific links"
+ [("-u" "--user") "Adjust/list user-specific links for an installation name/version"
(user-only #t)]
- [("-s" "--shared") "Adjust/list user-specific links"
- (user-only #t)
- (user-shared #t)]
[("-i" "--installation") "Adjust/list installation-wide links"
(install-only #t)]
[("-f" "--file") file "Select an alternate link file"
(link-file (path->complete-path file))]
#:once-each
+ [("-v" "--version") vers "Adjust/list user-specific links for "
+ (user-only #t)
+ (user-version vers)]
[("--repair") "Enable repair mode to fix existing links"
(repair-mode #t)]
#:args
@@ -67,20 +67,19 @@
(and (null? dirs)
(show-mode)
(not (user-only))
- (not (user-shared))
(not (install-only))
(not (link-file))))
(when show-all?
(printf "User-specific, version-specific links:\n"))
-(define (go user? shared?)
+(define (go user? vers)
(apply links
dirs
#:root? (root-mode)
#:static-root? (static-root-mode)
#:user? user?
- #:shared? shared?
+ #:user-version (or vers (get-installation-name))
#:file (link-file)
#:name (link-name)
#:version-regexp (link-version)
@@ -92,15 +91,14 @@
(define l1
(go (not (install-only))
- (user-shared)))
+ (user-version)))
(define l2
(if (and (not (or (user-only)
- (user-shared)
(install-only)))
(remove-mode))
(append
(go #f #f)
- (go #t #t))
+ (go #t (user-version)))
null))
(when show-all?
diff --git a/racket/collects/setup/dirs.rkt b/racket/collects/setup/dirs.rkt
index 6aceb70b0c..417e47d7a7 100644
--- a/racket/collects/setup/dirs.rkt
+++ b/racket/collects/setup/dirs.rkt
@@ -84,17 +84,21 @@
(define-config config:3m-suffix '3m-suffix values)
(define-config config:absolute-installation? 'absolute-installation? (lambda (x) (and x #t)))
(define-config config:doc-search-url 'doc-search-url values)
+(define-config config:installation-name 'installation-name values)
(provide get-absolute-installation?
get-cgc-suffix
get-3m-suffix
- get-doc-search-url)
+ get-doc-search-url
+ get-installation-name)
(define (get-absolute-installation?) (force config:absolute-installation?))
(define (get-cgc-suffix) (force config:cgc-suffix))
(define (get-3m-suffix) (force config:3m-suffix))
(define (get-doc-search-url) (or (force config:doc-search-url)
"http://docs.racket-lang.org"))
+(define (get-installation-name) (or (force config:installation-name)
+ (version)))
;; ----------------------------------------
;; "collects"
@@ -112,7 +116,7 @@
(combine-search (force config:collects-search-dirs)
(list (find-collects-dir))))
(define user-collects-dir
- (delay (build-path (system-path* 'addon-dir) (version) "collects")))
+ (delay (build-path (system-path* 'addon-dir) (get-installation-name) "collects")))
(define (find-user-collects-dir)
(force user-collects-dir))
(define (get-collects-search-dirs)
@@ -180,7 +184,7 @@
(define-finder provide config:id id get-false default)
(provide user-id)
(define user-dir
- (delay (build-path (system-path* 'addon-dir) (version) default)))
+ (delay (build-path (system-path* 'addon-dir) (get-installation-name) default)))
(define (user-id)
(force user-dir)))]))
@@ -361,12 +365,8 @@
get-pkgs-search-dirs
(chain-to (lambda () (build-path (find-share-dir) "pkgs"))))
-(provide find-user-pkgs-dir
- find-shared-pkgs-dir)
-(define (find-user-pkgs-dir [vers (version)])
+(provide find-user-pkgs-dir)
+(define (find-user-pkgs-dir [vers (get-installation-name)])
(build-path (find-system-path 'addon-dir)
vers
"pkgs"))
-(define (find-shared-pkgs-dir)
- (build-path (find-system-path 'addon-dir)
- "pkgs"))
diff --git a/racket/collects/setup/link.rkt b/racket/collects/setup/link.rkt
index 72c138b5b5..e9a809030b 100644
--- a/racket/collects/setup/link.rkt
+++ b/racket/collects/setup/link.rkt
@@ -7,10 +7,11 @@
(define (links #:error [error error]
#:user? [user? #t]
+ #:user-version [user-version (and user?
+ (get-installation-name))]
#:file [in-file #f]
#:name [name #f]
#:version-regexp [version-regexp #f]
- #:shared? [shared? #f]
#:root? [root? #f]
#:static-root? [static-root? #f]
#:remove? [remove? #f]
@@ -28,10 +29,8 @@
(check-name name))
(define file (or in-file
- (if (or user? shared?)
- (if shared?
- (build-path (find-system-path 'addon-dir) "links.rktd")
- (build-path (find-system-path 'addon-dir) (version) "links.rktd"))
+ (if user?
+ (build-path (find-system-path 'addon-dir) user-version "links.rktd")
(find-links-file))))
(define need-repair? #f)
diff --git a/racket/collects/setup/setup-unit.rkt b/racket/collects/setup/setup-unit.rkt
index 26f3ada59f..32162108c4 100644
--- a/racket/collects/setup/setup-unit.rkt
+++ b/racket/collects/setup/setup-unit.rkt
@@ -387,16 +387,15 @@
#:info-path info-path
#:info-path-mode 'abs-in-relative
#:omit-root 'dir))
- (for ([shared? (in-list '(#t #f))])
- (for ([c+p (in-list (links #:shared? shared? #:with-path? #t))])
- (cc! (list (string->path (car c+p)))
- #:path (cdr c+p)))
- (for ([cp (in-list (links #:shared? shared? #:root? #t))]
- #:when (directory-exists? cp)
- [collection (directory-list cp)]
- #:unless (skip-collection-directory? collection)
- #:when (directory-exists? (build-path cp collection)))
- (cc! (list collection) #:path (build-path cp collection)))))
+ (for ([c+p (in-list (links #:with-path? #t))])
+ (cc! (list (string->path (car c+p)))
+ #:path (cdr c+p)))
+ (for ([cp (in-list (links #:root? #t))]
+ #:when (directory-exists? cp)
+ [collection (directory-list cp)]
+ #:unless (skip-collection-directory? collection)
+ #:when (directory-exists? (build-path cp collection)))
+ (cc! (list collection) #:path (build-path cp collection))))
;; `all-collections' lists all top-level collections (not from Planet):
(define all-collections
diff --git a/racket/src/racket/src/cstartup.inc b/racket/src/racket/src/cstartup.inc
index 6e50fca29c..1f0ced084e 100644
--- a/racket/src/racket/src/cstartup.inc
+++ b/racket/src/racket/src/cstartup.inc
@@ -1,43 +1,43 @@
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,1,0,0,10,0,14,
-0,21,0,28,0,33,0,37,0,40,0,45,0,58,0,62,0,67,0,74,0,
+0,27,0,31,0,38,0,42,0,49,0,54,0,61,0,66,0,69,0,74,0,
83,0,87,0,93,0,107,0,121,0,124,0,130,0,134,0,136,0,147,0,149,
0,163,0,170,0,192,0,194,0,208,0,19,1,48,1,59,1,70,1,96,1,
129,1,162,1,224,1,24,2,105,2,161,2,166,2,187,2,84,3,105,3,158,
3,225,3,114,4,2,5,56,5,67,5,150,5,0,0,113,7,0,0,69,35,
-37,109,105,110,45,115,116,120,29,11,11,11,66,100,101,102,105,110,101,66,108,
-101,116,114,101,99,64,108,101,116,42,63,97,110,100,62,111,114,64,119,104,101,
-110,72,112,97,114,97,109,101,116,101,114,105,122,101,63,108,101,116,64,99,111,
-110,100,66,117,110,108,101,115,115,68,104,101,114,101,45,115,116,120,29,11,11,
+37,109,105,110,45,115,116,120,29,11,11,11,72,112,97,114,97,109,101,116,101,
+114,105,122,101,63,97,110,100,66,100,101,102,105,110,101,63,108,101,116,66,117,
+110,108,101,115,115,64,99,111,110,100,66,108,101,116,114,101,99,64,108,101,116,
+42,62,111,114,64,119,104,101,110,68,104,101,114,101,45,115,116,120,29,11,11,
11,65,113,117,111,116,101,29,94,2,15,68,35,37,107,101,114,110,101,108,11,
29,94,2,15,68,35,37,112,97,114,97,109,122,11,62,105,102,65,98,101,103,
105,110,63,115,116,120,61,115,70,108,101,116,45,118,97,108,117,101,115,61,120,
73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,97,109,98,100,97,
1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,
121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,115,97,36,11,8,
-240,81,90,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,
-16,20,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,
-2,2,8,2,2,2,11,2,2,2,10,2,2,2,9,2,2,2,12,2,2,
-97,37,11,8,240,81,90,0,0,93,159,2,16,36,37,16,2,2,13,161,2,
-2,37,2,13,2,2,2,13,96,38,11,8,240,81,90,0,0,16,0,96,11,
-11,8,240,81,90,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,
+240,212,90,0,0,95,159,2,17,36,36,159,2,16,36,36,159,2,16,36,36,
+16,20,2,8,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2,7,2,
+2,2,10,2,2,2,3,2,2,2,9,2,2,2,11,2,2,2,12,2,2,
+97,37,11,8,240,212,90,0,0,93,159,2,16,36,37,16,2,2,13,161,2,
+2,37,2,13,2,2,2,13,96,38,11,8,240,212,90,0,0,16,0,96,11,
+11,8,240,212,90,0,0,16,0,18,98,64,104,101,114,101,13,16,6,36,2,
14,2,2,11,11,11,8,32,8,31,8,30,8,29,27,248,22,161,4,195,249,
22,154,4,80,158,39,36,251,22,89,2,18,248,22,101,199,12,249,22,79,2,
19,248,22,103,201,27,248,22,161,4,195,249,22,154,4,80,158,39,36,251,22,
89,2,18,248,22,101,199,249,22,79,2,19,248,22,103,201,12,27,248,22,81,
248,22,161,4,196,28,248,22,87,193,20,14,159,37,36,37,28,248,22,87,248,
22,81,194,248,22,136,18,193,249,22,154,4,80,158,39,36,251,22,89,2,18,
-248,22,136,18,199,249,22,79,2,6,248,22,137,18,201,11,18,100,10,13,16,
+248,22,136,18,199,249,22,79,2,4,248,22,137,18,201,11,18,100,10,13,16,
6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,11,11,
-2,20,3,1,8,101,110,118,49,55,53,55,51,16,4,11,11,2,21,3,1,
-8,101,110,118,49,55,53,55,52,27,248,22,81,248,22,161,4,196,28,248,22,
+2,20,3,1,8,101,110,118,49,55,54,50,57,16,4,11,11,2,21,3,1,
+8,101,110,118,49,55,54,51,48,27,248,22,81,248,22,161,4,196,28,248,22,
87,193,20,14,159,37,36,37,28,248,22,87,248,22,81,194,248,22,136,18,193,
249,22,154,4,80,158,39,36,250,22,89,2,22,248,22,89,249,22,89,248,22,
89,2,23,248,22,136,18,201,251,22,89,2,18,2,23,2,23,249,22,79,2,
-7,248,22,137,18,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,
+11,248,22,137,18,204,18,100,11,13,16,6,36,2,14,2,2,11,11,11,8,
32,8,31,8,30,8,29,16,4,11,11,2,20,3,1,8,101,110,118,49,55,
-53,55,54,16,4,11,11,2,21,3,1,8,101,110,118,49,55,53,55,55,248,
+54,51,50,16,4,11,11,2,21,3,1,8,101,110,118,49,55,54,51,51,248,
22,161,4,193,27,248,22,161,4,194,249,22,79,248,22,89,248,22,80,196,248,
22,137,18,195,27,248,22,81,248,22,161,4,23,197,1,249,22,154,4,80,158,
39,36,28,248,22,64,248,22,155,4,248,22,80,23,198,2,27,249,22,2,32,
@@ -52,7 +52,7 @@
36,37,47,11,9,222,33,43,248,22,161,4,248,22,80,201,248,22,137,18,198,
27,248,22,81,248,22,161,4,196,27,248,22,161,4,248,22,80,195,249,22,154,
4,80,158,40,36,28,248,22,87,195,250,22,90,2,22,9,248,22,81,199,250,
-22,89,2,10,248,22,89,248,22,80,199,250,22,90,2,5,248,22,137,18,201,
+22,89,2,6,248,22,89,248,22,80,199,250,22,90,2,10,248,22,137,18,201,
248,22,81,202,27,248,22,81,248,22,161,4,23,197,1,27,249,22,1,22,93,
249,22,2,22,161,4,248,22,161,4,248,22,80,199,248,22,182,4,249,22,154,
4,80,158,41,36,251,22,89,1,22,119,105,116,104,45,99,111,110,116,105,110,
@@ -63,13 +63,13 @@
81,204,27,248,22,81,248,22,161,4,196,28,248,22,87,193,20,14,159,37,36,
37,249,22,154,4,80,158,39,36,27,248,22,161,4,248,22,80,197,28,249,22,
163,9,62,61,62,248,22,155,4,248,22,101,196,250,22,89,2,22,248,22,89,
-249,22,89,21,93,2,27,248,22,80,199,250,22,90,2,11,249,22,89,2,27,
+249,22,89,21,93,2,27,248,22,80,199,250,22,90,2,8,249,22,89,2,27,
249,22,89,248,22,110,203,2,27,248,22,81,202,251,22,89,2,18,28,249,22,
163,9,248,22,155,4,248,22,80,200,64,101,108,115,101,10,248,22,136,18,197,
-250,22,90,2,22,9,248,22,137,18,200,249,22,79,2,11,248,22,81,202,99,
+250,22,90,2,22,9,248,22,137,18,200,249,22,79,2,8,248,22,81,202,99,
13,16,6,36,2,14,2,2,11,11,11,8,32,8,31,8,30,8,29,16,4,
-11,11,2,20,3,1,8,101,110,118,49,55,53,57,57,16,4,11,11,2,21,
-3,1,8,101,110,118,49,55,54,48,48,18,158,94,10,64,118,111,105,100,8,
+11,11,2,20,3,1,8,101,110,118,49,55,54,53,53,16,4,11,11,2,21,
+3,1,8,101,110,118,49,55,54,53,54,18,158,94,10,64,118,111,105,100,8,
48,27,248,22,81,248,22,161,4,196,249,22,154,4,80,158,39,36,28,248,22,
64,248,22,155,4,248,22,80,197,250,22,89,2,28,248,22,89,248,22,136,18,
199,248,22,101,198,27,248,22,155,4,248,22,136,18,197,250,22,89,2,28,248,
@@ -82,909 +82,905 @@
2,11,2,12,36,46,37,16,0,36,16,1,2,13,37,11,11,11,16,0,16,
0,16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,11,16,5,
11,20,15,16,2,20,14,159,36,36,37,80,158,36,36,36,20,114,159,36,16,
-1,2,13,16,1,33,33,10,16,5,2,12,88,163,8,36,37,53,37,9,223,
-0,33,34,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,8,88,163,
+1,2,13,16,1,33,33,10,16,5,2,7,88,163,8,36,37,53,37,9,223,
+0,33,34,36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,12,88,163,
8,36,37,53,37,9,223,0,33,35,36,20,114,159,36,16,1,2,13,16,0,
-11,16,5,2,6,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159,
-36,16,1,2,13,16,1,33,37,11,16,5,2,7,88,163,8,36,37,56,37,
+11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,36,36,20,114,159,
+36,16,1,2,13,16,1,33,37,11,16,5,2,11,88,163,8,36,37,56,37,
9,223,0,33,38,36,20,114,159,36,16,1,2,13,16,1,33,39,11,16,5,
-2,10,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1,
-2,13,16,0,11,16,5,2,4,88,163,8,36,37,53,37,9,223,0,33,44,
-36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,5,88,163,8,36,37,
+2,6,88,163,8,36,37,58,37,9,223,0,33,42,36,20,114,159,36,16,1,
+2,13,16,0,11,16,5,2,9,88,163,8,36,37,53,37,9,223,0,33,44,
+36,20,114,159,36,16,1,2,13,16,0,11,16,5,2,10,88,163,8,36,37,
54,37,9,223,0,33,45,36,20,114,159,36,16,1,2,13,16,0,11,16,5,
-2,9,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1,
-2,13,16,0,11,16,5,2,11,88,163,8,36,37,58,37,9,223,0,33,47,
-36,20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,3,88,163,8,
+2,3,88,163,8,36,37,56,37,9,223,0,33,46,36,20,114,159,36,16,1,
+2,13,16,0,11,16,5,2,8,88,163,8,36,37,58,37,9,223,0,33,47,
+36,20,114,159,36,16,1,2,13,16,1,33,49,11,16,5,2,5,88,163,8,
36,37,54,37,9,223,0,33,50,36,20,114,159,36,16,1,2,13,16,0,11,
16,0,94,2,16,2,17,93,2,16,9,9,36,0};
EVAL_ONE_SIZED_STR((char *)expr, 2050);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,179,0,0,0,1,0,0,8,0,21,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0,
+0,0,0,0,0,0,0,0,0,0,0,181,0,0,0,1,0,0,8,0,21,
0,26,0,43,0,55,0,77,0,106,0,150,0,156,0,165,0,172,0,187,0,
-205,0,217,0,233,0,247,0,13,1,29,1,46,1,63,1,81,1,100,1,119,
-1,135,1,152,1,167,1,206,1,240,1,2,2,14,2,21,2,34,2,47,2,
-64,2,76,2,91,2,115,2,147,2,165,2,184,2,204,2,220,2,238,2,13,
-3,27,3,44,3,88,3,96,3,101,3,145,3,152,3,162,3,177,3,186,3,
-191,3,193,3,226,3,250,3,15,4,25,4,38,4,49,4,58,4,68,4,81,
-4,91,4,97,4,142,4,147,4,159,4,162,4,166,4,190,4,229,4,232,4,
-245,4,11,5,22,5,74,5,97,5,105,5,129,5,150,5,107,6,137,6,18,
-10,41,10,58,10,6,12,109,12,123,12,27,13,215,14,224,14,233,14,247,14,
-1,15,42,16,145,16,2,17,75,17,148,17,252,17,25,18,96,18,233,18,48,
-19,2,20,153,20,239,20,35,21,132,22,236,22,42,23,229,24,253,24,29,26,
-36,26,88,26,101,26,91,27,105,27,215,27,117,28,124,28,254,29,77,30,94,
-30,212,30,177,31,237,31,244,31,124,32,178,32,197,32,147,33,163,33,183,34,
-36,36,82,36,91,36,168,37,110,38,130,38,146,38,169,38,185,38,236,38,1,
-39,21,39,41,39,98,39,77,42,140,43,43,44,59,44,211,46,84,49,99,49,
-245,50,183,51,185,51,211,51,226,51,150,53,88,54,103,54,112,54,119,54,134,
-55,149,56,44,59,156,59,14,60,28,62,234,62,10,63,140,63,0,0,170,70,
-0,0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,116,114,105,110,
-103,63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,115,101,45,112,
-97,116,104,71,114,101,114,111,111,116,45,112,97,116,104,1,20,102,105,110,100,
-45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,1,27,112,97,116,
-104,45,108,105,115,116,45,115,116,114,105,110,103,45,62,112,97,116,104,45,108,
-105,115,116,1,42,99,97,108,108,45,119,105,116,104,45,100,101,102,97,117,108,
-116,45,114,101,97,100,105,110,103,45,112,97,114,97,109,101,116,101,114,105,122,
-97,116,105,111,110,65,113,117,111,116,101,68,35,37,112,97,114,97,109,122,29,
-94,2,9,2,10,11,74,45,99,104,101,99,107,45,114,101,108,112,97,116,104,
-77,45,99,104,101,99,107,45,99,111,108,108,101,99,116,105,111,110,71,45,99,
-104,101,99,107,45,102,97,105,108,75,99,111,108,108,101,99,116,105,111,110,45,
-112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105,108,101,1,20,99,
-111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112,97,116,104,75,117,
-115,101,114,45,108,105,110,107,115,45,112,97,116,104,76,117,115,101,114,45,108,
-105,110,107,115,45,99,97,99,104,101,76,117,115,101,114,45,108,105,110,107,115,
-45,115,116,97,109,112,77,115,104,97,114,101,100,45,108,105,110,107,115,45,112,
-97,116,104,78,115,104,97,114,101,100,45,108,105,110,107,115,45,99,97,99,104,
-101,78,115,104,97,114,101,100,45,108,105,110,107,115,45,115,116,97,109,112,75,
-102,105,110,100,45,99,111,110,102,105,103,45,100,105,114,76,103,101,116,45,99,
-111,110,102,105,103,45,116,97,98,108,101,74,99,111,101,114,99,101,45,116,111,
-45,112,97,116,104,1,37,99,111,108,108,101,99,116,115,45,114,101,108,97,116,
-105,118,101,45,112,97,116,104,45,62,99,111,109,112,108,101,116,101,45,112,97,
-116,104,1,32,101,120,101,45,114,101,108,97,116,105,118,101,45,112,97,116,104,
-45,62,99,111,109,112,108,101,116,101,45,112,97,116,104,77,97,100,100,45,99,
-111,110,102,105,103,45,115,101,97,114,99,104,71,108,105,110,107,115,45,112,97,
-116,104,115,29,94,2,9,2,10,11,72,108,105,110,107,115,45,99,97,99,104,
-101,115,72,108,105,110,107,115,45,115,116,97,109,112,115,76,115,116,97,109,112,
-45,112,114,111,109,112,116,45,116,97,103,71,102,105,108,101,45,62,115,116,97,
-109,112,74,110,111,45,102,105,108,101,45,115,116,97,109,112,63,1,22,103,101,
-116,45,108,105,110,107,101,100,45,99,111,108,108,101,99,116,105,111,110,115,1,
-30,110,111,114,109,97,108,105,122,101,45,99,111,108,108,101,99,116,105,111,110,
-45,114,101,102,101,114,101,110,99,101,77,99,104,101,99,107,45,115,117,102,102,
-105,120,45,99,97,108,108,78,112,97,116,104,45,97,100,106,117,115,116,45,115,
-117,102,102,105,120,79,112,97,116,104,45,114,101,112,108,97,99,101,45,115,117,
-102,102,105,120,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,120,77,
-108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,1,29,102,105,
-110,100,45,108,105,98,114,97,114,121,45,99,111,108,108,101,99,116,105,111,110,
-45,112,97,116,104,115,73,101,109,98,101,100,100,101,100,45,108,111,97,100,76,
-110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,41,41,40,111,
-114,47,99,32,112,97,116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,
-116,101,109,63,32,112,97,116,104,45,115,116,114,105,110,103,63,41,67,119,105,
-110,100,111,119,115,6,2,2,92,49,6,41,41,40,111,114,47,99,32,112,97,
-116,104,45,115,116,114,105,110,103,63,32,112,97,116,104,45,102,111,114,45,115,
-111,109,101,45,115,121,115,116,101,109,63,41,6,4,4,112,97,116,104,5,8,
-92,92,63,92,82,69,76,92,6,12,12,112,97,116,104,45,115,116,114,105,110,
-103,63,68,114,101,108,97,116,105,118,101,64,108,111,111,112,5,0,6,30,30,
-40,112,114,111,99,101,100,117,114,101,45,97,114,105,116,121,45,105,110,99,108,
-117,100,101,115,47,99,32,48,41,6,21,21,105,110,118,97,108,105,100,32,114,
-101,108,97,116,105,118,101,32,112,97,116,104,6,18,18,40,97,110,121,47,99,
-32,46,32,45,62,32,46,32,97,110,121,41,69,97,100,100,111,110,45,100,105,
-114,6,10,10,108,105,110,107,115,46,114,107,116,100,70,99,111,110,102,105,103,
-45,100,105,114,68,111,114,105,103,45,100,105,114,69,101,120,101,99,45,102,105,
-108,101,72,99,111,108,108,101,99,116,115,45,100,105,114,69,102,115,45,99,104,
-97,110,103,101,65,101,114,114,111,114,6,42,42,101,114,114,111,114,32,114,101,
-97,100,105,110,103,32,99,111,108,108,101,99,116,105,111,110,32,108,105,110,107,
-115,32,102,105,108,101,32,126,115,58,32,126,97,64,114,111,111,116,71,115,116,
-97,116,105,99,45,114,111,111,116,6,0,0,6,1,1,47,6,21,21,40,111,
-114,47,99,32,115,116,114,105,110,103,63,32,98,121,116,101,115,63,41,6,36,
-36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,
-116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,1,95,5,11,
-80,76,84,67,79,76,76,69,67,84,83,1,20,99,111,108,108,101,99,116,115,
-45,115,101,97,114,99,104,45,100,105,114,115,6,8,8,99,111,108,108,101,99,
-116,115,27,248,22,154,15,23,195,2,28,23,193,2,192,86,94,23,193,1,28,
-248,22,148,7,23,195,2,27,248,22,177,15,23,196,2,28,23,193,2,192,86,
-94,23,193,1,248,22,178,15,23,196,1,11,0,21,35,114,120,34,94,91,92,
-92,93,91,92,92,93,91,63,93,91,92,92,93,34,0,6,35,114,120,34,47,
-34,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,92,92,
-93,42,36,34,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,
-42,41,36,34,86,94,28,28,248,22,155,15,23,195,2,10,28,248,22,154,15,
-23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,10,
-248,22,178,15,23,195,2,11,12,250,22,172,11,2,46,2,47,23,197,2,28,
-28,248,22,155,15,23,195,2,249,22,163,9,248,22,156,15,23,197,2,2,48,
-249,22,163,9,247,22,175,8,2,48,27,28,248,22,148,7,23,196,2,23,195,
-2,248,22,160,8,248,22,159,15,23,197,2,28,249,22,149,16,2,80,23,195,
-2,86,94,23,193,1,28,248,22,148,7,23,196,2,248,22,162,15,23,196,1,
-194,27,248,22,187,7,23,195,1,249,22,163,15,248,22,163,8,250,22,157,16,
-2,81,28,249,22,149,16,2,82,23,201,2,23,199,1,250,22,157,16,2,83,
-23,202,1,2,49,80,159,44,37,38,2,48,28,248,22,148,7,23,195,2,248,
-22,162,15,23,195,1,193,0,28,35,114,120,34,94,92,92,92,92,92,92,92,
-92,91,63,93,92,92,92,92,85,78,67,92,92,92,92,34,86,95,28,28,28,
-248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,
-23,195,2,10,248,22,178,15,23,195,2,11,10,248,22,155,15,23,195,2,12,
-252,22,172,11,2,5,2,50,36,23,199,2,23,200,2,28,28,28,248,22,154,
-15,23,196,2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,
-10,248,22,178,15,23,196,2,11,10,248,22,155,15,23,196,2,12,252,22,172,
-11,2,5,2,50,37,23,199,2,23,200,2,27,28,248,22,155,15,23,196,2,
-248,22,156,15,23,196,2,247,22,157,15,86,95,28,28,248,22,179,15,23,196,
-2,10,249,22,163,9,247,22,157,15,23,195,2,12,253,22,174,11,2,5,6,
-54,54,112,97,116,104,32,105,115,32,110,111,116,32,99,111,109,112,108,101,116,
-101,32,97,110,100,32,110,111,116,32,116,104,101,32,112,108,97,116,102,111,114,
-109,39,115,32,99,111,110,118,101,110,116,105,111,110,2,51,23,201,2,6,24,
-24,112,108,97,116,102,111,114,109,32,99,111,110,118,101,110,116,105,111,110,32,
-116,121,112,101,247,22,157,15,28,249,22,163,9,28,248,22,155,15,23,199,2,
-248,22,156,15,23,199,2,247,22,157,15,23,195,2,12,253,22,174,11,2,5,
-6,37,37,103,105,118,101,110,32,112,97,116,104,115,32,117,115,101,32,100,105,
-102,102,101,114,101,110,116,32,99,111,110,118,101,110,116,105,111,110,115,2,51,
-23,201,2,6,9,9,114,111,111,116,32,112,97,116,104,23,202,2,27,27,248,
-22,183,15,28,248,22,179,15,23,199,2,23,198,1,248,22,180,15,23,199,1,
-86,94,28,28,248,22,155,15,23,194,2,10,28,248,22,154,15,23,194,2,10,
-28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,10,248,22,178,15,
-23,194,2,11,12,250,22,172,11,2,46,2,47,23,196,2,28,28,248,22,155,
-15,23,194,2,249,22,163,9,248,22,156,15,23,196,2,2,48,249,22,163,9,
-247,22,175,8,2,48,27,28,248,22,148,7,23,195,2,23,194,2,248,22,160,
-8,248,22,159,15,23,196,2,28,249,22,149,16,2,80,23,195,2,86,94,23,
-193,1,28,248,22,148,7,23,195,2,248,22,162,15,23,195,1,193,27,248,22,
-187,7,23,195,1,249,22,163,15,248,22,163,8,250,22,157,16,2,81,28,249,
-22,149,16,2,82,23,201,2,23,199,1,250,22,157,16,2,83,23,202,1,2,
-49,80,159,47,37,38,2,48,28,248,22,148,7,23,194,2,248,22,162,15,23,
-194,1,192,27,248,22,159,15,23,195,2,28,249,22,163,9,23,197,2,64,117,
-110,105,120,28,249,22,145,8,23,195,1,5,1,47,86,95,23,195,1,23,194,
-1,28,248,22,155,15,23,199,2,197,248,22,162,15,23,199,1,249,22,172,15,
-23,200,1,249,22,163,15,249,22,148,8,248,22,159,15,23,201,1,37,23,199,
-1,28,249,22,163,9,23,197,2,2,48,249,22,172,15,23,200,1,249,22,163,
-15,28,249,22,149,16,0,27,35,114,120,34,94,92,92,92,92,92,92,92,92,
-91,63,93,92,92,92,92,91,97,45,122,93,58,34,23,199,2,251,22,149,8,
-2,52,250,22,148,8,23,204,2,40,41,5,1,92,249,22,148,8,23,203,1,
-42,28,249,22,149,16,2,85,23,199,2,249,22,149,8,2,52,249,22,148,8,
-23,201,1,40,28,249,22,149,16,2,85,23,199,2,249,22,149,8,2,52,249,
-22,148,8,23,201,1,40,28,249,22,149,16,0,14,35,114,120,34,94,92,92,
-92,92,92,92,92,92,34,23,199,2,249,22,149,8,5,4,85,78,67,92,249,
-22,148,8,23,201,1,38,28,249,22,149,16,0,12,35,114,120,34,94,91,97,
-45,122,93,58,34,23,199,2,249,22,149,8,250,22,148,8,23,202,2,36,37,
-249,22,148,8,23,201,1,38,86,94,23,197,1,12,23,199,1,12,32,87,88,
-163,8,36,39,53,11,70,102,111,117,110,100,45,101,120,101,99,222,33,90,32,
-88,88,163,8,36,40,58,11,64,110,101,120,116,222,33,89,27,248,22,181,15,
-23,196,2,28,249,22,165,9,23,195,2,23,197,1,11,28,248,22,177,15,23,
-194,2,27,249,22,172,15,23,197,1,23,196,1,28,23,197,2,90,159,39,11,
-89,161,39,36,11,248,22,175,15,23,197,2,86,95,23,195,1,23,194,1,27,
-28,23,202,2,27,248,22,181,15,23,199,2,28,249,22,165,9,23,195,2,23,
-200,2,11,28,248,22,177,15,23,194,2,250,2,87,23,205,2,23,206,2,249,
-22,172,15,23,200,2,23,198,1,250,2,87,23,205,2,23,206,2,23,196,1,
-11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,15,23,196,2,27,
-249,22,172,15,23,198,2,23,205,2,28,28,248,22,167,15,193,10,248,22,166,
-15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,203,2,11,27,
-248,22,181,15,23,200,2,28,249,22,165,9,23,195,2,23,201,1,11,28,248,
-22,177,15,23,194,2,250,2,87,23,206,1,23,207,1,249,22,172,15,23,201,
-1,23,198,1,250,2,87,205,206,195,192,86,94,23,194,1,28,23,196,2,90,
-159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,95,23,195,1,23,
-194,1,27,28,23,201,2,27,248,22,181,15,23,199,2,28,249,22,165,9,23,
-195,2,23,200,2,11,28,248,22,177,15,23,194,2,250,2,87,23,204,2,23,
-205,2,249,22,172,15,23,200,2,23,198,1,250,2,87,23,204,2,23,205,2,
-23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,15,23,
-196,2,27,249,22,172,15,23,198,2,23,204,2,28,28,248,22,167,15,193,10,
-248,22,166,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,23,202,
-2,11,27,248,22,181,15,23,200,2,28,249,22,165,9,23,195,2,23,201,1,
-11,28,248,22,177,15,23,194,2,250,2,87,23,205,1,23,206,1,249,22,172,
-15,23,201,1,23,198,1,250,2,87,204,205,195,192,28,23,193,2,90,159,39,
-11,89,161,39,36,11,248,22,175,15,23,199,2,86,95,23,195,1,23,194,1,
-27,28,23,198,2,251,2,88,23,198,2,23,203,2,23,201,2,23,202,2,11,
-28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,15,195,27,249,22,172,
-15,197,200,28,28,248,22,167,15,193,10,248,22,166,15,193,192,11,11,28,192,
-192,28,198,11,251,2,88,198,203,201,202,194,32,91,88,163,8,36,40,58,11,
-2,55,222,33,92,28,248,22,87,23,197,2,11,27,248,22,180,15,248,22,80,
-23,199,2,27,249,22,172,15,23,196,1,23,197,2,28,248,22,166,15,23,194,
-2,250,2,87,198,199,195,86,94,23,193,1,27,248,22,81,23,200,1,28,248,
-22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196,2,27,249,22,172,
-15,23,196,1,23,200,2,28,248,22,166,15,23,194,2,250,2,87,201,202,195,
-86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,
-248,22,180,15,248,22,80,195,27,249,22,172,15,23,196,1,202,28,248,22,166,
-15,193,250,2,87,204,205,195,251,2,91,204,205,206,248,22,81,199,86,95,28,
+205,0,217,0,233,0,247,0,13,1,29,1,46,1,69,1,84,1,123,1,157,
+1,175,1,191,1,198,1,210,1,226,1,243,1,4,2,17,2,30,2,47,2,
+59,2,74,2,98,2,130,2,148,2,167,2,187,2,203,2,221,2,252,2,10,
+3,27,3,71,3,79,3,84,3,128,3,135,3,145,3,160,3,169,3,174,3,
+176,3,209,3,233,3,254,3,9,4,18,4,28,4,46,4,59,4,72,4,82,
+4,92,4,98,4,143,4,148,4,160,4,163,4,167,4,191,4,230,4,233,4,
+246,4,12,5,23,5,75,5,98,5,106,5,130,5,151,5,108,6,138,6,19,
+10,42,10,59,10,7,12,110,12,124,12,28,13,216,14,225,14,234,14,248,14,
+2,15,43,16,146,16,3,17,76,17,149,17,253,17,26,18,97,18,234,18,49,
+19,3,20,154,20,240,20,36,21,49,21,60,21,157,22,5,23,67,23,254,24,
+22,25,81,26,88,26,140,26,153,26,143,27,157,27,11,28,169,28,176,28,50,
+30,127,30,144,30,246,30,168,31,228,31,235,31,115,32,169,32,188,32,138,33,
+154,33,152,34,217,35,0,36,9,36,86,37,25,38,45,38,61,38,84,38,100,
+38,151,38,172,38,192,38,212,38,13,39,248,41,17,43,176,43,192,43,88,46,
+217,48,232,48,122,50,60,51,62,51,88,51,103,51,27,53,221,53,236,53,245,
+53,252,53,9,55,22,56,169,58,42,59,173,59,202,61,152,62,184,62,58,63,
+0,0,90,70,0,0,67,35,37,117,116,105,108,115,72,112,97,116,104,45,115,
+116,114,105,110,103,63,64,98,115,98,115,76,110,111,114,109,97,108,45,99,97,
+115,101,45,112,97,116,104,71,114,101,114,111,111,116,45,112,97,116,104,1,20,
+102,105,110,100,45,101,120,101,99,117,116,97,98,108,101,45,112,97,116,104,1,
+27,112,97,116,104,45,108,105,115,116,45,115,116,114,105,110,103,45,62,112,97,
+116,104,45,108,105,115,116,1,42,99,97,108,108,45,119,105,116,104,45,100,101,
+102,97,117,108,116,45,114,101,97,100,105,110,103,45,112,97,114,97,109,101,116,
+101,114,105,122,97,116,105,111,110,65,113,117,111,116,101,68,35,37,112,97,114,
+97,109,122,29,94,2,9,2,10,11,74,45,99,104,101,99,107,45,114,101,108,
+112,97,116,104,77,45,99,104,101,99,107,45,99,111,108,108,101,99,116,105,111,
+110,71,45,99,104,101,99,107,45,102,97,105,108,75,99,111,108,108,101,99,116,
+105,111,110,45,112,97,116,104,73,102,105,110,100,45,99,111,108,45,102,105,108,
+101,1,20,99,111,108,108,101,99,116,105,111,110,45,102,105,108,101,45,112,97,
+116,104,75,102,105,110,100,45,99,111,110,102,105,103,45,100,105,114,76,103,101,
+116,45,99,111,110,102,105,103,45,116,97,98,108,101,1,21,103,101,116,45,105,
+110,115,116,97,108,108,97,116,105,111,110,45,110,97,109,101,74,99,111,101,114,
+99,101,45,116,111,45,112,97,116,104,1,37,99,111,108,108,101,99,116,115,45,
+114,101,108,97,116,105,118,101,45,112,97,116,104,45,62,99,111,109,112,108,101,
+116,101,45,112,97,116,104,1,32,101,120,101,45,114,101,108,97,116,105,118,101,
+45,112,97,116,104,45,62,99,111,109,112,108,101,116,101,45,112,97,116,104,77,
+97,100,100,45,99,111,110,102,105,103,45,115,101,97,114,99,104,75,97,108,108,
+45,108,105,110,107,115,45,112,97,116,104,115,29,94,2,9,2,10,11,71,108,
+105,110,107,115,45,112,97,116,104,115,75,117,115,101,114,45,108,105,110,107,115,
+45,112,97,116,104,76,117,115,101,114,45,108,105,110,107,115,45,99,97,99,104,
+101,76,117,115,101,114,45,108,105,110,107,115,45,115,116,97,109,112,72,108,105,
+110,107,115,45,99,97,99,104,101,115,72,108,105,110,107,115,45,115,116,97,109,
+112,115,76,115,116,97,109,112,45,112,114,111,109,112,116,45,116,97,103,71,102,
+105,108,101,45,62,115,116,97,109,112,74,110,111,45,102,105,108,101,45,115,116,
+97,109,112,63,1,22,103,101,116,45,108,105,110,107,101,100,45,99,111,108,108,
+101,99,116,105,111,110,115,1,30,110,111,114,109,97,108,105,122,101,45,99,111,
+108,108,101,99,116,105,111,110,45,114,101,102,101,114,101,110,99,101,77,99,104,
+101,99,107,45,115,117,102,102,105,120,45,99,97,108,108,78,112,97,116,104,45,
+97,100,106,117,115,116,45,115,117,102,102,105,120,79,112,97,116,104,45,114,101,
+112,108,97,99,101,45,115,117,102,102,105,120,75,112,97,116,104,45,97,100,100,
+45,115,117,102,102,105,120,77,108,111,97,100,47,117,115,101,45,99,111,109,112,
+105,108,101,100,1,29,102,105,110,100,45,108,105,98,114,97,114,121,45,99,111,
+108,108,101,99,116,105,111,110,45,112,97,116,104,115,73,101,109,98,101,100,100,
+101,100,45,108,111,97,100,76,110,111,114,109,97,108,45,112,97,116,104,45,99,
+97,115,101,6,41,41,40,111,114,47,99,32,112,97,116,104,45,102,111,114,45,
+115,111,109,101,45,115,121,115,116,101,109,63,32,112,97,116,104,45,115,116,114,
+105,110,103,63,41,67,119,105,110,100,111,119,115,6,2,2,92,49,6,41,41,
+40,111,114,47,99,32,112,97,116,104,45,115,116,114,105,110,103,63,32,112,97,
+116,104,45,102,111,114,45,115,111,109,101,45,115,121,115,116,101,109,63,41,6,
+4,4,112,97,116,104,5,8,92,92,63,92,82,69,76,92,6,12,12,112,97,
+116,104,45,115,116,114,105,110,103,63,68,114,101,108,97,116,105,118,101,64,108,
+111,111,112,5,0,6,30,30,40,112,114,111,99,101,100,117,114,101,45,97,114,
+105,116,121,45,105,110,99,108,117,100,101,115,47,99,32,48,41,6,21,21,105,
+110,118,97,108,105,100,32,114,101,108,97,116,105,118,101,32,112,97,116,104,6,
+18,18,40,97,110,121,47,99,32,46,32,45,62,32,46,32,97,110,121,41,70,
+99,111,110,102,105,103,45,100,105,114,68,111,114,105,103,45,100,105,114,69,101,
+120,101,99,45,102,105,108,101,77,105,110,115,116,97,108,108,97,116,105,111,110,
+45,110,97,109,101,72,99,111,108,108,101,99,116,115,45,100,105,114,6,10,10,
+108,105,110,107,115,46,114,107,116,100,69,97,100,100,111,110,45,100,105,114,69,
+102,115,45,99,104,97,110,103,101,65,101,114,114,111,114,6,42,42,101,114,114,
+111,114,32,114,101,97,100,105,110,103,32,99,111,108,108,101,99,116,105,111,110,
+32,108,105,110,107,115,32,102,105,108,101,32,126,115,58,32,126,97,64,114,111,
+111,116,71,115,116,97,116,105,99,45,114,111,111,116,6,0,0,6,1,1,47,
+6,21,21,40,111,114,47,99,32,115,116,114,105,110,103,63,32,98,121,116,101,
+115,63,41,6,36,36,99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,
+102,102,105,120,32,116,111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,
+5,1,95,5,11,80,76,84,67,79,76,76,69,67,84,83,1,20,99,111,108,
+108,101,99,116,115,45,115,101,97,114,99,104,45,100,105,114,115,6,8,8,99,
+111,108,108,101,99,116,115,27,248,22,154,15,23,195,2,28,23,193,2,192,86,
+94,23,193,1,28,248,22,148,7,23,195,2,27,248,22,177,15,23,196,2,28,
+23,193,2,192,86,94,23,193,1,248,22,178,15,23,196,1,11,0,21,35,114,
+120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,34,0,6,
+35,114,120,34,47,34,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,
+43,91,47,92,92,93,42,36,34,0,19,35,114,120,34,91,32,46,93,43,40,
+91,47,92,92,93,42,41,36,34,86,94,28,28,248,22,155,15,23,195,2,10,
28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,
-15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,2,6,2,
-53,23,197,2,28,28,23,195,2,28,28,248,22,154,15,23,196,2,10,28,248,
-22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,
-2,11,248,22,177,15,23,196,2,11,10,12,250,22,172,11,2,6,6,45,45,
-40,111,114,47,99,32,35,102,32,40,97,110,100,47,99,32,112,97,116,104,45,
-115,116,114,105,110,103,63,32,114,101,108,97,116,105,118,101,45,112,97,116,104,
-63,41,41,23,198,2,28,28,248,22,177,15,23,195,2,90,159,39,11,89,161,
-39,36,11,248,22,175,15,23,198,2,249,22,163,9,194,2,54,11,27,249,22,
-170,8,247,22,169,8,5,4,80,65,84,72,27,28,23,194,2,249,80,158,40,
-41,249,22,160,8,23,198,1,7,63,9,86,94,23,194,1,9,27,28,249,22,
-163,9,247,22,175,8,2,48,249,22,79,248,22,163,15,5,1,46,23,196,1,
-23,194,1,28,248,22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196,
-2,27,249,22,172,15,23,196,1,23,201,2,28,248,22,166,15,23,194,2,250,
-2,87,202,203,195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,
-23,194,2,11,27,248,22,180,15,248,22,80,23,196,2,27,249,22,172,15,23,
-196,1,23,204,2,28,248,22,166,15,23,194,2,250,2,87,205,206,195,86,94,
-23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,11,27,248,22,
-180,15,248,22,80,195,27,249,22,172,15,23,196,1,206,28,248,22,166,15,193,
-250,2,87,23,16,23,17,195,251,2,91,23,16,23,17,23,18,248,22,81,199,
-27,248,22,180,15,23,196,1,28,248,22,166,15,193,250,2,87,198,199,195,11,
-250,80,159,39,40,39,196,197,11,250,80,159,39,40,39,196,11,11,32,96,88,
-163,8,36,39,57,11,2,55,222,33,98,0,8,35,114,120,35,34,92,34,34,
-27,249,22,145,16,23,197,2,23,198,2,28,23,193,2,86,94,23,196,1,27,
-248,22,101,23,195,2,27,27,248,22,110,23,197,1,27,249,22,145,16,23,201,
-2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,101,23,195,2,27,
-250,2,96,23,203,2,23,204,1,248,22,110,23,199,1,28,249,22,145,8,23,
-196,2,2,56,249,22,93,23,202,2,194,249,22,79,248,22,163,15,28,249,22,
-163,9,247,22,175,8,2,48,250,22,157,16,2,97,23,200,1,2,56,23,197,
-1,194,86,95,23,199,1,23,193,1,28,249,22,145,8,23,196,2,2,56,249,
-22,93,23,200,2,9,249,22,79,248,22,163,15,28,249,22,163,9,247,22,175,
-8,2,48,250,22,157,16,2,97,23,200,1,2,56,23,197,1,9,28,249,22,
-145,8,23,196,2,2,56,249,22,93,197,194,86,94,23,196,1,249,22,79,248,
-22,163,15,28,249,22,163,9,247,22,175,8,2,48,250,22,157,16,2,97,23,
-200,1,2,56,23,197,1,194,86,94,23,193,1,28,249,22,145,8,23,198,2,
-2,56,249,22,93,195,9,86,94,23,194,1,249,22,79,248,22,163,15,28,249,
-22,163,9,247,22,175,8,2,48,250,22,157,16,2,97,23,202,1,2,56,23,
-199,1,9,86,95,28,28,248,22,137,8,194,10,248,22,148,7,194,12,250,22,
-172,11,2,7,6,21,21,40,111,114,47,99,32,98,121,116,101,115,63,32,115,
-116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22,4,22,154,15,196,
-11,12,250,22,172,11,2,7,6,14,14,40,108,105,115,116,111,102,32,112,97,
-116,104,63,41,197,250,2,96,197,195,28,248,22,148,7,197,248,22,162,8,197,
-196,28,28,248,22,0,23,195,2,249,22,50,23,196,2,36,11,20,13,159,80,
-159,36,43,37,26,29,80,159,8,29,44,37,249,22,33,11,80,159,8,31,43,
-37,22,188,14,10,22,189,14,10,22,190,14,10,22,129,15,10,22,128,15,11,
-22,130,15,10,22,191,14,10,22,131,15,10,22,132,15,10,22,133,15,10,22,
-134,15,10,22,135,15,11,22,136,15,10,22,186,14,11,247,23,194,1,250,22,
-172,11,2,8,2,57,23,197,1,86,94,28,28,248,22,154,15,23,195,2,10,
-28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,10,248,22,178,15,
-23,195,2,11,12,250,22,172,11,23,196,2,2,53,23,197,2,28,248,22,177,
-15,23,195,2,12,251,22,174,11,23,197,1,2,58,2,51,23,198,1,86,94,
-28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,
-177,15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,23,196,
-2,2,53,23,197,2,28,248,22,177,15,23,195,2,12,251,22,174,11,23,197,
-1,2,58,2,51,23,198,1,86,94,86,94,28,28,248,22,154,15,23,195,2,
-10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,10,248,22,178,
-15,23,195,2,11,12,250,22,172,11,23,196,2,2,53,23,197,2,28,248,22,
-177,15,23,195,2,86,94,23,194,1,12,251,22,174,11,23,197,2,2,58,2,
-51,23,198,1,249,22,3,20,20,94,88,163,8,36,37,47,11,9,223,2,33,
-102,23,195,1,23,197,1,28,28,248,22,0,23,195,2,249,22,50,23,196,2,
-37,11,12,250,22,172,11,23,196,1,2,59,23,197,1,86,94,28,28,248,22,
-154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,
-2,10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,15,2,53,23,196,
-2,28,248,22,177,15,23,194,2,12,251,22,174,11,2,15,2,58,2,51,23,
-197,1,86,95,86,94,86,94,28,28,248,22,154,15,23,196,2,10,28,248,22,
-148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,
-11,12,250,22,172,11,2,15,2,53,23,198,2,28,248,22,177,15,23,196,2,
-12,251,22,174,11,2,15,2,58,2,51,23,199,2,249,22,3,32,0,88,163,
-8,36,37,46,11,9,222,33,105,23,198,2,28,28,248,22,0,23,195,2,249,
-22,50,23,196,2,37,11,12,250,22,172,11,2,15,2,59,23,197,2,251,80,
-158,40,49,23,198,1,23,199,1,23,200,1,11,86,94,28,28,248,22,154,15,
-23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,10,
-248,22,178,15,23,194,2,11,12,250,22,172,11,2,17,2,53,23,196,2,28,
-248,22,177,15,23,194,2,12,251,22,174,11,2,17,2,58,2,51,23,197,1,
-86,96,86,94,28,28,248,22,154,15,23,196,2,10,28,248,22,148,7,23,196,
-2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,11,12,250,22,
-172,11,2,17,2,53,23,198,2,28,248,22,177,15,23,196,2,12,251,22,174,
-11,2,17,2,58,2,51,23,199,2,86,94,86,94,28,28,248,22,154,15,23,
-197,2,10,28,248,22,148,7,23,197,2,28,248,22,177,15,23,197,2,10,248,
-22,178,15,23,197,2,11,12,250,22,172,11,2,17,2,53,23,199,2,28,248,
-22,177,15,23,197,2,12,251,22,174,11,2,17,2,58,2,51,23,200,2,249,
-22,3,32,0,88,163,8,36,37,46,11,9,222,33,107,23,199,2,28,28,248,
-22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,172,11,2,17,2,
-59,23,197,2,251,80,158,40,49,23,198,1,23,200,1,23,201,1,23,199,1,
-27,248,22,131,16,2,62,28,248,22,179,15,23,194,2,192,27,28,248,22,177,
-15,23,195,2,20,13,159,80,159,38,43,37,250,80,159,41,44,37,249,22,33,
-11,80,159,43,43,37,22,132,16,248,22,131,16,2,63,27,248,22,131,16,2,
-64,250,80,159,42,40,39,23,196,1,23,198,2,11,11,28,23,193,2,192,86,
-94,23,193,1,27,249,22,180,15,27,248,22,131,16,2,64,250,80,159,45,40,
-39,23,196,1,11,11,248,22,131,16,2,63,90,159,39,11,89,161,39,36,11,
-248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,249,22,180,15,23,200,
-1,23,195,1,20,13,159,80,159,36,43,37,26,29,80,159,8,29,44,37,249,
-22,33,11,80,159,8,31,43,37,22,188,14,10,22,189,14,10,22,190,14,10,
-22,129,15,10,22,128,15,11,22,130,15,10,22,191,14,10,22,131,15,10,22,
-132,15,10,22,133,15,10,22,134,15,10,22,135,15,11,22,136,15,10,22,186,
-14,11,247,22,143,6,27,249,22,172,15,23,197,1,6,11,11,99,111,110,102,
-105,103,46,114,107,116,100,27,28,248,22,166,15,23,195,2,249,22,135,6,23,
-196,1,80,159,40,8,44,39,11,28,192,192,21,17,1,0,28,248,22,148,7,
-23,195,2,27,248,22,162,15,23,196,1,28,248,22,179,15,23,194,2,192,249,
-22,180,15,23,195,1,27,27,248,22,131,16,2,65,28,248,22,179,15,23,194,
-2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,15,
-250,80,159,48,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,
-80,159,44,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,192,86,
-94,23,193,1,248,22,131,16,2,63,28,248,22,137,8,23,195,2,27,248,22,
-163,15,23,196,1,28,248,22,179,15,23,194,2,192,249,22,180,15,23,195,1,
-27,27,248,22,131,16,2,65,28,248,22,179,15,23,194,2,192,28,248,22,178,
-15,23,194,2,249,22,180,15,23,195,1,249,22,180,15,250,80,159,48,40,39,
-248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,80,159,44,40,39,248,
-22,131,16,2,64,23,196,1,10,28,23,193,2,192,86,94,23,193,1,248,22,
-131,16,2,63,28,248,22,154,15,23,195,2,28,248,22,179,15,23,195,2,193,
-249,22,180,15,23,196,1,27,27,248,22,131,16,2,65,28,248,22,179,15,23,
-194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,
-15,250,80,159,47,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,
-250,80,159,43,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,192,
-86,94,23,193,1,248,22,131,16,2,63,193,28,248,22,179,15,23,195,2,193,
-249,22,180,15,23,196,1,27,27,248,22,131,16,2,65,28,248,22,179,15,23,
-194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,
-15,250,80,159,47,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,
-250,80,159,43,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,192,
-86,94,23,193,1,248,22,131,16,2,63,28,248,22,179,15,23,195,2,193,28,
-248,22,178,15,23,195,2,249,22,180,15,23,196,1,249,22,180,15,250,80,159,
-43,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,80,159,39,
-40,39,248,22,131,16,2,64,196,10,28,248,22,87,23,196,2,9,28,248,22,
-80,23,196,2,249,22,79,248,80,159,39,59,39,248,22,136,18,23,199,2,27,
-248,22,137,18,23,199,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,
-2,249,22,79,248,80,159,42,59,39,248,22,136,18,23,197,2,27,248,22,137,
-18,23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,22,
-79,248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,39,
-23,204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,8,
-45,39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,199,2,27,248,22,
-137,18,23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,
-22,79,248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,
-39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,
-8,45,39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,196,2,27,248,
-22,137,18,23,199,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,
-249,22,79,248,80,159,42,59,39,248,22,136,18,23,197,2,27,248,22,137,18,
-23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,22,79,
-248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,39,23,
-204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,8,45,
-39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,199,2,27,248,22,137,
-18,23,197,1,28,248,22,87,23,194,2,9,28,248,22,80,23,194,2,249,22,
-79,248,80,159,45,59,39,248,22,136,18,23,197,2,249,80,159,46,8,45,39,
-23,204,1,248,22,137,18,23,198,1,249,22,93,23,202,2,249,80,159,46,8,
-45,39,23,204,1,248,22,137,18,23,198,1,27,250,22,157,2,23,198,1,23,
-199,1,11,28,192,249,80,159,39,8,45,39,198,194,196,27,27,248,22,131,16,
-2,62,28,248,22,179,15,23,194,2,192,27,28,248,22,177,15,23,195,2,20,
-13,159,80,159,39,43,37,250,80,159,42,44,37,249,22,33,11,80,159,44,43,
-37,22,132,16,248,22,131,16,2,63,27,248,22,131,16,2,64,250,80,159,43,
-40,39,23,196,1,23,198,2,11,11,28,23,193,2,192,86,94,23,193,1,27,
-249,22,180,15,27,248,22,131,16,2,64,250,80,159,46,40,39,23,196,1,11,
-11,248,22,131,16,2,63,90,159,39,11,89,161,39,36,11,248,22,175,15,23,
-197,1,86,95,23,195,1,23,194,1,249,22,180,15,23,200,1,23,195,1,27,
-248,80,159,39,58,39,23,195,1,27,248,80,159,40,59,39,27,250,22,157,2,
-23,199,2,70,108,105,110,107,115,45,102,105,108,101,11,28,23,193,2,192,86,
-94,23,193,1,249,22,172,15,27,250,22,157,2,23,202,2,69,115,104,97,114,
-101,45,100,105,114,11,28,23,193,2,192,86,94,23,193,1,249,22,172,15,62,
-117,112,6,5,5,115,104,97,114,101,2,61,248,22,186,8,250,80,159,43,8,
-26,39,23,198,1,78,108,105,110,107,115,45,115,101,97,114,99,104,45,102,105,
-108,101,115,248,22,89,23,198,1,248,22,162,13,23,194,1,249,22,16,80,159,
-38,8,31,38,28,248,22,182,12,23,197,2,86,94,23,196,1,32,0,88,163,
-8,36,36,41,11,9,222,11,20,20,94,88,163,8,36,36,43,11,9,223,3,
-33,118,23,196,1,32,120,88,163,36,37,56,11,2,55,222,33,121,90,159,39,
-11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,
-28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,
-195,1,32,0,88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,161,39,
-36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,
-15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,
-88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,
-175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,
-28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,
-36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,
-1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,
-15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,
-222,11,248,2,120,23,194,1,11,11,11,11,32,122,88,163,8,36,37,55,11,
-2,55,222,33,123,27,249,22,158,6,8,128,128,23,196,2,28,248,22,143,7,
-23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,199,2,
-28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,
-128,128,23,202,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,
-249,22,158,6,8,128,128,23,205,2,28,248,22,143,7,23,194,2,9,249,22,
-79,23,195,1,248,2,122,23,206,1,27,249,22,158,6,8,128,128,23,196,2,
-28,248,22,137,8,23,194,2,28,249,22,129,4,248,22,142,8,23,196,2,8,
-128,128,249,22,1,22,149,8,249,22,79,23,197,1,27,249,22,158,6,8,128,
-128,23,201,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,
-22,158,6,8,128,128,23,204,2,28,248,22,143,7,23,194,2,9,249,22,79,
-23,195,1,27,249,22,158,6,8,128,128,23,207,2,28,248,22,143,7,23,194,
-2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,210,2,28,248,
-22,143,7,23,194,2,9,249,22,79,23,195,1,248,2,122,23,211,1,192,192,
-248,22,128,6,23,194,1,20,13,159,80,159,37,8,33,37,80,159,37,8,46,
-39,27,28,249,22,183,8,248,22,175,8,2,66,38,90,159,39,11,89,161,39,
-36,11,248,22,175,15,23,198,2,86,95,23,195,1,23,194,1,28,248,22,154,
-15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,
-88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,
-175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,
-28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,
-36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,
-1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,
-15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,
-222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,
-195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,
-249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,248,2,
-120,23,194,1,11,11,11,11,11,28,248,22,166,15,23,195,2,27,28,249,22,
-183,8,248,22,175,8,2,66,38,249,22,140,6,23,197,2,32,0,88,163,8,
-36,36,41,11,9,222,11,11,86,94,28,23,194,2,248,22,142,6,23,195,1,
-86,94,23,194,1,12,249,22,79,27,248,22,183,5,23,199,1,250,22,46,22,
-37,88,163,36,36,8,24,11,9,223,3,33,124,20,20,94,88,163,36,36,43,
-11,9,223,3,33,125,23,196,1,194,249,22,79,11,194,28,28,23,195,2,28,
-248,22,81,23,196,2,248,22,161,9,249,22,157,14,36,248,22,137,18,23,199,
-2,11,11,194,86,94,23,195,1,249,22,14,20,20,94,88,163,8,32,36,58,
-16,4,36,8,240,0,128,0,0,8,240,2,64,0,0,36,9,224,2,3,33,
-126,23,196,1,80,159,38,8,31,38,27,248,22,161,9,194,28,192,192,248,22,
-161,9,248,22,80,195,86,94,28,248,22,139,12,23,199,2,27,247,22,131,12,
-28,249,22,187,11,23,195,2,2,67,251,22,191,11,23,197,1,2,67,250,22,
-132,8,2,68,28,23,202,1,86,95,23,204,1,23,203,1,80,159,48,51,38,
-28,23,203,1,86,94,23,204,1,80,159,48,54,38,249,22,183,8,80,159,50,
-8,27,38,23,206,1,248,22,135,12,23,207,2,247,22,29,12,12,28,248,22,
-139,12,23,199,2,86,94,23,198,1,248,23,194,1,247,22,137,2,197,86,95,
-28,248,22,139,12,23,200,2,27,247,22,131,12,28,249,22,187,11,23,195,2,
-2,67,251,22,191,11,23,197,1,2,67,250,22,132,8,2,68,28,23,203,2,
-80,159,49,51,38,28,23,204,2,80,159,49,54,38,249,22,183,8,80,159,51,
-8,27,38,23,207,2,248,22,135,12,23,208,2,247,22,29,12,12,28,23,193,
-2,28,23,195,1,86,95,23,197,1,23,196,1,86,94,20,18,159,11,80,158,
-41,52,247,22,137,2,20,18,159,11,80,158,41,53,23,193,1,28,23,196,1,
-86,94,23,197,1,86,94,20,18,159,11,80,158,41,55,247,22,137,2,20,18,
-159,11,80,158,41,56,23,193,1,86,94,250,22,184,8,80,159,44,8,29,38,
-23,200,2,247,22,137,2,250,22,184,8,80,159,44,8,30,38,23,200,1,23,
-196,1,86,94,23,195,1,12,28,248,22,139,12,23,200,2,86,94,23,199,1,
-248,23,195,1,247,22,137,2,198,20,20,94,248,22,143,6,23,194,2,28,248,
-22,143,7,248,22,143,6,23,195,1,12,248,22,168,11,6,30,30,101,120,112,
-101,99,116,101,100,32,97,32,115,105,110,103,108,101,32,83,45,101,120,112,114,
-101,115,115,105,111,110,248,22,128,6,23,194,1,28,248,22,88,23,194,2,28,
-28,249,22,189,3,38,248,22,92,23,196,2,10,249,22,189,3,39,248,22,92,
-23,196,2,28,28,248,22,148,7,248,22,80,23,195,2,10,28,249,22,163,9,
-2,69,248,22,136,18,23,196,2,10,249,22,163,9,2,70,248,22,136,18,23,
-196,2,28,27,248,22,101,194,28,248,22,154,15,23,194,2,10,28,248,22,148,
-7,23,194,2,28,248,22,177,15,23,194,2,10,248,22,178,15,23,194,1,11,
-27,248,22,87,248,22,103,195,28,192,192,248,22,158,16,248,22,110,195,11,11,
-11,11,28,248,22,167,15,249,22,172,15,23,196,2,23,198,2,27,248,22,67,
-248,22,158,15,23,198,1,250,22,155,2,23,198,2,23,196,2,249,22,79,23,
-199,1,250,22,157,2,23,203,1,23,201,1,9,12,250,22,155,2,23,197,1,
-23,198,1,249,22,79,23,198,1,23,201,1,28,28,248,22,87,248,22,103,23,
-197,2,10,249,22,149,16,248,22,110,23,198,2,247,22,166,8,27,248,22,182,
-15,249,22,180,15,248,22,101,23,200,2,23,198,1,28,249,22,163,9,248,22,
-80,23,199,2,2,70,86,94,23,196,1,249,22,3,20,20,94,88,163,8,36,
-37,53,11,9,224,3,2,33,134,2,23,196,1,248,22,185,15,23,196,1,28,
-249,22,163,9,248,22,136,18,23,199,2,2,69,86,94,23,196,1,86,94,28,
-250,22,157,2,23,197,2,11,11,12,250,22,155,2,23,197,2,11,9,249,22,
-161,2,23,196,2,20,20,95,88,163,8,36,38,50,11,9,224,3,2,33,135,
-2,23,195,1,23,196,1,27,248,22,67,248,22,136,18,23,199,1,250,22,155,
-2,23,198,2,23,196,2,249,22,79,248,22,128,2,23,200,1,250,22,157,2,
-23,203,1,23,201,1,9,12,250,22,155,2,23,196,1,23,197,1,248,22,94,
-23,199,1,27,28,28,23,194,2,248,22,161,9,248,22,80,23,196,2,10,9,
-27,249,22,183,5,23,198,2,66,98,105,110,97,114,121,250,22,46,22,37,88,
-163,8,36,36,44,11,9,223,3,33,131,2,20,20,94,88,163,36,36,43,11,
-9,223,3,33,132,2,23,196,1,86,94,28,28,248,22,88,23,194,2,249,22,
-4,32,0,88,163,8,36,37,45,11,9,222,33,133,2,23,195,2,11,12,248,
-22,168,11,6,18,18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,
-101,110,116,27,247,22,137,2,27,90,159,39,11,89,161,39,36,11,248,22,175,
-15,23,201,1,192,86,96,249,22,3,20,20,94,88,163,8,36,37,54,11,9,
-224,2,3,33,136,2,23,195,1,23,197,1,249,22,161,2,195,88,163,8,36,
-38,48,11,9,223,3,33,137,2,28,23,198,1,86,94,20,18,159,11,80,158,
-44,52,193,20,18,159,11,80,158,44,53,195,28,23,199,1,86,94,20,18,159,
-11,80,158,44,55,193,20,18,159,11,80,158,44,56,195,86,94,250,22,184,8,
-80,159,47,8,29,38,23,203,2,196,250,22,184,8,80,159,47,8,30,38,23,
-203,1,23,199,1,193,20,13,159,80,159,39,8,33,37,88,163,36,37,57,16,
-2,8,240,0,128,0,0,8,132,32,9,227,3,2,1,0,4,33,129,2,27,
-28,23,194,2,80,159,40,51,38,28,23,195,2,80,159,40,54,38,249,22,183,
-8,80,159,42,8,27,38,23,198,2,27,28,23,195,2,80,158,41,53,28,23,
-196,2,80,158,41,56,249,22,183,8,80,159,43,8,30,38,23,199,2,27,249,
-80,159,44,8,32,39,23,197,2,23,196,2,28,249,22,165,9,23,195,2,23,
-196,1,86,96,23,200,1,23,195,1,23,193,1,28,23,196,1,80,158,42,52,
-28,23,197,1,80,158,42,55,249,22,183,8,80,159,44,8,29,38,23,200,1,
-20,13,159,80,159,42,8,33,37,20,20,94,88,163,36,37,58,16,2,8,240,
-0,128,0,0,8,240,31,104,0,0,9,228,6,5,4,3,7,0,33,130,2,
-23,200,1,27,20,20,98,88,163,8,36,36,54,16,2,36,8,240,27,96,0,
-0,9,228,7,6,5,4,3,1,33,138,2,23,194,1,23,196,1,23,197,1,
-23,198,1,23,199,1,28,28,248,22,0,23,194,2,249,22,50,23,195,2,36,
-11,20,13,159,80,159,43,43,37,26,29,80,159,8,36,44,37,249,22,33,11,
-80,159,8,38,43,37,22,188,14,10,22,189,14,10,22,190,14,10,22,129,15,
+15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,2,45,2,
+46,23,197,2,28,28,248,22,155,15,23,195,2,249,22,163,9,248,22,156,15,
+23,197,2,2,47,249,22,163,9,247,22,175,8,2,47,27,28,248,22,148,7,
+23,196,2,23,195,2,248,22,160,8,248,22,159,15,23,197,2,28,249,22,149,
+16,2,80,23,195,2,86,94,23,193,1,28,248,22,148,7,23,196,2,248,22,
+162,15,23,196,1,194,27,248,22,187,7,23,195,1,249,22,163,15,248,22,163,
+8,250,22,157,16,2,81,28,249,22,149,16,2,82,23,201,2,23,199,1,250,
+22,157,16,2,83,23,202,1,2,48,80,159,44,37,38,2,47,28,248,22,148,
+7,23,195,2,248,22,162,15,23,195,1,193,0,28,35,114,120,34,94,92,92,
+92,92,92,92,92,92,91,63,93,92,92,92,92,85,78,67,92,92,92,92,34,
+86,95,28,28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,2,
+28,248,22,177,15,23,195,2,10,248,22,178,15,23,195,2,11,10,248,22,155,
+15,23,195,2,12,252,22,172,11,2,5,2,49,36,23,199,2,23,200,2,28,
+28,28,248,22,154,15,23,196,2,10,28,248,22,148,7,23,196,2,28,248,22,
+177,15,23,196,2,10,248,22,178,15,23,196,2,11,10,248,22,155,15,23,196,
+2,12,252,22,172,11,2,5,2,49,37,23,199,2,23,200,2,27,28,248,22,
+155,15,23,196,2,248,22,156,15,23,196,2,247,22,157,15,86,95,28,28,248,
+22,179,15,23,196,2,10,249,22,163,9,247,22,157,15,23,195,2,12,253,22,
+174,11,2,5,6,54,54,112,97,116,104,32,105,115,32,110,111,116,32,99,111,
+109,112,108,101,116,101,32,97,110,100,32,110,111,116,32,116,104,101,32,112,108,
+97,116,102,111,114,109,39,115,32,99,111,110,118,101,110,116,105,111,110,2,50,
+23,201,2,6,24,24,112,108,97,116,102,111,114,109,32,99,111,110,118,101,110,
+116,105,111,110,32,116,121,112,101,247,22,157,15,28,249,22,163,9,28,248,22,
+155,15,23,199,2,248,22,156,15,23,199,2,247,22,157,15,23,195,2,12,253,
+22,174,11,2,5,6,37,37,103,105,118,101,110,32,112,97,116,104,115,32,117,
+115,101,32,100,105,102,102,101,114,101,110,116,32,99,111,110,118,101,110,116,105,
+111,110,115,2,50,23,201,2,6,9,9,114,111,111,116,32,112,97,116,104,23,
+202,2,27,27,248,22,183,15,28,248,22,179,15,23,199,2,23,198,1,248,22,
+180,15,23,199,1,86,94,28,28,248,22,155,15,23,194,2,10,28,248,22,154,
+15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,
+10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,45,2,46,23,196,2,
+28,28,248,22,155,15,23,194,2,249,22,163,9,248,22,156,15,23,196,2,2,
+47,249,22,163,9,247,22,175,8,2,47,27,28,248,22,148,7,23,195,2,23,
+194,2,248,22,160,8,248,22,159,15,23,196,2,28,249,22,149,16,2,80,23,
+195,2,86,94,23,193,1,28,248,22,148,7,23,195,2,248,22,162,15,23,195,
+1,193,27,248,22,187,7,23,195,1,249,22,163,15,248,22,163,8,250,22,157,
+16,2,81,28,249,22,149,16,2,82,23,201,2,23,199,1,250,22,157,16,2,
+83,23,202,1,2,48,80,159,47,37,38,2,47,28,248,22,148,7,23,194,2,
+248,22,162,15,23,194,1,192,27,248,22,159,15,23,195,2,28,249,22,163,9,
+23,197,2,64,117,110,105,120,28,249,22,145,8,23,195,1,5,1,47,86,95,
+23,195,1,23,194,1,28,248,22,155,15,23,199,2,197,248,22,162,15,23,199,
+1,249,22,172,15,23,200,1,249,22,163,15,249,22,148,8,248,22,159,15,23,
+201,1,37,23,199,1,28,249,22,163,9,23,197,2,2,47,249,22,172,15,23,
+200,1,249,22,163,15,28,249,22,149,16,0,27,35,114,120,34,94,92,92,92,
+92,92,92,92,92,91,63,93,92,92,92,92,91,97,45,122,93,58,34,23,199,
+2,251,22,149,8,2,51,250,22,148,8,23,204,2,40,41,5,1,92,249,22,
+148,8,23,203,1,42,28,249,22,149,16,2,85,23,199,2,249,22,149,8,2,
+51,249,22,148,8,23,201,1,40,28,249,22,149,16,2,85,23,199,2,249,22,
+149,8,2,51,249,22,148,8,23,201,1,40,28,249,22,149,16,0,14,35,114,
+120,34,94,92,92,92,92,92,92,92,92,34,23,199,2,249,22,149,8,5,4,
+85,78,67,92,249,22,148,8,23,201,1,38,28,249,22,149,16,0,12,35,114,
+120,34,94,91,97,45,122,93,58,34,23,199,2,249,22,149,8,250,22,148,8,
+23,202,2,36,37,249,22,148,8,23,201,1,38,86,94,23,197,1,12,23,199,
+1,12,32,87,88,163,8,36,39,53,11,70,102,111,117,110,100,45,101,120,101,
+99,222,33,90,32,88,88,163,8,36,40,58,11,64,110,101,120,116,222,33,89,
+27,248,22,181,15,23,196,2,28,249,22,165,9,23,195,2,23,197,1,11,28,
+248,22,177,15,23,194,2,27,249,22,172,15,23,197,1,23,196,1,28,23,197,
+2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,95,23,195,
+1,23,194,1,27,28,23,202,2,27,248,22,181,15,23,199,2,28,249,22,165,
+9,23,195,2,23,200,2,11,28,248,22,177,15,23,194,2,250,2,87,23,205,
+2,23,206,2,249,22,172,15,23,200,2,23,198,1,250,2,87,23,205,2,23,
+206,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,
+15,23,196,2,27,249,22,172,15,23,198,2,23,205,2,28,28,248,22,167,15,
+193,10,248,22,166,15,193,192,11,11,28,23,193,2,192,86,94,23,193,1,28,
+23,203,2,11,27,248,22,181,15,23,200,2,28,249,22,165,9,23,195,2,23,
+201,1,11,28,248,22,177,15,23,194,2,250,2,87,23,206,1,23,207,1,249,
+22,172,15,23,201,1,23,198,1,250,2,87,205,206,195,192,86,94,23,194,1,
+28,23,196,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,
+95,23,195,1,23,194,1,27,28,23,201,2,27,248,22,181,15,23,199,2,28,
+249,22,165,9,23,195,2,23,200,2,11,28,248,22,177,15,23,194,2,250,2,
+87,23,204,2,23,205,2,249,22,172,15,23,200,2,23,198,1,250,2,87,23,
+204,2,23,205,2,23,196,1,11,28,23,193,2,192,86,94,23,193,1,27,28,
+248,22,154,15,23,196,2,27,249,22,172,15,23,198,2,23,204,2,28,28,248,
+22,167,15,193,10,248,22,166,15,193,192,11,11,28,23,193,2,192,86,94,23,
+193,1,28,23,202,2,11,27,248,22,181,15,23,200,2,28,249,22,165,9,23,
+195,2,23,201,1,11,28,248,22,177,15,23,194,2,250,2,87,23,205,1,23,
+206,1,249,22,172,15,23,201,1,23,198,1,250,2,87,204,205,195,192,28,23,
+193,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,199,2,86,95,23,
+195,1,23,194,1,27,28,23,198,2,251,2,88,23,198,2,23,203,2,23,201,
+2,23,202,2,11,28,23,193,2,192,86,94,23,193,1,27,28,248,22,154,15,
+195,27,249,22,172,15,197,200,28,28,248,22,167,15,193,10,248,22,166,15,193,
+192,11,11,28,192,192,28,198,11,251,2,88,198,203,201,202,194,32,91,88,163,
+8,36,40,58,11,2,54,222,33,92,28,248,22,87,23,197,2,11,27,248,22,
+180,15,248,22,80,23,199,2,27,249,22,172,15,23,196,1,23,197,2,28,248,
+22,166,15,23,194,2,250,2,87,198,199,195,86,94,23,193,1,27,248,22,81,
+23,200,1,28,248,22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196,
+2,27,249,22,172,15,23,196,1,23,200,2,28,248,22,166,15,23,194,2,250,
+2,87,201,202,195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,
+23,194,2,11,27,248,22,180,15,248,22,80,195,27,249,22,172,15,23,196,1,
+202,28,248,22,166,15,193,250,2,87,204,205,195,251,2,91,204,205,206,248,22,
+81,199,86,95,28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,195,
+2,28,248,22,177,15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,22,
+172,11,2,6,2,52,23,197,2,28,28,23,195,2,28,28,248,22,154,15,23,
+196,2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,
+22,178,15,23,196,2,11,248,22,177,15,23,196,2,11,10,12,250,22,172,11,
+2,6,6,45,45,40,111,114,47,99,32,35,102,32,40,97,110,100,47,99,32,
+112,97,116,104,45,115,116,114,105,110,103,63,32,114,101,108,97,116,105,118,101,
+45,112,97,116,104,63,41,41,23,198,2,28,28,248,22,177,15,23,195,2,90,
+159,39,11,89,161,39,36,11,248,22,175,15,23,198,2,249,22,163,9,194,2,
+53,11,27,249,22,170,8,247,22,169,8,5,4,80,65,84,72,27,28,23,194,
+2,249,80,158,40,41,249,22,160,8,23,198,1,7,63,9,86,94,23,194,1,
+9,27,28,249,22,163,9,247,22,175,8,2,47,249,22,79,248,22,163,15,5,
+1,46,23,196,1,23,194,1,28,248,22,87,23,194,2,11,27,248,22,180,15,
+248,22,80,23,196,2,27,249,22,172,15,23,196,1,23,201,2,28,248,22,166,
+15,23,194,2,250,2,87,202,203,195,86,94,23,193,1,27,248,22,81,23,197,
+1,28,248,22,87,23,194,2,11,27,248,22,180,15,248,22,80,23,196,2,27,
+249,22,172,15,23,196,1,23,204,2,28,248,22,166,15,23,194,2,250,2,87,
+205,206,195,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,
+2,11,27,248,22,180,15,248,22,80,195,27,249,22,172,15,23,196,1,206,28,
+248,22,166,15,193,250,2,87,23,16,23,17,195,251,2,91,23,16,23,17,23,
+18,248,22,81,199,27,248,22,180,15,23,196,1,28,248,22,166,15,193,250,2,
+87,198,199,195,11,250,80,159,39,40,39,196,197,11,250,80,159,39,40,39,196,
+11,11,32,96,88,163,8,36,39,57,11,2,54,222,33,98,0,8,35,114,120,
+35,34,92,34,34,27,249,22,145,16,23,197,2,23,198,2,28,23,193,2,86,
+94,23,196,1,27,248,22,101,23,195,2,27,27,248,22,110,23,197,1,27,249,
+22,145,16,23,201,2,23,196,2,28,23,193,2,86,94,23,194,1,27,248,22,
+101,23,195,2,27,250,2,96,23,203,2,23,204,1,248,22,110,23,199,1,28,
+249,22,145,8,23,196,2,2,55,249,22,93,23,202,2,194,249,22,79,248,22,
+163,15,28,249,22,163,9,247,22,175,8,2,47,250,22,157,16,2,97,23,200,
+1,2,55,23,197,1,194,86,95,23,199,1,23,193,1,28,249,22,145,8,23,
+196,2,2,55,249,22,93,23,200,2,9,249,22,79,248,22,163,15,28,249,22,
+163,9,247,22,175,8,2,47,250,22,157,16,2,97,23,200,1,2,55,23,197,
+1,9,28,249,22,145,8,23,196,2,2,55,249,22,93,197,194,86,94,23,196,
+1,249,22,79,248,22,163,15,28,249,22,163,9,247,22,175,8,2,47,250,22,
+157,16,2,97,23,200,1,2,55,23,197,1,194,86,94,23,193,1,28,249,22,
+145,8,23,198,2,2,55,249,22,93,195,9,86,94,23,194,1,249,22,79,248,
+22,163,15,28,249,22,163,9,247,22,175,8,2,47,250,22,157,16,2,97,23,
+202,1,2,55,23,199,1,9,86,95,28,28,248,22,137,8,194,10,248,22,148,
+7,194,12,250,22,172,11,2,7,6,21,21,40,111,114,47,99,32,98,121,116,
+101,115,63,32,115,116,114,105,110,103,63,41,196,28,28,248,22,88,195,249,22,
+4,22,154,15,196,11,12,250,22,172,11,2,7,6,14,14,40,108,105,115,116,
+111,102,32,112,97,116,104,63,41,197,250,2,96,197,195,28,248,22,148,7,197,
+248,22,162,8,197,196,28,28,248,22,0,23,195,2,249,22,50,23,196,2,36,
+11,20,13,159,80,159,36,43,37,26,29,80,159,8,29,44,37,249,22,33,11,
+80,159,8,31,43,37,22,188,14,10,22,189,14,10,22,190,14,10,22,129,15,
10,22,128,15,11,22,130,15,10,22,191,14,10,22,131,15,10,22,132,15,10,
22,133,15,10,22,134,15,10,22,135,15,11,22,136,15,10,22,186,14,11,247,
-23,193,1,250,22,172,11,2,8,2,57,23,196,1,248,22,9,20,20,96,88,
-163,36,37,8,45,16,4,8,240,128,129,0,0,8,240,31,104,0,0,39,36,
-9,226,1,4,3,2,33,139,2,23,195,1,23,196,1,23,197,1,0,7,35,
-114,120,34,47,43,34,28,248,22,148,7,23,195,2,27,249,22,147,16,2,141,
-2,23,197,2,28,23,193,2,28,249,22,189,3,248,22,100,23,196,2,248,22,
-179,3,248,22,151,7,23,199,2,249,22,7,250,22,170,7,23,200,1,36,248,
-22,100,23,199,1,23,198,1,249,22,7,250,22,170,7,23,200,2,36,248,22,
-100,23,199,2,249,22,79,249,22,170,7,23,201,1,248,22,102,23,200,1,23,
-200,1,249,22,7,23,197,1,23,198,1,90,159,39,11,89,161,39,36,11,248,
-22,175,15,23,198,1,86,94,23,195,1,28,249,22,163,9,23,195,2,2,54,
-86,94,23,193,1,249,22,7,23,196,1,23,200,1,27,249,22,79,23,197,1,
-23,201,1,28,248,22,148,7,23,195,2,27,249,22,147,16,2,141,2,23,197,
-2,28,23,193,2,28,249,22,189,3,248,22,100,23,196,2,248,22,179,3,248,
-22,151,7,23,199,2,249,22,7,250,22,170,7,23,200,1,36,248,22,100,23,
-199,1,23,196,1,249,22,7,250,22,170,7,23,200,2,36,248,22,100,23,199,
-2,249,22,79,249,22,170,7,23,201,1,248,22,102,23,200,1,23,198,1,249,
-22,7,23,197,1,23,196,1,90,159,39,11,89,161,39,36,11,248,22,175,15,
-23,198,1,86,94,23,195,1,28,249,22,163,9,23,195,2,2,54,86,94,23,
-193,1,249,22,7,23,196,1,23,198,1,249,80,159,45,8,36,39,194,249,22,
-79,197,199,28,249,22,129,4,23,197,2,248,22,182,8,80,159,39,8,27,38,
-9,27,250,80,159,40,8,35,39,11,11,23,199,2,250,22,93,250,22,157,2,
-23,199,2,23,201,2,9,250,22,157,2,23,199,1,11,9,27,248,22,178,3,
-23,201,1,28,249,22,129,4,23,195,2,248,22,182,8,80,159,44,8,27,38,
-9,27,250,80,159,45,8,35,39,11,11,23,197,2,250,22,93,250,22,157,2,
-23,199,2,23,206,2,9,250,22,157,2,23,199,1,11,9,27,248,22,178,3,
-23,199,1,28,249,22,129,4,23,195,2,248,22,182,8,80,159,49,8,27,38,
-9,27,250,80,159,50,8,35,39,11,11,23,197,2,250,22,93,250,22,157,2,
-23,199,2,23,211,2,9,250,22,157,2,23,199,1,11,9,249,80,159,52,8,
-47,39,23,210,1,248,22,178,3,23,200,1,32,144,2,88,163,36,43,8,31,
-11,65,99,108,111,111,112,222,33,153,2,32,145,2,88,163,8,36,37,47,11,
-2,55,222,33,148,2,32,146,2,88,163,36,37,43,11,69,116,111,45,115,116,
-114,105,110,103,222,33,147,2,28,248,22,154,15,23,194,2,248,22,158,15,23,
-194,1,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2,146,2,248,
-22,136,18,23,196,1,250,22,90,248,2,146,2,248,22,136,18,23,198,2,2,
-72,248,2,145,2,248,22,137,18,23,198,1,250,22,132,8,6,7,7,10,32,
-126,97,32,126,97,6,1,1,32,23,196,1,249,22,132,8,6,6,6,10,32,
-32,32,126,97,248,22,131,2,23,196,1,32,151,2,88,163,36,38,48,11,66,
-102,105,108,116,101,114,222,33,152,2,28,248,22,87,23,195,2,9,28,248,23,
-194,2,248,22,80,23,196,2,249,22,79,248,22,136,18,23,197,2,249,2,151,
-2,23,197,1,248,22,137,18,23,199,1,249,2,151,2,23,195,1,248,22,137,
-18,23,197,1,28,248,22,87,23,199,2,86,94,23,198,1,28,23,199,2,86,
-97,23,196,1,23,195,1,23,194,1,23,193,1,28,23,197,2,249,22,172,15,
-23,201,1,23,199,1,198,27,28,248,22,87,23,197,2,2,71,249,22,1,22,
-171,7,248,2,145,2,23,199,2,248,23,198,1,251,22,132,8,6,70,70,99,
-111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,100,10,32,
-32,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,105,110,32,
-99,111,108,108,101,99,116,105,111,110,32,100,105,114,101,99,116,111,114,105,101,
-115,58,126,97,126,97,28,248,22,87,23,202,1,248,2,146,2,23,201,1,250,
-22,171,7,248,2,146,2,23,204,1,2,72,23,201,2,249,22,1,22,171,7,
-249,22,2,32,0,88,163,8,36,37,45,11,9,222,33,149,2,27,248,22,92,
-23,205,2,27,248,22,92,247,22,134,16,28,249,22,190,3,249,22,181,3,23,
-198,2,23,197,2,41,23,205,2,249,22,93,247,22,134,16,248,22,89,249,22,
-132,8,6,50,50,46,46,46,32,91,126,97,32,97,100,100,105,116,105,111,110,
-97,108,32,108,105,110,107,101,100,32,97,110,100,32,112,97,99,107,97,103,101,
-32,100,105,114,101,99,116,111,114,105,101,115,93,249,22,181,3,23,201,1,23,
-200,1,28,249,22,5,22,130,2,23,201,2,250,22,132,8,6,49,49,10,32,
-32,32,115,117,98,45,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,
-32,32,105,110,32,112,97,114,101,110,116,32,100,105,114,101,99,116,111,114,105,
-101,115,58,126,97,23,201,1,249,22,1,22,171,7,249,22,2,32,0,88,163,
-8,36,37,45,11,9,222,33,150,2,249,2,151,2,22,130,2,23,208,1,86,
-95,23,199,1,23,198,1,2,71,27,248,22,80,23,200,2,27,28,248,22,154,
-15,23,195,2,249,22,172,15,23,196,1,23,198,2,248,22,131,2,23,195,1,
-28,28,248,22,154,15,248,22,80,23,202,2,248,22,167,15,23,194,2,10,27,
-250,22,1,22,172,15,23,197,1,23,201,2,28,28,248,22,87,23,199,2,10,
-248,22,167,15,23,194,2,28,23,200,2,28,28,248,22,166,15,249,22,172,15,
-23,196,2,23,203,2,10,27,28,248,22,154,15,23,202,2,248,22,158,15,23,
-202,2,23,201,2,19,248,22,151,7,23,195,2,27,28,249,22,129,4,23,196,
-4,40,28,249,22,154,7,6,4,4,46,114,107,116,249,22,170,7,23,199,2,
-249,22,181,3,23,200,4,40,249,22,171,7,250,22,170,7,23,200,1,36,249,
-22,181,3,23,201,4,40,6,3,3,46,115,115,86,94,23,195,1,11,11,28,
-23,193,2,248,22,166,15,249,22,172,15,23,199,2,23,196,1,11,2,86,99,
-23,202,1,23,201,1,23,199,1,23,198,1,23,197,1,23,196,1,28,23,200,
-2,249,22,172,15,23,195,1,23,202,1,192,254,2,144,2,202,203,204,205,206,
-248,22,81,23,16,28,23,16,23,16,199,28,23,200,2,249,22,172,15,23,195,
-1,23,202,1,192,254,2,144,2,202,203,204,205,206,248,22,81,23,16,23,16,
-254,2,144,2,201,202,203,204,205,248,22,81,23,15,23,15,90,159,38,11,89,
-161,38,36,11,249,80,159,40,8,36,39,23,199,1,23,200,1,27,248,22,67,
-28,248,22,154,15,195,248,22,158,15,195,194,27,247,22,138,16,27,250,22,93,
-28,23,197,2,28,247,22,137,16,249,22,93,27,250,80,159,50,8,35,39,10,
-11,36,249,22,93,250,22,157,2,23,198,2,23,206,2,9,250,22,157,2,23,
-198,1,11,9,27,250,80,159,50,8,35,39,11,10,36,249,22,93,250,22,157,
-2,23,198,2,23,206,2,9,250,22,157,2,23,198,1,11,9,9,9,28,23,
-197,1,28,249,22,129,4,36,248,22,182,8,80,159,47,8,27,38,86,94,23,
-198,1,9,27,250,80,159,48,8,35,39,11,11,36,250,22,93,250,22,157,2,
-23,199,2,23,205,2,9,250,22,157,2,23,199,1,11,9,28,249,22,129,4,
-37,248,22,182,8,80,159,51,8,27,38,9,27,250,80,159,52,8,35,39,11,
-11,37,250,22,93,250,22,157,2,23,199,2,23,209,2,9,250,22,157,2,23,
-199,1,11,9,28,249,22,129,4,38,248,22,182,8,80,159,55,8,27,38,9,
-27,250,80,159,56,8,35,39,11,11,38,250,22,93,250,22,157,2,23,199,2,
-23,213,2,9,250,22,157,2,23,199,1,11,9,249,80,159,58,8,47,39,23,
-212,1,39,9,247,22,134,16,254,2,144,2,199,202,203,205,23,16,199,11,86,
-95,28,28,248,22,155,15,23,194,2,10,28,248,22,154,15,23,194,2,10,28,
-248,22,148,7,23,194,2,28,248,22,177,15,23,194,2,10,248,22,178,15,23,
-194,2,11,12,252,22,172,11,23,200,2,2,47,36,23,198,2,23,199,2,28,
-28,248,22,148,7,23,195,2,10,248,22,137,8,23,195,2,86,94,23,194,1,
-12,252,22,172,11,23,200,2,2,73,37,23,198,2,23,199,1,90,159,39,11,
-89,161,39,36,11,248,22,175,15,23,197,2,86,94,23,195,1,86,94,28,23,
-193,2,86,95,23,198,1,23,196,1,12,250,22,175,11,23,201,1,2,74,23,
-199,1,249,22,7,23,195,1,23,196,1,32,156,2,88,163,36,42,8,24,11,
-2,55,222,33,157,2,28,248,22,130,4,23,199,2,86,95,23,198,1,23,194,
-1,19,248,22,142,8,23,195,2,19,248,22,142,8,23,196,2,249,22,164,15,
-251,22,149,8,250,22,148,8,23,204,2,36,23,203,4,2,56,249,23,205,1,
-23,203,1,23,201,4,28,248,22,148,7,23,206,2,249,22,163,8,23,207,1,
-8,63,23,205,1,28,248,22,155,15,23,201,2,248,22,156,15,23,201,1,86,
-94,23,200,1,247,22,157,15,2,2,27,248,22,179,3,23,200,1,28,249,22,
-163,9,8,46,249,22,143,8,23,198,2,23,197,2,27,248,22,178,3,23,195,
-2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,203,1,23,
-202,1,249,23,205,1,23,203,1,23,201,1,28,248,22,148,7,23,206,2,249,
-22,163,8,23,207,1,8,63,23,205,1,28,248,22,155,15,23,201,2,248,22,
-156,15,23,201,1,86,94,23,200,1,247,22,157,15,28,248,22,130,4,23,194,
-2,86,95,23,195,1,23,193,1,19,248,22,142,8,23,196,2,19,248,22,142,
-8,23,197,2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,2,36,23,
-203,4,2,56,249,23,206,1,23,204,1,23,201,4,28,248,22,148,7,23,207,
-2,249,22,163,8,23,208,1,8,63,23,206,1,28,248,22,155,15,23,202,2,
-248,22,156,15,23,202,1,86,94,23,201,1,247,22,157,15,2,2,27,248,22,
-179,3,23,195,1,28,249,22,163,9,8,46,249,22,143,8,23,199,2,23,197,
-2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,
-23,205,2,36,23,203,1,23,203,1,249,23,206,1,23,204,1,23,201,1,28,
-248,22,148,7,23,207,2,249,22,163,8,23,208,1,8,63,23,206,1,28,248,
-22,155,15,23,202,2,248,22,156,15,23,202,1,86,94,23,201,1,247,22,157,
-15,28,248,22,130,4,23,194,2,86,95,23,196,1,23,193,1,19,248,22,142,
-8,23,197,2,19,248,22,142,8,23,198,2,249,22,164,15,251,22,149,8,250,
-22,148,8,23,206,2,36,23,203,4,2,56,249,23,207,1,23,205,1,23,201,
-4,28,248,22,148,7,23,208,2,249,22,163,8,23,209,1,8,63,23,207,1,
-28,248,22,155,15,23,203,2,248,22,156,15,23,203,1,86,94,23,202,1,247,
-22,157,15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,
-22,143,8,23,200,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,
-251,22,149,8,250,22,148,8,23,206,2,36,23,203,1,23,204,1,249,23,207,
-1,23,205,1,23,201,1,28,248,22,148,7,23,208,2,249,22,163,8,23,209,
-1,8,63,23,207,1,28,248,22,155,15,23,203,2,248,22,156,15,23,203,1,
-86,94,23,202,1,247,22,157,15,253,2,156,2,201,202,203,204,205,198,90,159,
-38,11,89,161,38,36,11,86,95,28,28,248,22,155,15,23,199,2,10,28,248,
-22,154,15,23,199,2,10,28,248,22,148,7,23,199,2,28,248,22,177,15,23,
-199,2,10,248,22,178,15,23,199,2,11,12,252,22,172,11,23,200,2,2,47,
-36,23,203,2,23,204,2,28,28,248,22,148,7,23,200,2,10,248,22,137,8,
-23,200,2,12,252,22,172,11,23,200,2,2,73,37,23,203,2,23,204,2,90,
-159,39,11,89,161,39,36,11,248,22,175,15,23,202,2,86,94,23,195,1,86,
-94,28,192,12,250,22,175,11,23,201,1,2,74,23,204,2,249,22,7,194,195,
-27,248,22,160,15,23,196,1,27,19,248,22,142,8,23,196,2,28,248,22,130,
-4,23,194,4,86,94,23,199,1,19,248,22,142,8,23,197,2,19,248,22,142,
-8,23,198,2,249,22,164,15,251,22,149,8,250,22,148,8,23,206,2,36,23,
-203,4,2,56,249,23,210,1,23,205,1,23,201,4,28,248,22,148,7,23,211,
-2,249,22,163,8,23,212,1,8,63,23,210,1,28,248,22,155,15,23,206,2,
-248,22,156,15,23,206,1,86,94,23,205,1,247,22,157,15,2,2,27,248,22,
-179,3,23,195,4,28,249,22,163,9,8,46,249,22,143,8,23,200,2,23,197,
-2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,
-23,206,2,36,23,203,1,23,207,1,249,23,210,1,23,205,1,23,201,1,28,
-248,22,148,7,23,211,2,249,22,163,8,23,212,1,8,63,23,210,1,28,248,
-22,155,15,23,206,2,248,22,156,15,23,206,1,86,94,23,205,1,247,22,157,
-15,28,248,22,130,4,23,194,2,86,95,23,200,1,23,193,1,19,248,22,142,
-8,23,198,2,19,248,22,142,8,23,199,2,249,22,164,15,251,22,149,8,250,
-22,148,8,23,207,2,36,23,203,4,2,56,249,23,211,1,23,206,1,23,201,
-4,28,248,22,148,7,23,212,2,249,22,163,8,23,213,1,8,63,23,211,1,
-28,248,22,155,15,23,207,2,248,22,156,15,23,207,1,86,94,23,206,1,247,
-22,157,15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,
-22,143,8,23,201,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,
-251,22,149,8,250,22,148,8,23,207,2,36,23,203,1,23,208,1,249,23,211,
-1,23,206,1,23,201,1,28,248,22,148,7,23,212,2,249,22,163,8,23,213,
-1,8,63,23,211,1,28,248,22,155,15,23,207,2,248,22,156,15,23,207,1,
-86,94,23,206,1,247,22,157,15,253,2,156,2,23,203,1,23,207,1,23,208,
-1,23,209,1,23,210,1,23,199,1,2,28,248,22,154,15,23,196,2,249,22,
-172,15,23,197,1,23,195,1,192,32,159,2,88,163,36,40,57,11,2,55,222,
-33,160,2,28,248,22,130,4,23,197,2,86,94,23,196,1,19,248,22,142,8,
-23,195,2,35,248,22,142,8,23,196,2,249,22,164,15,251,22,149,8,250,22,
-148,8,23,204,1,36,23,203,4,2,56,2,56,28,248,22,148,7,23,204,2,
-249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,248,
-22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,2,27,248,22,179,3,
-23,198,1,28,249,22,163,9,8,46,249,22,143,8,23,198,2,23,197,2,35,
-248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,
-1,36,23,203,1,2,56,2,56,28,248,22,148,7,23,204,2,249,22,163,8,
-23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,248,22,156,15,23,
-199,1,86,94,23,198,1,247,22,157,15,28,248,22,130,4,23,194,2,86,94,
-23,193,1,19,248,22,142,8,23,196,2,35,248,22,142,8,23,197,2,249,22,
-164,15,251,22,149,8,250,22,148,8,23,205,1,36,23,203,4,2,56,2,56,
-28,248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,
-248,22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,
-157,15,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,22,143,
-8,23,199,2,23,197,2,35,248,22,178,3,23,195,2,249,22,164,15,251,22,
-149,8,250,22,148,8,23,205,1,36,23,203,1,2,56,2,56,28,248,22,148,
-7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,248,22,155,15,
-23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,157,15,251,2,
-159,2,198,199,200,196,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,
-155,15,23,196,2,10,28,248,22,154,15,23,196,2,10,28,248,22,148,7,23,
-196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,11,12,252,
-22,172,11,2,41,2,47,36,23,200,2,23,201,2,28,28,248,22,148,7,23,
-197,2,10,248,22,137,8,23,197,2,12,252,22,172,11,2,41,2,73,37,23,
-200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,199,2,
-86,94,23,195,1,86,94,28,192,12,250,22,175,11,2,41,2,74,23,201,2,
-249,22,7,194,195,27,248,22,160,15,23,196,1,27,251,2,159,2,23,198,2,
-23,201,1,23,202,1,248,22,142,8,23,199,1,28,248,22,154,15,23,196,2,
-249,22,172,15,23,197,1,23,195,1,192,2,56,252,80,158,41,8,38,2,41,
-2,56,32,0,88,163,8,36,38,43,11,9,222,33,162,2,198,199,32,164,2,
-88,163,36,40,57,11,2,55,222,33,165,2,28,248,22,130,4,23,197,2,86,
-94,23,196,1,19,248,22,142,8,23,195,2,19,248,22,142,8,23,196,2,249,
-22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,203,4,2,56,249,
-22,148,8,23,203,1,23,201,4,28,248,22,148,7,23,204,2,249,22,163,8,
-23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,248,22,156,15,23,
-199,1,86,94,23,198,1,247,22,157,15,2,2,27,248,22,179,3,23,198,1,
-28,249,22,163,9,8,46,249,22,143,8,23,198,2,23,197,2,27,248,22,178,
-3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,
-203,1,2,75,249,22,148,8,23,203,1,23,201,1,28,248,22,148,7,23,204,
-2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23,199,2,
-248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,28,248,22,130,4,
-23,194,2,86,94,23,193,1,19,248,22,142,8,23,196,2,19,248,22,142,8,
-23,197,2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,2,36,23,203,
-4,2,56,249,22,148,8,23,204,1,23,201,4,28,248,22,148,7,23,205,2,
-249,22,163,8,23,206,1,8,63,23,204,1,28,248,22,155,15,23,200,2,248,
-22,156,15,23,200,1,86,94,23,199,1,247,22,157,15,2,2,27,248,22,179,
-3,23,195,1,28,249,22,163,9,8,46,249,22,143,8,23,199,2,23,197,2,
+23,194,1,250,22,172,11,2,8,2,56,23,197,1,86,94,28,28,248,22,154,
+15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,2,
+10,248,22,178,15,23,195,2,11,12,250,22,172,11,23,196,2,2,52,23,197,
+2,28,248,22,177,15,23,195,2,12,251,22,174,11,23,197,1,2,57,2,50,
+23,198,1,86,94,28,28,248,22,154,15,23,195,2,10,28,248,22,148,7,23,
+195,2,28,248,22,177,15,23,195,2,10,248,22,178,15,23,195,2,11,12,250,
+22,172,11,23,196,2,2,52,23,197,2,28,248,22,177,15,23,195,2,12,251,
+22,174,11,23,197,1,2,57,2,50,23,198,1,86,94,86,94,28,28,248,22,
+154,15,23,195,2,10,28,248,22,148,7,23,195,2,28,248,22,177,15,23,195,
+2,10,248,22,178,15,23,195,2,11,12,250,22,172,11,23,196,2,2,52,23,
+197,2,28,248,22,177,15,23,195,2,86,94,23,194,1,12,251,22,174,11,23,
+197,2,2,57,2,50,23,198,1,249,22,3,20,20,94,88,163,8,36,37,47,
+11,9,223,2,33,102,23,195,1,23,197,1,28,28,248,22,0,23,195,2,249,
+22,50,23,196,2,37,11,12,250,22,172,11,23,196,1,2,58,23,197,1,86,
+94,28,28,248,22,154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,
+22,177,15,23,194,2,10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,
+15,2,52,23,196,2,28,248,22,177,15,23,194,2,12,251,22,174,11,2,15,
+2,57,2,50,23,197,1,86,95,86,94,86,94,28,28,248,22,154,15,23,196,
+2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,
+178,15,23,196,2,11,12,250,22,172,11,2,15,2,52,23,198,2,28,248,22,
+177,15,23,196,2,12,251,22,174,11,2,15,2,57,2,50,23,199,2,249,22,
+3,32,0,88,163,8,36,37,46,11,9,222,33,105,23,198,2,28,28,248,22,
+0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,172,11,2,15,2,58,
+23,197,2,251,80,158,40,49,23,198,1,23,199,1,23,200,1,11,86,94,28,
+28,248,22,154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,
+15,23,194,2,10,248,22,178,15,23,194,2,11,12,250,22,172,11,2,17,2,
+52,23,196,2,28,248,22,177,15,23,194,2,12,251,22,174,11,2,17,2,57,
+2,50,23,197,1,86,96,86,94,28,28,248,22,154,15,23,196,2,10,28,248,
+22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,
+2,11,12,250,22,172,11,2,17,2,52,23,198,2,28,248,22,177,15,23,196,
+2,12,251,22,174,11,2,17,2,57,2,50,23,199,2,86,94,86,94,28,28,
+248,22,154,15,23,197,2,10,28,248,22,148,7,23,197,2,28,248,22,177,15,
+23,197,2,10,248,22,178,15,23,197,2,11,12,250,22,172,11,2,17,2,52,
+23,199,2,28,248,22,177,15,23,197,2,12,251,22,174,11,2,17,2,57,2,
+50,23,200,2,249,22,3,32,0,88,163,8,36,37,46,11,9,222,33,107,23,
+199,2,28,28,248,22,0,23,195,2,249,22,50,23,196,2,37,11,12,250,22,
+172,11,2,17,2,58,23,197,2,251,80,158,40,49,23,198,1,23,200,1,23,
+201,1,23,199,1,27,248,22,131,16,2,59,28,248,22,179,15,23,194,2,192,
+27,28,248,22,177,15,23,195,2,20,13,159,80,159,38,43,37,250,80,159,41,
+44,37,249,22,33,11,80,159,43,43,37,22,132,16,248,22,131,16,2,60,27,
+248,22,131,16,2,61,250,80,159,42,40,39,23,196,1,23,198,2,11,11,28,
+23,193,2,192,86,94,23,193,1,27,249,22,180,15,27,248,22,131,16,2,61,
+250,80,159,45,40,39,23,196,1,11,11,248,22,131,16,2,60,90,159,39,11,
+89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,249,
+22,180,15,23,200,1,23,195,1,20,13,159,80,159,36,43,37,26,29,80,159,
+8,29,44,37,249,22,33,11,80,159,8,31,43,37,22,188,14,10,22,189,14,
+10,22,190,14,10,22,129,15,10,22,128,15,11,22,130,15,10,22,191,14,10,
+22,131,15,10,22,132,15,10,22,133,15,10,22,134,15,10,22,135,15,11,22,
+136,15,10,22,186,14,11,247,22,143,6,27,249,22,172,15,23,197,1,6,11,
+11,99,111,110,102,105,103,46,114,107,116,100,27,28,248,22,166,15,23,195,2,
+249,22,135,6,23,196,1,80,159,40,8,43,39,11,28,192,192,21,17,1,0,
+250,22,157,2,23,196,1,2,62,247,22,166,8,250,22,157,2,195,2,62,247,
+22,166,8,28,248,22,148,7,23,195,2,27,248,22,162,15,23,196,1,28,248,
+22,179,15,23,194,2,192,249,22,180,15,23,195,1,27,27,248,22,131,16,2,
+63,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,
+15,23,195,1,249,22,180,15,250,80,159,48,40,39,248,22,131,16,2,61,11,
+10,248,22,131,16,2,60,250,80,159,44,40,39,248,22,131,16,2,61,23,196,
+1,10,28,23,193,2,192,86,94,23,193,1,248,22,131,16,2,60,28,248,22,
+137,8,23,195,2,27,248,22,163,15,23,196,1,28,248,22,179,15,23,194,2,
+192,249,22,180,15,23,195,1,27,27,248,22,131,16,2,63,28,248,22,179,15,
+23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,
+180,15,250,80,159,48,40,39,248,22,131,16,2,61,11,10,248,22,131,16,2,
+60,250,80,159,44,40,39,248,22,131,16,2,61,23,196,1,10,28,23,193,2,
+192,86,94,23,193,1,248,22,131,16,2,60,28,248,22,154,15,23,195,2,28,
+248,22,179,15,23,195,2,193,249,22,180,15,23,196,1,27,27,248,22,131,16,
+2,63,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,
+180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,22,131,16,2,61,
+11,10,248,22,131,16,2,60,250,80,159,43,40,39,248,22,131,16,2,61,23,
+196,1,10,28,23,193,2,192,86,94,23,193,1,248,22,131,16,2,60,193,28,
+248,22,179,15,23,195,2,193,249,22,180,15,23,196,1,27,27,248,22,131,16,
+2,63,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,
+180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,22,131,16,2,61,
+11,10,248,22,131,16,2,60,250,80,159,43,40,39,248,22,131,16,2,61,23,
+196,1,10,28,23,193,2,192,86,94,23,193,1,248,22,131,16,2,60,28,248,
+22,179,15,23,195,2,193,28,248,22,178,15,23,195,2,249,22,180,15,23,196,
+1,249,22,180,15,250,80,159,43,40,39,248,22,131,16,2,61,11,10,248,22,
+131,16,2,60,250,80,159,39,40,39,248,22,131,16,2,61,196,10,28,248,22,
+87,23,196,2,9,28,248,22,80,23,196,2,249,22,79,248,80,159,39,54,39,
+248,22,136,18,23,199,2,27,248,22,137,18,23,199,1,28,248,22,87,23,194,
+2,9,28,248,22,80,23,194,2,249,22,79,248,80,159,42,54,39,248,22,136,
+18,23,197,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,28,
+248,22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,197,
+2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,93,
+23,202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,
+22,93,23,199,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,
+28,248,22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,
+197,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,
+93,23,202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,
+249,22,93,23,196,2,27,248,22,137,18,23,199,1,28,248,22,87,23,194,2,
+9,28,248,22,80,23,194,2,249,22,79,248,80,159,42,54,39,248,22,136,18,
+23,197,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,28,248,
+22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,197,2,
+249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,93,23,
+202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,
+93,23,199,2,27,248,22,137,18,23,197,1,28,248,22,87,23,194,2,9,28,
+248,22,80,23,194,2,249,22,79,248,80,159,45,54,39,248,22,136,18,23,197,
+2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,249,22,93,
+23,202,2,249,80,159,46,8,44,39,23,204,1,248,22,137,18,23,198,1,27,
+250,22,157,2,23,198,1,23,199,1,11,28,192,249,80,159,39,8,44,39,198,
+194,196,27,27,248,22,131,16,2,59,28,248,22,179,15,23,194,2,192,27,28,
+248,22,177,15,23,195,2,20,13,159,80,159,39,43,37,250,80,159,42,44,37,
+249,22,33,11,80,159,44,43,37,22,132,16,248,22,131,16,2,60,27,248,22,
+131,16,2,61,250,80,159,43,40,39,23,196,1,23,198,2,11,11,28,23,193,
+2,192,86,94,23,193,1,27,249,22,180,15,27,248,22,131,16,2,61,250,80,
+159,46,40,39,23,196,1,11,11,248,22,131,16,2,60,90,159,39,11,89,161,
+39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,249,22,180,
+15,23,200,1,23,195,1,27,248,80,159,39,52,39,23,195,1,27,248,80,159,
+40,54,39,27,250,22,157,2,23,199,2,70,108,105,110,107,115,45,102,105,108,
+101,11,28,23,193,2,192,86,94,23,193,1,249,22,172,15,27,250,22,157,2,
+23,202,2,69,115,104,97,114,101,45,100,105,114,11,28,23,193,2,192,86,94,
+23,193,1,249,22,172,15,62,117,112,6,5,5,115,104,97,114,101,2,64,249,
+22,79,248,22,186,8,250,80,159,45,57,39,23,200,2,78,108,105,110,107,115,
+45,115,101,97,114,99,104,45,102,105,108,101,115,248,22,89,23,200,1,250,22,
+172,15,248,22,131,16,2,65,250,22,157,2,23,202,1,2,62,247,22,166,8,
+2,64,248,22,162,13,23,194,1,249,22,16,80,159,38,8,30,38,28,248,22,
+182,12,23,197,2,86,94,23,196,1,32,0,88,163,8,36,36,41,11,9,222,
+11,20,20,94,88,163,8,36,36,43,11,9,223,3,33,120,23,196,1,32,122,
+88,163,36,37,56,11,2,54,222,33,123,90,159,39,11,89,161,39,36,11,248,
+22,175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,
+2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,
+36,36,41,11,9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,
+197,1,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,
+167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,
+9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,
+23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,
+2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,90,
+159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,
+194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,
+6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,248,2,122,23,194,
+1,11,11,11,11,32,124,88,163,8,36,37,55,11,2,54,222,33,125,27,249,
+22,158,6,8,128,128,23,196,2,28,248,22,143,7,23,194,2,9,249,22,79,
+23,195,1,27,249,22,158,6,8,128,128,23,199,2,28,248,22,143,7,23,194,
+2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,202,2,28,248,
+22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,
+23,205,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,248,2,124,
+23,206,1,27,249,22,158,6,8,128,128,23,196,2,28,248,22,137,8,23,194,
+2,28,249,22,129,4,248,22,142,8,23,196,2,8,128,128,249,22,1,22,149,
+8,249,22,79,23,197,1,27,249,22,158,6,8,128,128,23,201,2,28,248,22,
+143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,6,8,128,128,23,
+204,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,1,27,249,22,158,
+6,8,128,128,23,207,2,28,248,22,143,7,23,194,2,9,249,22,79,23,195,
+1,27,249,22,158,6,8,128,128,23,210,2,28,248,22,143,7,23,194,2,9,
+249,22,79,23,195,1,248,2,124,23,211,1,192,192,248,22,128,6,23,194,1,
+20,13,159,80,159,37,8,32,37,80,159,37,8,45,39,27,28,249,22,183,8,
+248,22,175,8,2,66,38,90,159,39,11,89,161,39,36,11,248,22,175,15,23,
+198,2,86,95,23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,
+167,15,23,194,2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,
+9,222,11,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,
+23,195,1,23,194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,
+2,249,22,140,6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,90,
+159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,
+194,1,28,248,22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,
+6,23,195,1,32,0,88,163,8,36,36,41,11,9,222,11,90,159,39,11,89,
+161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,1,28,248,
+22,154,15,23,194,2,28,248,22,167,15,23,194,2,249,22,140,6,23,195,1,
+32,0,88,163,8,36,36,41,11,9,222,11,248,2,122,23,194,1,11,11,11,
+11,11,28,248,22,166,15,23,195,2,27,28,249,22,183,8,248,22,175,8,2,
+66,38,249,22,140,6,23,197,2,32,0,88,163,8,36,36,41,11,9,222,11,
+11,86,94,28,23,194,2,248,22,142,6,23,195,1,86,94,23,194,1,12,249,
+22,79,27,248,22,183,5,23,199,1,250,22,46,22,37,88,163,36,36,8,24,
+11,9,223,3,33,126,20,20,94,88,163,36,36,43,11,9,223,3,33,127,23,
+196,1,194,249,22,79,11,194,28,28,23,195,2,28,248,22,81,23,196,2,248,
+22,161,9,249,22,157,14,36,248,22,137,18,23,199,2,11,11,194,86,94,23,
+195,1,249,22,14,20,20,94,88,163,8,32,36,58,16,4,36,8,240,0,64,
+0,0,8,129,128,36,9,224,2,3,33,128,2,23,196,1,80,159,38,8,30,
+38,27,248,22,161,9,194,28,192,192,248,22,161,9,248,22,80,195,86,94,28,
+248,22,139,12,23,198,2,27,247,22,131,12,28,249,22,187,11,23,195,2,2,
+67,251,22,191,11,23,197,1,2,67,250,22,132,8,2,68,28,23,202,1,86,
+94,23,203,1,80,159,47,8,25,38,249,22,183,8,80,159,49,8,24,38,23,
+205,1,248,22,135,12,23,206,2,247,22,29,12,12,28,248,22,139,12,23,198,
+2,86,94,23,197,1,248,23,194,1,247,22,137,2,196,86,95,28,248,22,139,
+12,23,199,2,27,247,22,131,12,28,249,22,187,11,23,195,2,2,67,251,22,
+191,11,23,197,1,2,67,250,22,132,8,2,68,28,23,203,2,80,159,48,8,
+25,38,249,22,183,8,80,159,50,8,24,38,23,206,2,248,22,135,12,23,207,
+2,247,22,29,12,12,28,23,193,2,28,23,195,1,86,94,23,196,1,86,94,
+20,18,159,11,80,158,40,8,26,247,22,137,2,20,18,159,11,80,158,40,8,
+27,23,193,1,86,94,250,22,184,8,80,159,43,8,28,38,23,199,2,247,22,
+137,2,250,22,184,8,80,159,43,8,29,38,23,199,1,23,196,1,86,94,23,
+195,1,12,28,248,22,139,12,23,199,2,86,94,23,198,1,248,23,195,1,247,
+22,137,2,197,20,20,94,248,22,143,6,23,194,2,28,248,22,143,7,248,22,
+143,6,23,195,1,12,248,22,168,11,6,30,30,101,120,112,101,99,116,101,100,
+32,97,32,115,105,110,103,108,101,32,83,45,101,120,112,114,101,115,115,105,111,
+110,248,22,128,6,23,194,1,28,248,22,88,23,194,2,28,28,249,22,189,3,
+38,248,22,92,23,196,2,10,249,22,189,3,39,248,22,92,23,196,2,28,28,
+248,22,148,7,248,22,80,23,195,2,10,28,249,22,163,9,2,69,248,22,136,
+18,23,196,2,10,249,22,163,9,2,70,248,22,136,18,23,196,2,28,27,248,
+22,101,194,28,248,22,154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,
+248,22,177,15,23,194,2,10,248,22,178,15,23,194,1,11,27,248,22,87,248,
+22,103,195,28,192,192,248,22,158,16,248,22,110,195,11,11,11,11,28,248,22,
+167,15,249,22,172,15,23,196,2,23,198,2,27,248,22,67,248,22,158,15,23,
+198,1,250,22,155,2,23,198,2,23,196,2,249,22,79,23,199,1,250,22,157,
+2,23,203,1,23,201,1,9,12,250,22,155,2,23,197,1,23,198,1,249,22,
+79,23,198,1,23,201,1,28,28,248,22,87,248,22,103,23,197,2,10,249,22,
+149,16,248,22,110,23,198,2,247,22,166,8,27,248,22,182,15,249,22,180,15,
+248,22,101,23,200,2,23,198,1,28,249,22,163,9,248,22,80,23,199,2,2,
+70,86,94,23,196,1,249,22,3,20,20,94,88,163,8,36,37,53,11,9,224,
+3,2,33,136,2,23,196,1,248,22,185,15,23,196,1,28,249,22,163,9,248,
+22,136,18,23,199,2,2,69,86,94,23,196,1,86,94,28,250,22,157,2,23,
+197,2,11,11,12,250,22,155,2,23,197,2,11,9,249,22,161,2,23,196,2,
+20,20,95,88,163,8,36,38,50,11,9,224,3,2,33,137,2,23,195,1,23,
+196,1,27,248,22,67,248,22,136,18,23,199,1,250,22,155,2,23,198,2,23,
+196,2,249,22,79,248,22,128,2,23,200,1,250,22,157,2,23,203,1,23,201,
+1,9,12,250,22,155,2,23,196,1,23,197,1,248,22,94,23,199,1,27,28,
+28,23,194,2,248,22,161,9,248,22,80,23,196,2,10,9,27,249,22,183,5,
+23,198,2,66,98,105,110,97,114,121,250,22,46,22,37,88,163,8,36,36,44,
+11,9,223,3,33,133,2,20,20,94,88,163,36,36,43,11,9,223,3,33,134,
+2,23,196,1,86,94,28,28,248,22,88,23,194,2,249,22,4,32,0,88,163,
+8,36,37,45,11,9,222,33,135,2,23,195,2,11,12,248,22,168,11,6,18,
+18,105,108,108,45,102,111,114,109,101,100,32,99,111,110,116,101,110,116,27,247,
+22,137,2,27,90,159,39,11,89,161,39,36,11,248,22,175,15,23,201,1,192,
+86,96,249,22,3,20,20,94,88,163,8,36,37,54,11,9,224,2,3,33,138,
+2,23,195,1,23,197,1,249,22,161,2,195,88,163,8,36,38,48,11,9,223,
+3,33,139,2,28,23,198,1,86,94,20,18,159,11,80,158,43,8,26,193,20,
+18,159,11,80,158,43,8,27,195,86,94,250,22,184,8,80,159,46,8,28,38,
+23,202,2,196,250,22,184,8,80,159,46,8,29,38,23,202,1,23,199,1,193,
+20,13,159,80,159,38,8,32,37,88,163,36,37,56,8,240,0,0,0,3,9,
+226,2,1,0,3,33,131,2,27,28,23,194,2,80,159,39,8,25,38,249,22,
+183,8,80,159,41,8,24,38,23,197,2,27,28,23,195,2,80,158,40,8,27,
+249,22,183,8,80,159,42,8,29,38,23,198,2,27,249,80,159,43,8,31,39,
+23,197,2,23,196,2,28,249,22,165,9,23,195,2,23,196,1,86,96,23,199,
+1,23,195,1,23,193,1,28,23,196,1,80,158,41,8,26,249,22,183,8,80,
+159,43,8,28,38,23,199,1,20,13,159,80,159,41,8,32,37,20,20,94,88,
+163,36,37,57,16,2,36,8,128,252,9,227,5,4,3,6,0,33,132,2,23,
+199,1,27,20,20,97,88,163,8,36,36,53,16,2,36,8,128,240,9,227,6,
+5,4,3,1,33,140,2,23,194,1,23,196,1,23,197,1,23,198,1,28,28,
+248,22,0,23,194,2,249,22,50,23,195,2,36,11,20,13,159,80,159,42,43,
+37,26,29,80,159,8,35,44,37,249,22,33,11,80,159,8,37,43,37,22,188,
+14,10,22,189,14,10,22,190,14,10,22,129,15,10,22,128,15,11,22,130,15,
+10,22,191,14,10,22,131,15,10,22,132,15,10,22,133,15,10,22,134,15,10,
+22,135,15,11,22,136,15,10,22,186,14,11,247,23,193,1,250,22,172,11,2,
+8,2,56,23,196,1,248,22,9,20,20,95,88,163,36,37,8,44,16,4,8,
+128,6,8,240,0,191,0,0,37,36,9,225,1,3,2,33,141,2,23,195,1,
+23,196,1,0,7,35,114,120,34,47,43,34,28,248,22,148,7,23,195,2,27,
+249,22,147,16,2,143,2,23,197,2,28,23,193,2,28,249,22,189,3,248,22,
+100,23,196,2,248,22,179,3,248,22,151,7,23,199,2,249,22,7,250,22,170,
+7,23,200,1,36,248,22,100,23,199,1,23,198,1,249,22,7,250,22,170,7,
+23,200,2,36,248,22,100,23,199,2,249,22,79,249,22,170,7,23,201,1,248,
+22,102,23,200,1,23,200,1,249,22,7,23,197,1,23,198,1,90,159,39,11,
+89,161,39,36,11,248,22,175,15,23,198,1,86,94,23,195,1,28,249,22,163,
+9,23,195,2,2,53,86,94,23,193,1,249,22,7,23,196,1,23,200,1,27,
+249,22,79,23,197,1,23,201,1,28,248,22,148,7,23,195,2,27,249,22,147,
+16,2,143,2,23,197,2,28,23,193,2,28,249,22,189,3,248,22,100,23,196,
+2,248,22,179,3,248,22,151,7,23,199,2,249,22,7,250,22,170,7,23,200,
+1,36,248,22,100,23,199,1,23,196,1,249,22,7,250,22,170,7,23,200,2,
+36,248,22,100,23,199,2,249,22,79,249,22,170,7,23,201,1,248,22,102,23,
+200,1,23,198,1,249,22,7,23,197,1,23,196,1,90,159,39,11,89,161,39,
+36,11,248,22,175,15,23,198,1,86,94,23,195,1,28,249,22,163,9,23,195,
+2,2,53,86,94,23,193,1,249,22,7,23,196,1,23,198,1,249,80,159,45,
+8,35,39,194,249,22,79,197,199,28,249,22,129,4,23,197,2,248,22,182,8,
+80,159,39,8,24,38,9,27,249,80,159,39,8,34,39,11,23,198,2,250,22,
+93,250,22,157,2,23,199,2,23,201,2,9,250,22,157,2,23,199,1,11,9,
+27,248,22,178,3,23,201,1,28,249,22,129,4,23,195,2,248,22,182,8,80,
+159,44,8,24,38,9,27,249,80,159,44,8,34,39,11,23,196,2,250,22,93,
+250,22,157,2,23,199,2,23,206,2,9,250,22,157,2,23,199,1,11,9,27,
+248,22,178,3,23,199,1,28,249,22,129,4,23,195,2,248,22,182,8,80,159,
+49,8,24,38,9,27,249,80,159,49,8,34,39,11,23,196,2,250,22,93,250,
+22,157,2,23,199,2,23,211,2,9,250,22,157,2,23,199,1,11,9,249,80,
+159,52,8,46,39,23,210,1,248,22,178,3,23,200,1,32,146,2,88,163,36,
+43,8,31,11,65,99,108,111,111,112,222,33,155,2,32,147,2,88,163,8,36,
+37,47,11,2,54,222,33,150,2,32,148,2,88,163,36,37,43,11,69,116,111,
+45,115,116,114,105,110,103,222,33,149,2,28,248,22,154,15,23,194,2,248,22,
+158,15,23,194,1,192,28,248,22,87,248,22,81,23,195,2,248,22,89,248,2,
+148,2,248,22,136,18,23,196,1,250,22,90,248,2,148,2,248,22,136,18,23,
+198,2,2,72,248,2,147,2,248,22,137,18,23,198,1,250,22,132,8,6,7,
+7,10,32,126,97,32,126,97,6,1,1,32,23,196,1,249,22,132,8,6,6,
+6,10,32,32,32,126,97,248,22,131,2,23,196,1,32,153,2,88,163,36,38,
+48,11,66,102,105,108,116,101,114,222,33,154,2,28,248,22,87,23,195,2,9,
+28,248,23,194,2,248,22,80,23,196,2,249,22,79,248,22,136,18,23,197,2,
+249,2,153,2,23,197,1,248,22,137,18,23,199,1,249,2,153,2,23,195,1,
+248,22,137,18,23,197,1,28,248,22,87,23,199,2,86,94,23,198,1,28,23,
+199,2,86,97,23,196,1,23,195,1,23,194,1,23,193,1,28,23,197,2,249,
+22,172,15,23,201,1,23,199,1,198,27,28,248,22,87,23,197,2,2,71,249,
+22,1,22,171,7,248,2,147,2,23,199,2,248,23,198,1,251,22,132,8,6,
+70,70,99,111,108,108,101,99,116,105,111,110,32,110,111,116,32,102,111,117,110,
+100,10,32,32,99,111,108,108,101,99,116,105,111,110,58,32,126,115,10,32,32,
+105,110,32,99,111,108,108,101,99,116,105,111,110,32,100,105,114,101,99,116,111,
+114,105,101,115,58,126,97,126,97,28,248,22,87,23,202,1,248,2,148,2,23,
+201,1,250,22,171,7,248,2,148,2,23,204,1,2,72,23,201,2,249,22,1,
+22,171,7,249,22,2,32,0,88,163,8,36,37,45,11,9,222,33,151,2,27,
+248,22,92,23,205,2,27,248,22,92,247,22,134,16,28,249,22,190,3,249,22,
+181,3,23,198,2,23,197,2,41,23,205,2,249,22,93,247,22,134,16,248,22,
+89,249,22,132,8,6,50,50,46,46,46,32,91,126,97,32,97,100,100,105,116,
+105,111,110,97,108,32,108,105,110,107,101,100,32,97,110,100,32,112,97,99,107,
+97,103,101,32,100,105,114,101,99,116,111,114,105,101,115,93,249,22,181,3,23,
+201,1,23,200,1,28,249,22,5,22,130,2,23,201,2,250,22,132,8,6,49,
+49,10,32,32,32,115,117,98,45,99,111,108,108,101,99,116,105,111,110,58,32,
+126,115,10,32,32,105,110,32,112,97,114,101,110,116,32,100,105,114,101,99,116,
+111,114,105,101,115,58,126,97,23,201,1,249,22,1,22,171,7,249,22,2,32,
+0,88,163,8,36,37,45,11,9,222,33,152,2,249,2,153,2,22,130,2,23,
+208,1,86,95,23,199,1,23,198,1,2,71,27,248,22,80,23,200,2,27,28,
+248,22,154,15,23,195,2,249,22,172,15,23,196,1,23,198,2,248,22,131,2,
+23,195,1,28,28,248,22,154,15,248,22,80,23,202,2,248,22,167,15,23,194,
+2,10,27,250,22,1,22,172,15,23,197,1,23,201,2,28,28,248,22,87,23,
+199,2,10,248,22,167,15,23,194,2,28,23,200,2,28,28,248,22,166,15,249,
+22,172,15,23,196,2,23,203,2,10,27,28,248,22,154,15,23,202,2,248,22,
+158,15,23,202,2,23,201,2,19,248,22,151,7,23,195,2,27,28,249,22,129,
+4,23,196,4,40,28,249,22,154,7,6,4,4,46,114,107,116,249,22,170,7,
+23,199,2,249,22,181,3,23,200,4,40,249,22,171,7,250,22,170,7,23,200,
+1,36,249,22,181,3,23,201,4,40,6,3,3,46,115,115,86,94,23,195,1,
+11,11,28,23,193,2,248,22,166,15,249,22,172,15,23,199,2,23,196,1,11,
+2,86,99,23,202,1,23,201,1,23,199,1,23,198,1,23,197,1,23,196,1,
+28,23,200,2,249,22,172,15,23,195,1,23,202,1,192,254,2,146,2,202,203,
+204,205,206,248,22,81,23,16,28,23,16,23,16,199,28,23,200,2,249,22,172,
+15,23,195,1,23,202,1,192,254,2,146,2,202,203,204,205,206,248,22,81,23,
+16,23,16,254,2,146,2,201,202,203,204,205,248,22,81,23,15,23,15,90,159,
+38,11,89,161,38,36,11,249,80,159,40,8,35,39,23,199,1,23,200,1,27,
+248,22,67,28,248,22,154,15,195,248,22,158,15,195,194,27,247,22,138,16,27,
+250,22,93,28,23,197,2,28,247,22,137,16,248,22,93,27,249,80,159,48,8,
+34,39,10,36,249,22,93,250,22,157,2,23,198,2,23,205,2,9,250,22,157,
+2,23,198,1,11,9,9,9,28,23,197,1,28,249,22,129,4,36,248,22,182,
+8,80,159,47,8,24,38,86,94,23,198,1,9,27,249,80,159,47,8,34,39,
+11,36,250,22,93,250,22,157,2,23,199,2,23,205,2,9,250,22,157,2,23,
+199,1,11,9,28,249,22,129,4,37,248,22,182,8,80,159,51,8,24,38,9,
+27,249,80,159,51,8,34,39,11,37,250,22,93,250,22,157,2,23,199,2,23,
+209,2,9,250,22,157,2,23,199,1,11,9,28,249,22,129,4,38,248,22,182,
+8,80,159,55,8,24,38,9,27,249,80,159,55,8,34,39,11,38,250,22,93,
+250,22,157,2,23,199,2,23,213,2,9,250,22,157,2,23,199,1,11,9,249,
+80,159,58,8,46,39,23,212,1,39,9,247,22,134,16,254,2,146,2,199,202,
+203,205,23,16,199,11,86,95,28,28,248,22,155,15,23,194,2,10,28,248,22,
+154,15,23,194,2,10,28,248,22,148,7,23,194,2,28,248,22,177,15,23,194,
+2,10,248,22,178,15,23,194,2,11,12,252,22,172,11,23,200,2,2,46,36,
+23,198,2,23,199,2,28,28,248,22,148,7,23,195,2,10,248,22,137,8,23,
+195,2,86,94,23,194,1,12,252,22,172,11,23,200,2,2,73,37,23,198,2,
+23,199,1,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,2,86,94,
+23,195,1,86,94,28,23,193,2,86,95,23,198,1,23,196,1,12,250,22,175,
+11,23,201,1,2,74,23,199,1,249,22,7,23,195,1,23,196,1,32,158,2,
+88,163,36,42,8,24,11,2,54,222,33,159,2,28,248,22,130,4,23,199,2,
+86,95,23,198,1,23,194,1,19,248,22,142,8,23,195,2,19,248,22,142,8,
+23,196,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,36,23,203,
+4,2,55,249,23,205,1,23,203,1,23,201,4,28,248,22,148,7,23,206,2,
+249,22,163,8,23,207,1,8,63,23,205,1,28,248,22,155,15,23,201,2,248,
+22,156,15,23,201,1,86,94,23,200,1,247,22,157,15,2,2,27,248,22,179,
+3,23,200,1,28,249,22,163,9,8,46,249,22,143,8,23,198,2,23,197,2,
27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,
-205,2,36,23,203,1,2,75,249,22,148,8,23,204,1,23,201,1,28,248,22,
-148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,248,22,155,
-15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,157,15,251,
-2,164,2,198,199,200,196,90,159,38,11,89,161,38,36,11,86,95,28,28,248,
-22,155,15,23,196,2,10,28,248,22,154,15,23,196,2,10,28,248,22,148,7,
-23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,15,23,196,2,11,12,
-252,22,172,11,2,41,2,47,36,23,200,2,23,201,2,28,28,248,22,148,7,
-23,197,2,10,248,22,137,8,23,197,2,12,252,22,172,11,2,41,2,73,37,
-23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,199,
-2,86,94,23,195,1,86,94,28,192,12,250,22,175,11,2,41,2,74,23,201,
-2,249,22,7,194,195,27,248,22,160,15,23,196,1,27,251,2,164,2,23,198,
-2,23,201,1,23,202,1,248,22,142,8,23,199,1,28,248,22,154,15,23,196,
-2,249,22,172,15,23,197,1,23,195,1,192,252,80,158,41,8,38,2,41,2,
-75,22,148,8,198,199,249,247,22,172,5,23,195,1,11,249,247,22,172,5,194,
-11,28,248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,
-15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,
-22,180,15,250,80,159,45,40,39,248,22,131,16,2,64,11,10,248,22,131,16,
-2,63,250,80,159,41,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,
-2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,
-22,81,23,199,1,28,248,22,87,23,194,2,9,27,248,80,159,42,8,25,39,
-248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,
-23,198,1,247,22,132,16,248,80,159,44,8,48,39,248,22,81,23,198,1,86,
-94,23,193,1,248,80,159,42,8,48,39,248,22,81,23,196,1,86,94,23,193,
-1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,248,80,159,40,
-8,25,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,
-22,180,15,23,198,1,247,22,132,16,248,80,159,42,8,48,39,248,22,81,23,
-198,1,86,94,23,193,1,248,80,159,40,8,48,39,248,22,81,23,196,1,28,
-248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,15,23,
-194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,
-15,250,80,159,45,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,
-250,80,159,41,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,249,
-22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,81,
-23,199,1,28,248,22,87,23,194,2,9,27,248,80,159,42,8,25,39,248,22,
-80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,
-1,247,22,132,16,248,80,159,44,8,49,39,248,22,81,23,198,1,86,94,23,
-193,1,248,80,159,42,8,49,39,248,22,81,23,196,1,86,94,23,193,1,27,
-248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,248,80,159,40,8,25,
-39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,
-15,23,198,1,247,22,132,16,248,80,159,42,8,49,39,248,22,81,23,198,1,
-86,94,23,193,1,248,80,159,40,8,49,39,248,22,81,23,196,1,28,248,22,
-87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,15,23,194,2,
-192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,15,250,
-80,159,45,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,250,80,
-159,41,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,249,22,79,
-248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,81,23,199,
-1,28,248,22,87,23,194,2,9,27,27,248,22,80,23,196,2,28,248,22,179,
-15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,
-22,180,15,250,80,159,49,40,39,248,22,131,16,2,64,11,10,248,22,131,16,
-2,63,250,80,159,45,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,
-2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,
-22,81,23,198,1,28,248,22,87,23,194,2,9,27,248,80,159,46,8,25,39,
-248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,
-23,198,1,247,22,132,16,248,80,159,48,8,50,39,248,22,81,23,198,1,86,
-94,23,193,1,248,80,159,46,8,50,39,248,22,81,23,196,1,86,94,23,193,
-1,27,248,22,81,23,196,1,28,248,22,87,23,194,2,9,27,248,80,159,44,
-8,25,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,
-22,180,15,23,198,1,247,22,132,16,248,80,159,46,8,50,39,248,22,81,23,
-198,1,86,94,23,193,1,248,80,159,44,8,50,39,248,22,81,23,196,1,86,
-94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,27,
-248,22,80,23,196,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,
-194,2,249,22,180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,22,
-131,16,2,64,11,10,248,22,131,16,2,63,250,80,159,43,40,39,248,22,131,
-16,2,64,23,196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,180,
-15,23,198,1,247,22,132,16,27,248,22,81,23,198,1,28,248,22,87,23,194,
-2,9,27,248,80,159,44,8,25,39,248,22,80,23,196,2,28,23,193,2,249,
+204,2,36,23,203,1,23,202,1,249,23,205,1,23,203,1,23,201,1,28,248,
+22,148,7,23,206,2,249,22,163,8,23,207,1,8,63,23,205,1,28,248,22,
+155,15,23,201,2,248,22,156,15,23,201,1,86,94,23,200,1,247,22,157,15,
+28,248,22,130,4,23,194,2,86,95,23,195,1,23,193,1,19,248,22,142,8,
+23,196,2,19,248,22,142,8,23,197,2,249,22,164,15,251,22,149,8,250,22,
+148,8,23,205,2,36,23,203,4,2,55,249,23,206,1,23,204,1,23,201,4,
+28,248,22,148,7,23,207,2,249,22,163,8,23,208,1,8,63,23,206,1,28,
+248,22,155,15,23,202,2,248,22,156,15,23,202,1,86,94,23,201,1,247,22,
+157,15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,22,
+143,8,23,199,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251,
+22,149,8,250,22,148,8,23,205,2,36,23,203,1,23,203,1,249,23,206,1,
+23,204,1,23,201,1,28,248,22,148,7,23,207,2,249,22,163,8,23,208,1,
+8,63,23,206,1,28,248,22,155,15,23,202,2,248,22,156,15,23,202,1,86,
+94,23,201,1,247,22,157,15,28,248,22,130,4,23,194,2,86,95,23,196,1,
+23,193,1,19,248,22,142,8,23,197,2,19,248,22,142,8,23,198,2,249,22,
+164,15,251,22,149,8,250,22,148,8,23,206,2,36,23,203,4,2,55,249,23,
+207,1,23,205,1,23,201,4,28,248,22,148,7,23,208,2,249,22,163,8,23,
+209,1,8,63,23,207,1,28,248,22,155,15,23,203,2,248,22,156,15,23,203,
+1,86,94,23,202,1,247,22,157,15,2,2,27,248,22,179,3,23,195,1,28,
+249,22,163,9,8,46,249,22,143,8,23,200,2,23,197,2,27,248,22,178,3,
+23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,206,2,36,23,203,
+1,23,204,1,249,23,207,1,23,205,1,23,201,1,28,248,22,148,7,23,208,
+2,249,22,163,8,23,209,1,8,63,23,207,1,28,248,22,155,15,23,203,2,
+248,22,156,15,23,203,1,86,94,23,202,1,247,22,157,15,253,2,158,2,201,
+202,203,204,205,198,90,159,38,11,89,161,38,36,11,86,95,28,28,248,22,155,
+15,23,199,2,10,28,248,22,154,15,23,199,2,10,28,248,22,148,7,23,199,
+2,28,248,22,177,15,23,199,2,10,248,22,178,15,23,199,2,11,12,252,22,
+172,11,23,200,2,2,46,36,23,203,2,23,204,2,28,28,248,22,148,7,23,
+200,2,10,248,22,137,8,23,200,2,12,252,22,172,11,23,200,2,2,73,37,
+23,203,2,23,204,2,90,159,39,11,89,161,39,36,11,248,22,175,15,23,202,
+2,86,94,23,195,1,86,94,28,192,12,250,22,175,11,23,201,1,2,74,23,
+204,2,249,22,7,194,195,27,248,22,160,15,23,196,1,27,19,248,22,142,8,
+23,196,2,28,248,22,130,4,23,194,4,86,94,23,199,1,19,248,22,142,8,
+23,197,2,19,248,22,142,8,23,198,2,249,22,164,15,251,22,149,8,250,22,
+148,8,23,206,2,36,23,203,4,2,55,249,23,210,1,23,205,1,23,201,4,
+28,248,22,148,7,23,211,2,249,22,163,8,23,212,1,8,63,23,210,1,28,
+248,22,155,15,23,206,2,248,22,156,15,23,206,1,86,94,23,205,1,247,22,
+157,15,2,2,27,248,22,179,3,23,195,4,28,249,22,163,9,8,46,249,22,
+143,8,23,200,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251,
+22,149,8,250,22,148,8,23,206,2,36,23,203,1,23,207,1,249,23,210,1,
+23,205,1,23,201,1,28,248,22,148,7,23,211,2,249,22,163,8,23,212,1,
+8,63,23,210,1,28,248,22,155,15,23,206,2,248,22,156,15,23,206,1,86,
+94,23,205,1,247,22,157,15,28,248,22,130,4,23,194,2,86,95,23,200,1,
+23,193,1,19,248,22,142,8,23,198,2,19,248,22,142,8,23,199,2,249,22,
+164,15,251,22,149,8,250,22,148,8,23,207,2,36,23,203,4,2,55,249,23,
+211,1,23,206,1,23,201,4,28,248,22,148,7,23,212,2,249,22,163,8,23,
+213,1,8,63,23,211,1,28,248,22,155,15,23,207,2,248,22,156,15,23,207,
+1,86,94,23,206,1,247,22,157,15,2,2,27,248,22,179,3,23,195,1,28,
+249,22,163,9,8,46,249,22,143,8,23,201,2,23,197,2,27,248,22,178,3,
+23,195,2,249,22,164,15,251,22,149,8,250,22,148,8,23,207,2,36,23,203,
+1,23,208,1,249,23,211,1,23,206,1,23,201,1,28,248,22,148,7,23,212,
+2,249,22,163,8,23,213,1,8,63,23,211,1,28,248,22,155,15,23,207,2,
+248,22,156,15,23,207,1,86,94,23,206,1,247,22,157,15,253,2,158,2,23,
+203,1,23,207,1,23,208,1,23,209,1,23,210,1,23,199,1,2,28,248,22,
+154,15,23,196,2,249,22,172,15,23,197,1,23,195,1,192,32,161,2,88,163,
+36,40,57,11,2,54,222,33,162,2,28,248,22,130,4,23,197,2,86,94,23,
+196,1,19,248,22,142,8,23,195,2,35,248,22,142,8,23,196,2,249,22,164,
+15,251,22,149,8,250,22,148,8,23,204,1,36,23,203,4,2,55,2,55,28,
+248,22,148,7,23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,
+22,155,15,23,199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,
+15,2,27,248,22,179,3,23,198,1,28,249,22,163,9,8,46,249,22,143,8,
+23,198,2,23,197,2,35,248,22,178,3,23,195,2,249,22,164,15,251,22,149,
+8,250,22,148,8,23,204,1,36,23,203,1,2,55,2,55,28,248,22,148,7,
+23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23,
+199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,28,248,22,
+130,4,23,194,2,86,94,23,193,1,19,248,22,142,8,23,196,2,35,248,22,
+142,8,23,197,2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,1,36,
+23,203,4,2,55,2,55,28,248,22,148,7,23,205,2,249,22,163,8,23,206,
+1,8,63,23,204,1,28,248,22,155,15,23,200,2,248,22,156,15,23,200,1,
+86,94,23,199,1,247,22,157,15,2,27,248,22,179,3,23,195,1,28,249,22,
+163,9,8,46,249,22,143,8,23,199,2,23,197,2,35,248,22,178,3,23,195,
+2,249,22,164,15,251,22,149,8,250,22,148,8,23,205,1,36,23,203,1,2,
+55,2,55,28,248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,
+204,1,28,248,22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,
+1,247,22,157,15,251,2,161,2,198,199,200,196,90,159,38,11,89,161,38,36,
+11,86,95,28,28,248,22,155,15,23,196,2,10,28,248,22,154,15,23,196,2,
+10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,178,
+15,23,196,2,11,12,252,22,172,11,2,40,2,46,36,23,200,2,23,201,2,
+28,28,248,22,148,7,23,197,2,10,248,22,137,8,23,197,2,12,252,22,172,
+11,2,40,2,73,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,11,
+248,22,175,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,175,11,
+2,40,2,74,23,201,2,249,22,7,194,195,27,248,22,160,15,23,196,1,27,
+251,2,161,2,23,198,2,23,201,1,23,202,1,248,22,142,8,23,199,1,28,
+248,22,154,15,23,196,2,249,22,172,15,23,197,1,23,195,1,192,2,55,252,
+80,158,41,8,37,2,40,2,55,32,0,88,163,8,36,38,43,11,9,222,33,
+164,2,198,199,32,166,2,88,163,36,40,57,11,2,54,222,33,167,2,28,248,
+22,130,4,23,197,2,86,94,23,196,1,19,248,22,142,8,23,195,2,19,248,
+22,142,8,23,196,2,249,22,164,15,251,22,149,8,250,22,148,8,23,204,2,
+36,23,203,4,2,55,249,22,148,8,23,203,1,23,201,4,28,248,22,148,7,
+23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,248,22,155,15,23,
+199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,157,15,2,2,27,
+248,22,179,3,23,198,1,28,249,22,163,9,8,46,249,22,143,8,23,198,2,
+23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,149,8,250,22,
+148,8,23,204,2,36,23,203,1,2,75,249,22,148,8,23,203,1,23,201,1,
+28,248,22,148,7,23,204,2,249,22,163,8,23,205,1,8,63,23,203,1,28,
+248,22,155,15,23,199,2,248,22,156,15,23,199,1,86,94,23,198,1,247,22,
+157,15,28,248,22,130,4,23,194,2,86,94,23,193,1,19,248,22,142,8,23,
+196,2,19,248,22,142,8,23,197,2,249,22,164,15,251,22,149,8,250,22,148,
+8,23,205,2,36,23,203,4,2,55,249,22,148,8,23,204,1,23,201,4,28,
+248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,23,204,1,28,248,
+22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,199,1,247,22,157,
+15,2,2,27,248,22,179,3,23,195,1,28,249,22,163,9,8,46,249,22,143,
+8,23,199,2,23,197,2,27,248,22,178,3,23,195,2,249,22,164,15,251,22,
+149,8,250,22,148,8,23,205,2,36,23,203,1,2,75,249,22,148,8,23,204,
+1,23,201,1,28,248,22,148,7,23,205,2,249,22,163,8,23,206,1,8,63,
+23,204,1,28,248,22,155,15,23,200,2,248,22,156,15,23,200,1,86,94,23,
+199,1,247,22,157,15,251,2,166,2,198,199,200,196,90,159,38,11,89,161,38,
+36,11,86,95,28,28,248,22,155,15,23,196,2,10,28,248,22,154,15,23,196,
+2,10,28,248,22,148,7,23,196,2,28,248,22,177,15,23,196,2,10,248,22,
+178,15,23,196,2,11,12,252,22,172,11,2,40,2,46,36,23,200,2,23,201,
+2,28,28,248,22,148,7,23,197,2,10,248,22,137,8,23,197,2,12,252,22,
+172,11,2,40,2,73,37,23,200,2,23,201,2,90,159,39,11,89,161,39,36,
+11,248,22,175,15,23,199,2,86,94,23,195,1,86,94,28,192,12,250,22,175,
+11,2,40,2,74,23,201,2,249,22,7,194,195,27,248,22,160,15,23,196,1,
+27,251,2,166,2,23,198,2,23,201,1,23,202,1,248,22,142,8,23,199,1,
+28,248,22,154,15,23,196,2,249,22,172,15,23,197,1,23,195,1,192,252,80,
+158,41,8,37,2,40,2,75,22,148,8,198,199,249,247,22,172,5,23,195,1,
+11,249,247,22,172,5,194,11,28,248,22,87,23,195,2,9,27,27,248,22,80,
+23,197,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,
+22,180,15,23,195,1,249,22,180,15,250,80,159,45,40,39,248,22,131,16,2,
+61,11,10,248,22,131,16,2,60,250,80,159,41,40,39,248,22,131,16,2,61,
+23,196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,
+1,247,22,132,16,27,248,22,81,23,199,1,28,248,22,87,23,194,2,9,27,
+248,80,159,42,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,
+182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,44,8,47,39,248,
+22,81,23,198,1,86,94,23,193,1,248,80,159,42,8,47,39,248,22,81,23,
+196,1,86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,
+9,27,248,80,159,40,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,
+248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,42,8,47,
+39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,40,8,47,39,248,22,
+81,23,196,1,28,248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,
+248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,
+195,1,249,22,180,15,250,80,159,45,40,39,248,22,131,16,2,61,11,10,248,
+22,131,16,2,60,250,80,159,41,40,39,248,22,131,16,2,61,23,196,1,10,
+28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,
+16,27,248,22,81,23,199,1,28,248,22,87,23,194,2,9,27,248,80,159,42,
+56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,
+180,15,23,198,1,247,22,132,16,248,80,159,44,8,48,39,248,22,81,23,198,
+1,86,94,23,193,1,248,80,159,42,8,48,39,248,22,81,23,196,1,86,94,
+23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,248,80,
+159,40,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,
+249,22,180,15,23,198,1,247,22,132,16,248,80,159,42,8,48,39,248,22,81,
+23,198,1,86,94,23,193,1,248,80,159,40,8,48,39,248,22,81,23,196,1,
+28,248,22,87,23,195,2,9,27,27,248,22,80,23,197,2,28,248,22,179,15,
+23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,
+180,15,250,80,159,45,40,39,248,22,131,16,2,61,11,10,248,22,131,16,2,
+60,250,80,159,41,40,39,248,22,131,16,2,61,23,196,1,10,28,23,193,2,
+249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,
+81,23,199,1,28,248,22,87,23,194,2,9,27,27,248,22,80,23,196,2,28,
+248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,
+195,1,249,22,180,15,250,80,159,49,40,39,248,22,131,16,2,61,11,10,248,
+22,131,16,2,60,250,80,159,45,40,39,248,22,131,16,2,61,23,196,1,10,
+28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,
+16,27,248,22,81,23,198,1,28,248,22,87,23,194,2,9,27,248,80,159,46,
+56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,
+180,15,23,198,1,247,22,132,16,248,80,159,48,8,49,39,248,22,81,23,198,
+1,86,94,23,193,1,248,80,159,46,8,49,39,248,22,81,23,196,1,86,94,
+23,193,1,27,248,22,81,23,196,1,28,248,22,87,23,194,2,9,27,248,80,
+159,44,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,
+249,22,180,15,23,198,1,247,22,132,16,248,80,159,46,8,49,39,248,22,81,
+23,198,1,86,94,23,193,1,248,80,159,44,8,49,39,248,22,81,23,196,1,
+86,94,23,193,1,27,248,22,81,23,197,1,28,248,22,87,23,194,2,9,27,
+27,248,22,80,23,196,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,
+23,194,2,249,22,180,15,23,195,1,249,22,180,15,250,80,159,47,40,39,248,
+22,131,16,2,61,11,10,248,22,131,16,2,60,250,80,159,43,40,39,248,22,
+131,16,2,61,23,196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,
+180,15,23,198,1,247,22,132,16,27,248,22,81,23,198,1,28,248,22,87,23,
+194,2,9,27,248,80,159,44,56,39,248,22,80,23,196,2,28,23,193,2,249,
22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,46,
-8,50,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,44,8,50,39,
+8,49,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,44,8,49,39,
248,22,81,23,196,1,86,94,23,193,1,27,248,22,81,23,196,1,28,248,22,
-87,23,194,2,9,27,248,80,159,42,8,25,39,248,22,80,23,196,2,28,23,
-193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,
-80,159,44,8,50,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,42,
-8,50,39,248,22,81,23,196,1,27,247,22,137,16,249,80,159,39,41,38,28,
-23,195,2,27,249,22,170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,
-7,63,2,71,2,71,250,80,159,42,8,26,39,248,80,159,43,58,39,247,80,
-159,43,57,39,2,77,27,28,23,199,1,250,22,172,15,248,22,131,16,2,60,
-247,22,166,8,2,78,11,27,248,80,159,45,8,48,39,250,22,93,9,248,22,
-89,248,22,131,16,2,65,9,28,193,249,22,79,195,194,192,27,247,22,137,16,
-249,80,159,39,41,38,28,23,195,2,27,249,22,170,8,247,22,169,8,2,76,
-28,192,249,22,160,8,194,7,63,2,71,2,71,250,80,159,42,8,26,39,248,
-80,159,43,58,39,247,80,159,43,57,39,2,77,27,28,23,199,1,250,22,172,
-15,248,22,131,16,2,60,247,22,166,8,2,78,11,27,248,80,159,45,8,49,
-39,250,22,93,23,206,1,248,22,89,248,22,131,16,2,65,9,28,193,249,22,
-79,195,194,192,27,247,22,137,16,249,80,159,39,41,38,28,23,195,2,27,249,
-22,170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,71,2,
-71,250,80,159,42,8,26,39,248,80,159,43,58,39,27,248,22,131,16,2,62,
-28,248,22,179,15,23,194,2,192,27,28,248,22,177,15,23,195,2,20,13,159,
-80,159,45,43,37,250,80,159,48,44,37,249,22,33,11,80,159,50,43,37,22,
-132,16,248,22,131,16,2,63,27,248,22,131,16,2,64,250,80,159,49,40,39,
-23,196,1,23,198,2,11,11,28,23,193,2,192,86,94,23,193,1,27,249,22,
-180,15,27,248,22,131,16,2,64,250,80,159,52,40,39,23,196,1,11,11,248,
-22,131,16,2,63,90,159,39,11,89,161,39,36,11,248,22,175,15,23,197,1,
-86,95,23,195,1,23,194,1,249,22,180,15,23,200,1,23,195,1,2,77,27,
-28,23,199,1,250,22,172,15,248,22,131,16,2,60,247,22,166,8,2,78,11,
-27,27,250,22,93,23,206,1,248,22,89,248,22,131,16,2,65,23,207,1,28,
-248,22,87,23,194,2,9,27,27,248,22,80,23,196,2,28,248,22,179,15,23,
-194,2,192,28,248,22,178,15,23,194,2,249,22,180,15,23,195,1,249,22,180,
-15,250,80,159,54,40,39,248,22,131,16,2,64,11,10,248,22,131,16,2,63,
-250,80,159,50,40,39,248,22,131,16,2,64,23,196,1,10,28,23,193,2,249,
-22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,27,248,22,81,
-23,198,1,28,248,22,87,23,194,2,9,27,248,80,159,51,8,25,39,248,22,
-80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,
-1,247,22,132,16,248,80,159,53,8,50,39,248,22,81,23,198,1,86,94,23,
-193,1,248,80,159,51,8,50,39,248,22,81,23,196,1,86,94,23,193,1,27,
-248,22,81,23,196,1,28,248,22,87,23,194,2,9,27,248,80,159,49,8,25,
-39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,15,249,22,180,
-15,23,198,1,247,22,132,16,248,80,159,51,8,50,39,248,22,81,23,198,1,
-86,94,23,193,1,248,80,159,49,8,50,39,248,22,81,23,196,1,28,193,249,
-22,79,195,194,192,27,20,13,159,80,159,37,43,37,26,9,80,159,46,44,37,
-249,22,33,11,80,159,48,43,37,22,128,15,10,22,135,15,10,22,136,15,10,
-22,137,15,10,248,22,143,6,23,196,2,28,248,22,143,7,23,194,2,12,86,
-94,248,22,171,9,23,194,1,27,20,13,159,80,159,38,43,37,26,9,80,159,
-47,44,37,249,22,33,11,80,159,49,43,37,22,128,15,10,22,135,15,10,22,
-136,15,10,22,137,15,10,248,22,143,6,23,197,2,28,248,22,143,7,23,194,
-2,12,86,94,248,22,171,9,23,194,1,27,20,13,159,80,159,39,43,37,26,
-9,80,159,48,44,37,249,22,33,11,80,159,50,43,37,22,128,15,10,22,135,
-15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,198,2,28,248,22,143,
-7,23,194,2,12,86,94,248,22,171,9,23,194,1,248,80,159,40,8,51,39,
-197,86,94,249,22,134,7,247,22,168,5,23,196,2,248,22,158,6,249,22,133,
-4,36,249,22,181,3,23,198,1,23,199,1,27,28,23,197,2,86,95,23,196,
-1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,131,16,2,64,27,250,
-80,159,42,40,39,23,197,1,11,11,27,248,22,136,4,23,199,1,27,28,23,
-194,2,23,194,1,86,94,23,194,1,36,27,248,22,136,4,23,202,1,27,28,
-23,194,2,23,194,1,86,94,23,194,1,36,249,22,135,6,23,199,1,20,20,
-95,88,163,8,36,36,48,11,9,224,4,2,33,177,2,23,195,1,23,197,1,
-27,248,22,184,5,23,195,1,248,80,159,39,8,51,39,193,159,36,20,114,159,
-36,16,1,11,16,0,20,26,145,9,2,1,2,1,29,11,11,11,11,9,9,
-11,11,11,10,43,80,158,36,36,20,114,159,44,16,44,2,2,2,3,2,4,
-2,5,2,6,2,7,2,8,30,2,11,1,20,112,97,114,97,109,101,116,101,
-114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,2,11,1,23,101,120,
-116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,
-11,3,2,12,2,13,2,14,2,15,2,16,2,17,2,18,2,19,2,20,2,
-21,2,22,2,23,2,24,2,25,2,26,2,27,2,28,2,29,2,30,30,2,
-31,76,102,105,110,100,45,108,105,110,107,115,45,112,97,116,104,33,11,4,2,
-32,2,33,2,34,2,35,30,2,31,1,21,101,120,99,101,112,116,105,111,110,
-45,104,97,110,100,108,101,114,45,107,101,121,11,2,2,36,2,37,2,38,2,
-39,2,40,2,41,2,42,2,43,2,44,2,45,16,0,37,39,36,16,0,36,
-16,26,2,13,2,14,2,12,2,29,2,3,2,39,2,26,2,27,2,28,2,
-35,2,24,2,25,2,37,2,32,2,30,2,33,2,36,2,38,2,40,2,22,
-2,21,2,23,2,34,2,19,2,18,2,20,8,26,11,11,11,16,14,2,8,
-2,17,2,15,2,45,2,16,2,6,2,44,2,43,2,4,2,42,2,7,2,
-41,2,2,2,5,16,14,11,11,11,11,11,11,11,11,11,11,11,11,11,11,
-16,14,2,8,2,17,2,15,2,45,2,16,2,6,2,44,2,43,2,4,2,
-42,2,7,2,41,2,2,2,5,50,50,37,12,11,11,16,0,16,0,16,0,
-36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,48,20,15,16,2,32,
-0,88,163,36,37,45,11,2,2,222,33,79,80,159,36,36,37,20,15,16,2,
-249,22,150,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163,36,37,
-54,38,2,4,223,0,33,84,80,159,36,38,37,20,15,16,2,88,163,36,38,
-58,38,2,5,223,0,33,86,80,159,36,39,37,20,15,16,2,20,25,96,2,
-6,88,163,8,36,39,8,25,8,32,9,223,0,33,93,88,163,36,38,47,52,
-9,223,0,33,94,88,163,36,37,46,52,9,223,0,33,95,80,159,36,40,37,
-20,15,16,2,27,248,22,141,16,248,22,162,8,27,28,249,22,163,9,247,22,
-175,8,2,48,6,1,1,59,6,1,1,58,250,22,132,8,6,14,14,40,91,
-94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,163,8,
-36,38,48,11,2,7,223,0,33,99,80,159,36,41,37,20,15,16,2,88,163,
-36,37,8,38,8,128,6,2,8,223,0,33,100,80,159,36,42,37,20,15,16,
-2,32,0,88,163,8,36,38,47,11,2,12,222,33,101,80,159,36,45,37,20,
-15,16,2,32,0,88,163,8,36,39,48,11,2,13,222,33,103,80,159,36,46,
-37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,14,222,33,104,80,159,
-36,47,37,20,15,16,2,88,163,45,39,49,8,128,128,2,15,223,0,33,106,
-80,159,36,48,37,20,15,16,2,88,163,45,40,50,8,128,128,2,17,223,0,
-33,108,80,159,36,50,37,20,15,16,2,250,22,172,15,248,22,131,16,2,60,
-247,22,166,8,2,61,80,159,36,51,37,20,15,16,2,247,22,137,2,80,158,
-36,52,20,15,16,2,11,80,158,36,53,20,15,16,2,249,22,172,15,248,22,
-131,16,2,60,2,61,80,159,36,54,37,20,15,16,2,247,22,137,2,80,158,
-36,55,20,15,16,2,11,80,158,36,56,20,15,16,2,88,163,36,36,51,8,
-144,6,2,24,223,0,33,109,80,159,36,57,37,20,15,16,2,88,163,8,32,
-36,8,37,8,128,6,9,223,0,33,110,80,159,36,8,44,39,20,15,16,2,
-88,163,8,36,37,47,16,4,36,36,8,128,64,36,2,25,223,0,33,111,80,
-159,36,58,37,20,15,16,2,88,163,36,37,56,52,2,26,223,0,33,112,80,
-159,36,59,37,20,15,16,2,88,163,36,37,55,52,2,27,223,0,33,113,80,
-159,36,8,24,37,20,15,16,2,88,163,36,37,51,52,2,28,223,0,33,114,
-80,159,36,8,25,37,20,15,16,2,88,163,8,36,38,55,16,4,36,8,128,
-2,8,128,128,36,2,55,223,0,33,115,80,159,36,8,45,39,20,15,16,2,
-88,163,8,36,39,49,16,4,36,36,8,128,128,36,2,29,223,0,33,116,80,
-159,36,8,26,37,20,15,16,2,248,80,159,37,8,28,37,88,163,8,36,36,
-53,8,240,144,1,192,4,9,223,1,33,117,80,159,36,8,27,37,20,15,16,
-2,249,22,179,8,248,22,182,8,80,159,39,8,27,38,247,22,137,2,80,159,
-36,8,29,37,20,15,16,2,249,22,179,8,248,22,182,8,80,159,39,8,27,
-38,11,80,159,36,8,30,37,20,15,16,2,248,22,18,65,115,116,97,109,112,
-80,159,36,8,31,37,20,15,16,2,88,163,36,37,46,16,2,36,8,240,0,
-128,0,0,9,223,0,33,119,80,159,36,8,46,39,20,15,16,2,88,163,36,
-38,48,16,4,36,8,240,0,128,0,0,8,240,2,64,0,0,36,2,35,223,
-0,33,127,80,159,36,8,32,37,20,15,16,2,32,0,88,163,8,36,37,45,
-11,2,36,222,33,128,2,80,159,36,8,34,37,20,15,16,2,88,163,36,39,
-46,16,4,8,240,128,129,0,0,8,240,31,104,0,0,39,36,2,37,223,0,
-33,140,2,80,159,36,8,35,37,20,15,16,2,88,163,36,38,56,16,4,36,
-36,52,36,2,38,223,0,33,142,2,80,159,36,8,36,37,20,15,16,2,88,
-163,8,36,38,8,25,16,4,36,8,128,32,8,240,8,128,0,0,36,2,55,
-223,0,33,143,2,80,159,36,8,47,39,20,15,16,2,88,163,36,40,8,33,
-16,4,36,8,128,32,8,240,24,128,0,0,36,2,16,223,0,33,154,2,80,
-159,36,49,37,20,15,16,2,32,0,88,163,36,39,50,11,2,39,222,33,155,
-2,80,159,36,8,37,37,20,15,16,2,32,0,88,163,36,41,8,27,11,2,
-40,222,33,158,2,80,159,36,8,38,37,20,15,16,2,20,27,158,32,0,88,
-163,36,38,52,11,2,41,222,33,161,2,88,163,36,38,49,16,4,36,36,8,
-64,36,2,41,223,0,33,163,2,80,159,36,8,39,37,20,15,16,2,20,27,
-158,32,0,88,163,36,38,52,11,2,42,222,33,166,2,88,163,36,38,49,16,
-4,36,36,8,64,36,2,42,223,0,33,167,2,80,159,36,8,40,37,20,15,
-16,2,20,27,158,32,0,88,163,36,37,44,11,2,43,222,33,168,2,32,0,
-88,163,36,37,44,11,2,43,222,33,169,2,80,159,36,8,41,37,20,15,16,
-2,88,163,8,36,37,53,16,4,52,8,128,8,36,37,2,55,223,0,33,170,
-2,80,159,36,8,48,39,20,15,16,2,88,163,8,36,37,53,16,4,52,8,
-128,8,36,38,2,55,223,0,33,171,2,80,159,36,8,49,39,20,15,16,2,
-88,163,8,36,37,57,16,4,52,8,128,8,36,40,2,55,223,0,33,172,2,
-80,159,36,8,50,39,20,15,16,2,20,25,96,2,44,88,163,36,36,56,16,
-4,8,32,8,160,17,36,37,9,223,0,33,173,2,88,163,36,37,57,16,4,
-8,32,8,160,17,36,38,9,223,0,33,174,2,88,163,36,38,8,27,16,4,
-8,176,6,8,128,25,36,40,9,223,0,33,175,2,80,159,36,8,42,37,20,
-15,16,2,88,163,8,36,37,57,16,4,8,128,6,36,36,44,2,55,223,0,
-33,176,2,80,159,36,8,51,39,20,15,16,2,88,163,8,36,39,54,16,4,
-52,36,36,44,2,45,223,0,33,178,2,80,159,36,8,43,37,95,29,94,2,
-9,68,35,37,107,101,114,110,101,108,11,29,94,2,9,69,35,37,109,105,110,
-45,115,116,120,11,2,31,9,9,9,36,0};
- EVAL_ONE_SIZED_STR((char *)expr, 18491);
+87,23,194,2,9,27,248,80,159,42,56,39,248,22,80,23,196,2,28,23,193,
+2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,
+159,44,8,49,39,248,22,81,23,198,1,86,94,23,193,1,248,80,159,42,8,
+49,39,248,22,81,23,196,1,27,247,22,137,16,27,248,80,159,39,52,39,247,
+80,159,39,51,39,249,80,159,40,41,38,28,23,196,2,27,249,22,170,8,247,
+22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,71,2,71,250,80,159,
+43,57,39,23,198,2,2,77,27,28,23,200,1,250,22,172,15,248,22,131,16,
+2,65,250,22,157,2,23,205,1,2,62,247,22,166,8,2,78,86,94,23,199,
+1,11,27,248,80,159,46,8,47,39,250,22,93,9,248,22,89,248,22,131,16,
+2,63,9,28,193,249,22,79,195,194,192,27,247,22,137,16,27,248,80,159,39,
+52,39,247,80,159,39,51,39,249,80,159,40,41,38,28,23,196,2,27,249,22,
+170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,71,2,71,
+250,80,159,43,57,39,23,198,2,2,77,27,28,23,200,1,250,22,172,15,248,
+22,131,16,2,65,250,22,157,2,23,205,1,2,62,247,22,166,8,2,78,86,
+94,23,199,1,11,27,248,80,159,46,8,48,39,250,22,93,23,207,1,248,22,
+89,248,22,131,16,2,63,9,28,193,249,22,79,195,194,192,27,247,22,137,16,
+27,248,80,159,39,52,39,27,248,22,131,16,2,59,28,248,22,179,15,23,194,
+2,192,27,28,248,22,177,15,23,195,2,20,13,159,80,159,41,43,37,250,80,
+159,44,44,37,249,22,33,11,80,159,46,43,37,22,132,16,248,22,131,16,2,
+60,27,248,22,131,16,2,61,250,80,159,45,40,39,23,196,1,23,198,2,11,
+11,28,23,193,2,192,86,94,23,193,1,27,249,22,180,15,27,248,22,131,16,
+2,61,250,80,159,48,40,39,23,196,1,11,11,248,22,131,16,2,60,90,159,
+39,11,89,161,39,36,11,248,22,175,15,23,197,1,86,95,23,195,1,23,194,
+1,249,22,180,15,23,200,1,23,195,1,249,80,159,40,41,38,28,23,196,2,
+27,249,22,170,8,247,22,169,8,2,76,28,192,249,22,160,8,194,7,63,2,
+71,2,71,250,80,159,43,57,39,23,198,2,2,77,27,28,23,200,1,250,22,
+172,15,248,22,131,16,2,65,250,22,157,2,23,205,1,2,62,247,22,166,8,
+2,78,86,94,23,199,1,11,27,27,250,22,93,23,207,1,248,22,89,248,22,
+131,16,2,63,23,208,1,28,248,22,87,23,194,2,9,27,27,248,22,80,23,
+196,2,28,248,22,179,15,23,194,2,192,28,248,22,178,15,23,194,2,249,22,
+180,15,23,195,1,249,22,180,15,250,80,159,55,40,39,248,22,131,16,2,61,
+11,10,248,22,131,16,2,60,250,80,159,51,40,39,248,22,131,16,2,61,23,
+196,1,10,28,23,193,2,249,22,79,248,22,182,15,249,22,180,15,23,198,1,
+247,22,132,16,27,248,22,81,23,198,1,28,248,22,87,23,194,2,9,27,248,
+80,159,52,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,22,182,
+15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,54,8,49,39,248,22,
+81,23,198,1,86,94,23,193,1,248,80,159,52,8,49,39,248,22,81,23,196,
+1,86,94,23,193,1,27,248,22,81,23,196,1,28,248,22,87,23,194,2,9,
+27,248,80,159,50,56,39,248,22,80,23,196,2,28,23,193,2,249,22,79,248,
+22,182,15,249,22,180,15,23,198,1,247,22,132,16,248,80,159,52,8,49,39,
+248,22,81,23,198,1,86,94,23,193,1,248,80,159,50,8,49,39,248,22,81,
+23,196,1,28,193,249,22,79,195,194,192,27,20,13,159,80,159,37,43,37,26,
+9,80,159,46,44,37,249,22,33,11,80,159,48,43,37,22,128,15,10,22,135,
+15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,196,2,28,248,22,143,
+7,23,194,2,12,86,94,248,22,171,9,23,194,1,27,20,13,159,80,159,38,
+43,37,26,9,80,159,47,44,37,249,22,33,11,80,159,49,43,37,22,128,15,
+10,22,135,15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,197,2,28,
+248,22,143,7,23,194,2,12,86,94,248,22,171,9,23,194,1,27,20,13,159,
+80,159,39,43,37,26,9,80,159,48,44,37,249,22,33,11,80,159,50,43,37,
+22,128,15,10,22,135,15,10,22,136,15,10,22,137,15,10,248,22,143,6,23,
+198,2,28,248,22,143,7,23,194,2,12,86,94,248,22,171,9,23,194,1,248,
+80,159,40,8,50,39,197,86,94,249,22,134,7,247,22,168,5,23,196,2,248,
+22,158,6,249,22,133,4,36,249,22,181,3,23,198,1,23,199,1,27,28,23,
+197,2,86,95,23,196,1,23,195,1,23,197,1,86,94,23,197,1,27,248,22,
+131,16,2,61,27,250,80,159,42,40,39,23,197,1,11,11,27,248,22,136,4,
+23,199,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,27,248,22,136,
+4,23,202,1,27,28,23,194,2,23,194,1,86,94,23,194,1,36,249,22,135,
+6,23,199,1,20,20,95,88,163,8,36,36,48,11,9,224,4,2,33,179,2,
+23,195,1,23,197,1,27,248,22,184,5,23,195,1,248,80,159,39,8,50,39,
+193,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1,2,1,29,
+11,11,11,11,9,9,11,11,11,10,43,80,158,36,36,20,114,159,44,16,43,
+2,2,2,3,2,4,2,5,2,6,2,7,2,8,30,2,11,1,20,112,97,
+114,97,109,101,116,101,114,105,122,97,116,105,111,110,45,107,101,121,11,6,30,
+2,11,1,23,101,120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,
+122,97,116,105,111,110,11,3,2,12,2,13,2,14,2,15,2,16,2,17,2,
+18,2,19,2,20,2,21,2,22,2,23,2,24,2,25,30,2,26,76,102,105,
+110,100,45,108,105,110,107,115,45,112,97,116,104,33,11,4,2,27,2,28,2,
+29,2,30,2,31,2,32,2,33,2,34,30,2,26,1,21,101,120,99,101,112,
+116,105,111,110,45,104,97,110,100,108,101,114,45,107,101,121,11,2,2,35,2,
+36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,16,0,37,39,
+36,16,0,36,16,25,2,13,2,14,2,12,2,24,2,25,2,3,2,38,2,
+21,2,22,2,23,2,34,2,18,2,19,2,20,2,36,2,31,2,27,2,32,
+2,35,2,37,2,39,2,33,2,29,2,28,2,30,8,25,11,11,11,16,14,
+2,8,2,17,2,15,2,44,2,16,2,6,2,43,2,42,2,4,2,41,2,
+7,2,40,2,2,2,5,16,14,11,11,11,11,11,11,11,11,11,11,11,11,
+11,11,16,14,2,8,2,17,2,15,2,44,2,16,2,6,2,43,2,42,2,
+4,2,41,2,7,2,40,2,2,2,5,50,50,37,12,11,11,16,0,16,0,
+16,0,36,36,11,12,11,11,16,0,16,0,16,0,36,36,16,47,20,15,16,
+2,32,0,88,163,36,37,45,11,2,2,222,33,79,80,159,36,36,37,20,15,
+16,2,249,22,150,7,7,92,7,92,80,159,36,37,37,20,15,16,2,88,163,
+36,37,54,38,2,4,223,0,33,84,80,159,36,38,37,20,15,16,2,88,163,
+36,38,58,38,2,5,223,0,33,86,80,159,36,39,37,20,15,16,2,20,25,
+96,2,6,88,163,8,36,39,8,25,8,32,9,223,0,33,93,88,163,36,38,
+47,52,9,223,0,33,94,88,163,36,37,46,52,9,223,0,33,95,80,159,36,
+40,37,20,15,16,2,27,248,22,141,16,248,22,162,8,27,28,249,22,163,9,
+247,22,175,8,2,47,6,1,1,59,6,1,1,58,250,22,132,8,6,14,14,
+40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,196,1,88,
+163,8,36,38,48,11,2,7,223,0,33,99,80,159,36,41,37,20,15,16,2,
+88,163,36,37,8,38,8,128,6,2,8,223,0,33,100,80,159,36,42,37,20,
+15,16,2,32,0,88,163,8,36,38,47,11,2,12,222,33,101,80,159,36,45,
+37,20,15,16,2,32,0,88,163,8,36,39,48,11,2,13,222,33,103,80,159,
+36,46,37,20,15,16,2,32,0,88,163,8,36,38,46,11,2,14,222,33,104,
+80,159,36,47,37,20,15,16,2,88,163,45,39,49,8,128,128,2,15,223,0,
+33,106,80,159,36,48,37,20,15,16,2,88,163,45,40,50,8,128,128,2,17,
+223,0,33,108,80,159,36,50,37,20,15,16,2,88,163,36,36,51,8,144,6,
+2,18,223,0,33,109,80,159,36,51,37,20,15,16,2,88,163,8,32,36,8,
+37,8,128,6,9,223,0,33,110,80,159,36,8,43,39,20,15,16,2,88,163,
+8,36,37,47,16,4,36,36,8,128,32,36,2,19,223,0,33,111,80,159,36,
+52,37,20,15,16,2,20,27,158,32,0,88,163,36,37,45,11,2,20,222,33,
+112,32,0,88,163,36,37,45,11,2,20,222,33,113,80,159,36,53,37,20,15,
+16,2,88,163,36,37,56,52,2,21,223,0,33,114,80,159,36,54,37,20,15,
+16,2,88,163,36,37,55,52,2,22,223,0,33,115,80,159,36,55,37,20,15,
+16,2,88,163,36,37,51,52,2,23,223,0,33,116,80,159,36,56,37,20,15,
+16,2,88,163,8,36,38,55,16,4,36,40,8,128,64,36,2,54,223,0,33,
+117,80,159,36,8,44,39,20,15,16,2,88,163,8,36,39,49,16,4,36,36,
+8,128,64,36,2,24,223,0,33,118,80,159,36,57,37,20,15,16,2,248,80,
+159,37,59,37,88,163,8,36,36,53,8,240,144,1,37,0,9,223,1,33,119,
+80,159,36,58,37,20,15,16,2,248,22,80,80,159,37,58,38,80,159,36,8,
+24,37,20,15,16,2,248,22,81,80,159,37,58,38,80,159,36,8,25,37,20,
+15,16,2,247,22,137,2,80,158,36,8,26,20,15,16,2,11,80,158,36,8,
+27,20,15,16,2,249,22,179,8,248,22,182,8,80,159,39,8,24,38,247,22,
+137,2,80,159,36,8,28,37,20,15,16,2,249,22,179,8,248,22,182,8,80,
+159,39,8,24,38,11,80,159,36,8,29,37,20,15,16,2,248,22,18,65,115,
+116,97,109,112,80,159,36,8,30,37,20,15,16,2,88,163,36,37,46,16,2,
+36,8,240,0,64,0,0,9,223,0,33,121,80,159,36,8,45,39,20,15,16,
+2,88,163,36,38,48,16,4,36,8,240,0,64,0,0,8,129,128,36,2,34,
+223,0,33,129,2,80,159,36,8,31,37,20,15,16,2,32,0,88,163,8,36,
+37,45,11,2,35,222,33,130,2,80,159,36,8,33,37,20,15,16,2,88,163,
+36,38,45,16,4,8,128,6,8,240,0,191,0,0,37,36,2,36,223,0,33,
+142,2,80,159,36,8,34,37,20,15,16,2,88,163,36,38,56,16,4,36,36,
+44,36,2,37,223,0,33,144,2,80,159,36,8,35,37,20,15,16,2,88,163,
+8,36,38,8,25,16,4,36,8,128,4,8,240,4,64,0,0,36,2,54,223,
+0,33,145,2,80,159,36,8,46,39,20,15,16,2,88,163,36,40,8,33,16,
+4,36,8,128,4,8,240,12,64,0,0,36,2,16,223,0,33,156,2,80,159,
+36,49,37,20,15,16,2,32,0,88,163,36,39,50,11,2,38,222,33,157,2,
+80,159,36,8,36,37,20,15,16,2,32,0,88,163,36,41,8,27,11,2,39,
+222,33,160,2,80,159,36,8,37,37,20,15,16,2,20,27,158,32,0,88,163,
+36,38,52,11,2,40,222,33,163,2,88,163,36,38,49,16,4,36,36,8,32,
+36,2,40,223,0,33,165,2,80,159,36,8,38,37,20,15,16,2,20,27,158,
+32,0,88,163,36,38,52,11,2,41,222,33,168,2,88,163,36,38,49,16,4,
+36,36,8,32,36,2,41,223,0,33,169,2,80,159,36,8,39,37,20,15,16,
+2,20,27,158,32,0,88,163,36,37,44,11,2,42,222,33,170,2,32,0,88,
+163,36,37,44,11,2,42,222,33,171,2,80,159,36,8,40,37,20,15,16,2,
+88,163,8,36,37,53,16,4,52,52,8,240,0,128,0,0,36,2,54,223,0,
+33,172,2,80,159,36,8,47,39,20,15,16,2,88,163,8,36,37,53,16,4,
+52,52,36,37,2,54,223,0,33,173,2,80,159,36,8,48,39,20,15,16,2,
+88,163,8,36,37,57,16,4,52,52,36,38,2,54,223,0,33,174,2,80,159,
+36,8,49,39,20,15,16,2,20,25,96,2,43,88,163,36,36,57,16,4,8,
+240,32,128,0,0,8,33,8,240,0,128,0,0,36,9,223,0,33,175,2,88,
+163,36,37,58,16,4,8,240,32,128,0,0,8,33,36,37,9,223,0,33,176,
+2,88,163,36,38,8,28,16,4,8,176,6,8,49,36,38,9,223,0,33,177,
+2,80,159,36,8,41,37,20,15,16,2,88,163,8,36,37,57,16,4,8,128,
+6,36,36,40,2,54,223,0,33,178,2,80,159,36,8,50,39,20,15,16,2,
+88,163,8,36,39,54,16,4,52,36,36,40,2,44,223,0,33,180,2,80,159,
+36,8,42,37,95,29,94,2,9,68,35,37,107,101,114,110,101,108,11,29,94,
+2,9,69,35,37,109,105,110,45,115,116,120,11,2,26,9,9,9,36,0};
+ EVAL_ONE_SIZED_STR((char *)expr, 18415);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,1,0,0,15,0,40,
0,57,0,75,0,97,0,120,0,140,0,162,0,171,0,180,0,187,0,196,0,
203,0,0,0,229,1,0,0,74,35,37,112,108,97,99,101,45,115,116,114,117,
@@ -1014,7 +1010,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 556);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,106,0,0,0,1,0,0,7,0,18,
0,45,0,51,0,60,0,67,0,89,0,102,0,128,0,145,0,167,0,175,0,
187,0,202,0,218,0,236,0,0,1,12,1,28,1,51,1,75,1,87,1,118,
@@ -1496,7 +1492,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 10051);
}
{
- SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,49,84,0,0,0,0,0,0,0,0,0,
+ SHARED_OK static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,53,46,57,48,46,48,46,51,84,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,1,0,0,10,0,16,
0,29,0,44,0,58,0,78,0,90,0,104,0,118,0,170,0,0,0,99,1,
0,0,69,35,37,98,117,105,108,116,105,110,65,113,117,111,116,101,29,94,2,
@@ -1504,8 +1500,8 @@
111,114,107,11,29,94,2,2,68,35,37,112,97,114,97,109,122,11,29,94,2,
2,74,35,37,112,108,97,99,101,45,115,116,114,117,99,116,11,29,94,2,2,
66,35,37,98,111,111,116,11,29,94,2,2,68,35,37,101,120,112,111,98,115,
-11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,227,
-92,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,
+11,29,94,2,2,68,35,37,107,101,114,110,101,108,11,97,36,11,8,240,95,
+93,0,0,100,159,2,3,36,36,159,2,4,36,36,159,2,5,36,36,159,2,
6,36,36,159,2,7,36,36,159,2,8,36,36,159,2,9,36,36,159,2,9,
36,36,16,0,159,36,20,114,159,36,16,1,11,16,0,20,26,145,9,2,1,
2,1,29,11,11,11,11,9,9,11,11,11,18,96,11,46,46,46,36,80,158,
diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h
index f2d198ed8d..ad7f312299 100644
--- a/racket/src/racket/src/schvers.h
+++ b/racket/src/racket/src/schvers.h
@@ -13,12 +13,12 @@
consistently.)
*/
-#define MZSCHEME_VERSION "5.90.0.2"
+#define MZSCHEME_VERSION "5.90.0.3"
#define MZSCHEME_VERSION_X 5
#define MZSCHEME_VERSION_Y 90
#define MZSCHEME_VERSION_Z 0
-#define MZSCHEME_VERSION_W 2
+#define MZSCHEME_VERSION_W 3
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
diff --git a/racket/src/racket/src/startup.inc b/racket/src/racket/src/startup.inc
index 4491924adc..a590b311ae 100644
--- a/racket/src/racket/src/startup.inc
+++ b/racket/src/racket/src/startup.inc
@@ -363,15 +363,6 @@
"(find-col-file fail"
" collection collection-path"
" file-name)))"
-"(define-values(user-links-path)(build-path(find-system-path 'addon-dir)"
-"(version)"
-" \"links.rktd\"))"
-"(define-values(user-links-cache)(make-hasheq))"
-"(define-values(user-links-stamp) #f)"
-"(define-values(shared-links-path)(build-path(find-system-path 'addon-dir)"
-" \"links.rktd\"))"
-"(define-values(shared-links-cache)(make-hasheq))"
-"(define-values(shared-links-stamp) #f)"
"(define-values(find-config-dir)"
"(lambda()"
"(let((c(find-system-path 'config-dir)))"
@@ -393,6 +384,11 @@
"(lambda()"
"(call-with-default-reading-parameterization read))))"
" #hash()))))"
+"(define-values(get-installation-name)"
+"(lambda(config-table)"
+"(hash-ref config-table"
+" 'installation-name "
+"(version))))"
"(define-values(coerce-to-path)"
"(lambda(p)"
"(cond"
@@ -430,7 +426,7 @@
"((not(car l))(append orig-l(loop(cdr l))))"
"(else(cons(coerce-to-path(car l))(loop(cdr l))))))"
" orig-l))))"
-"(define-values(links-paths)(find-links-path!"
+"(define-values(all-links-paths)(find-links-path!"
"(lambda()"
"(let*((d(find-config-dir))"
"(ht(get-config-table d))"
@@ -439,11 +435,18 @@
"(build-path(or(hash-ref ht 'share-dir #f)"
" (build-path 'up \"share\"))"
" \"links.rktd\")))))"
-"(list->vector"
+"(cons(list->vector"
"(add-config-search"
" ht"
" 'links-search-files"
-"(list lf)))))))"
+"(list lf)))"
+"(build-path(find-system-path 'addon-dir)"
+"(get-installation-name ht)"
+" \"links.rktd\"))))))"
+"(define-values(links-paths)(car all-links-paths))"
+"(define-values(user-links-path)(cdr all-links-paths))"
+"(define-values(user-links-cache)(make-hasheq))"
+"(define-values(user-links-stamp) #f)"
"(define-values(links-caches)(make-vector(vector-length links-paths)(make-hasheq)))"
"(define-values(links-stamps)(make-vector(vector-length links-paths) #f))"
"(define-values(stamp-prompt-tag)(make-continuation-prompt-tag 'stamp))"
@@ -504,7 +507,7 @@
"(or(not a)"
"(not(car a)))))"
"(define-values(get-linked-collections)"
-"(lambda(user? shared? ii)"
+"(lambda(user? ii)"
"(call/ec(lambda(esc)"
"(define-values(make-handler)"
"(lambda(ts)"
@@ -517,7 +520,6 @@
" \"error reading collection links file ~s: ~a\""
"(cond"
"(user? user-links-path)"
-"(shared? shared-links-path)"
"(else(vector-ref links-paths ii)))"
"(exn-message exn))"
"(current-continuation-marks))))"
@@ -527,9 +529,6 @@
"(user?"
"(set! user-links-cache(make-hasheq))"
"(set! user-links-stamp ts))"
-"(shared?"
-"(set! shared-links-cache(make-hasheq))"
-"(set! shared-links-stamp ts))"
"(else"
"(vector-set! links-caches ii(make-hasheq))"
"(vector-set! links-stamps ii ts))))"
@@ -541,11 +540,9 @@
"(make-handler #f)"
"(let*((a-links-path(cond"
"(user? user-links-path)"
-"(shared? shared-links-path)"
"(else(vector-ref links-paths ii))))"
"(a-links-stamp(cond"
"(user? user-links-stamp)"
-"(shared? shared-links-stamp)"
"(else(vector-ref links-stamps ii))))"
"(ts(file->stamp a-links-path a-links-stamp)))"
"(if(not(equal? ts a-links-stamp))"
@@ -614,16 +611,12 @@
"(user?"
"(set! user-links-cache ht)"
"(set! user-links-stamp ts))"
-"(shared?"
-"(set! shared-links-cache ht)"
-"(set! shared-links-stamp ts))"
"(else"
"(vector-set! links-caches ii ht)"
"(vector-set! links-stamps ii ts)))"
" ht)))))"
"(cond"
"(user? user-links-cache)"
-"(shared? shared-links-cache)"
"(else(vector-ref links-caches ii))))))))))"
"(define-values(normalize-collection-reference)"
"(lambda(collection collection-path)"
@@ -655,10 +648,7 @@
"(append"
"(if(and links?(use-user-specific-search-paths))"
"(append"
-"(let((ht(get-linked-collections #t #f 0)))"
-"(append(hash-ref ht sym null)"
-"(hash-ref ht #f null)))"
-"(let((ht(get-linked-collections #f #t 0)))"
+"(let((ht(get-linked-collections #t 0)))"
"(append(hash-ref ht sym null)"
"(hash-ref ht #f null))))"
" null)"
@@ -666,7 +656,7 @@
"(let loop((ii 0))"
"(if(ii . >= .(vector-length links-paths))"
" null"
-"(let((ht(get-linked-collections #f #f ii)))"
+"(let((ht(get-linked-collections #f ii)))"
"(append(hash-ref ht sym null)"
"(hash-ref ht #f null)"
"(loop(add1 ii))))))"
@@ -808,7 +798,8 @@
"((extra-collects-dirs)(find-library-collection-paths extra-collects-dirs null))"
"((extra-collects-dirs post-collects-dirs)"
"(let((user-too?(use-user-specific-search-paths))"
-"(cons-if(lambda(f r)(if f(cons f r) r))))"
+"(cons-if(lambda(f r)(if f(cons f r) r)))"
+"(config-table(get-config-table(find-config-dir))))"
"(path-list-string->path-list"
"(if user-too?"
"(let((c(environment-variables-ref(current-environment-variables)"
@@ -818,12 +809,12 @@
" \"\"))"
" \"\")"
"(add-config-search"
-"(get-config-table(find-config-dir))"
+" config-table"
" 'collects-search-dirs"
"(cons-if"
"(and user-too?"
"(build-path(find-system-path 'addon-dir)"
-"(version)"
+"(get-installation-name config-table)"
" \"collects\"))"
"(let loop((l(append"
" extra-collects-dirs"
diff --git a/racket/src/racket/src/startup.rktl b/racket/src/racket/src/startup.rktl
index 7bbf4a68bd..036b302e9f 100644
--- a/racket/src/racket/src/startup.rktl
+++ b/racket/src/racket/src/startup.rktl
@@ -430,17 +430,6 @@
collection collection-path
file-name)))
- (define-values (user-links-path) (build-path (find-system-path 'addon-dir)
- (version)
- "links.rktd"))
- (define-values (user-links-cache) (make-hasheq))
- (define-values (user-links-stamp) #f)
-
- (define-values (shared-links-path) (build-path (find-system-path 'addon-dir)
- "links.rktd"))
- (define-values (shared-links-cache) (make-hasheq))
- (define-values (shared-links-stamp) #f)
-
(define-values (find-config-dir)
(lambda ()
(let ([c (find-system-path 'config-dir)])
@@ -464,6 +453,12 @@
(call-with-default-reading-parameterization read))))
#hash()))))
+ (define-values (get-installation-name)
+ (lambda (config-table)
+ (hash-ref config-table
+ 'installation-name
+ (version))))
+
(define-values (coerce-to-path)
(lambda (p)
(cond
@@ -495,7 +490,7 @@
(find-system-path 'orig-dir)))]
[else
(find-executable-path (find-system-path 'exec-file) collects-path #t)])))
-
+
(define-values (add-config-search)
(lambda (ht key orig-l)
(let ([l (hash-ref ht key #f)])
@@ -507,25 +502,34 @@
[else (cons (coerce-to-path (car l)) (loop (cdr l)))]))
orig-l))))
- (define-values (links-paths) (find-links-path!
- ;; This thunk is called once per place, and the result
- ;; is remembered for later invocations. Otherwise, the
- ;; search for the config file can trip over filesystem
- ;; restrictions imposed by security guards.
- (lambda ()
- (let* ([d (find-config-dir)]
- [ht (get-config-table d)]
- [lf (coerce-to-path
- (or (hash-ref ht 'links-file #f)
- (build-path (or (hash-ref ht 'share-dir #f)
- (build-path 'up "share"))
- "links.rktd")))])
- (list->vector
- (add-config-search
- ht
- 'links-search-files
- (list lf)))))))
-
+ (define-values (all-links-paths) (find-links-path!
+ ;; This thunk is called once per place, and the result
+ ;; is remembered for later invocations. Otherwise, the
+ ;; search for the config file can trip over filesystem
+ ;; restrictions imposed by security guards.
+ (lambda ()
+ (let* ([d (find-config-dir)]
+ [ht (get-config-table d)]
+ [lf (coerce-to-path
+ (or (hash-ref ht 'links-file #f)
+ (build-path (or (hash-ref ht 'share-dir #f)
+ (build-path 'up "share"))
+ "links.rktd")))])
+ (cons (list->vector
+ (add-config-search
+ ht
+ 'links-search-files
+ (list lf)))
+ (build-path (find-system-path 'addon-dir)
+ (get-installation-name ht)
+ "links.rktd"))))))
+
+ (define-values (links-paths) (car all-links-paths))
+ (define-values (user-links-path) (cdr all-links-paths))
+
+ (define-values (user-links-cache) (make-hasheq))
+ (define-values (user-links-stamp) #f)
+
(define-values (links-caches) (make-vector (vector-length links-paths) (make-hasheq)))
(define-values (links-stamps) (make-vector (vector-length links-paths) #f))
@@ -595,7 +599,7 @@
(not (car a)))))
(define-values (get-linked-collections)
- (lambda (user? shared? ii)
+ (lambda (user? ii)
(call/ec (lambda (esc)
(define-values (make-handler)
(lambda (ts)
@@ -608,7 +612,6 @@
"error reading collection links file ~s: ~a"
(cond
[user? user-links-path]
- [shared? shared-links-path]
[else (vector-ref links-paths ii)])
(exn-message exn))
(current-continuation-marks))))
@@ -618,9 +621,6 @@
[user?
(set! user-links-cache (make-hasheq))
(set! user-links-stamp ts)]
- [shared?
- (set! shared-links-cache (make-hasheq))
- (set! shared-links-stamp ts)]
[else
(vector-set! links-caches ii (make-hasheq))
(vector-set! links-stamps ii ts)]))
@@ -633,11 +633,9 @@
(make-handler #f)
(let* ([a-links-path (cond
[user? user-links-path]
- [shared? shared-links-path]
[else (vector-ref links-paths ii)])]
[a-links-stamp (cond
[user? user-links-stamp]
- [shared? shared-links-stamp]
[else (vector-ref links-stamps ii)])]
[ts (file->stamp a-links-path a-links-stamp)])
(if (not (equal? ts a-links-stamp))
@@ -714,16 +712,12 @@
[user?
(set! user-links-cache ht)
(set! user-links-stamp ts)]
- [shared?
- (set! shared-links-cache ht)
- (set! shared-links-stamp ts)]
[else
(vector-set! links-caches ii ht)
(vector-set! links-stamps ii ts)])
ht)))))
(cond
[user? user-links-cache]
- [shared? shared-links-cache]
[else (vector-ref links-caches ii)]))))))))
(define-values (normalize-collection-reference)
@@ -759,10 +753,7 @@
;; list of paths and (box path)s:
(if (and links? (use-user-specific-search-paths))
(append
- (let ([ht (get-linked-collections #t #f 0)])
- (append (hash-ref ht sym null)
- (hash-ref ht #f null)))
- (let ([ht (get-linked-collections #f #t 0)])
+ (let ([ht (get-linked-collections #t 0)])
(append (hash-ref ht sym null)
(hash-ref ht #f null))))
null)
@@ -771,7 +762,7 @@
(let loop ([ii 0])
(if (ii . >= . (vector-length links-paths))
null
- (let ([ht (get-linked-collections #f #f ii)])
+ (let ([ht (get-linked-collections #f ii)])
(append (hash-ref ht sym null)
(hash-ref ht #f null)
(loop (add1 ii))))))
@@ -927,7 +918,8 @@
[(extra-collects-dirs) (find-library-collection-paths extra-collects-dirs null)]
[(extra-collects-dirs post-collects-dirs)
(let ([user-too? (use-user-specific-search-paths)]
- [cons-if (lambda (f r) (if f (cons f r) r))])
+ [cons-if (lambda (f r) (if f (cons f r) r))]
+ [config-table (get-config-table (find-config-dir))])
(path-list-string->path-list
(if user-too?
(let ([c (environment-variables-ref (current-environment-variables)
@@ -937,12 +929,12 @@
""))
"")
(add-config-search
- (get-config-table (find-config-dir))
+ config-table
'collects-search-dirs
(cons-if
(and user-too?
(build-path (find-system-path 'addon-dir)
- (version)
+ (get-installation-name config-table)
"collects"))
(let loop ([l (append
extra-collects-dirs