diff --git a/.gitattributes b/.gitattributes index 82694d81f276b2..5eead66489830d 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,8 +1,41 @@ +# Binary data types +*.aif binary +*.aifc binary +*.aiff binary +*.au binary +*.bmp binary +*.exe binary +*.icns binary +*.gif binary +*.ico binary +*.jpg binary *.pck binary -Lib/test/cjkencodings/* binary -Lib/test/decimaltestdata/*.decTest binary +*.png binary +*.psd binary +*.tar binary +*.wav binary +*.whl binary +*.zip binary + +# Specific binary files Lib/test/sndhdrdata/sndhdr.* binary -Lib/test/test_email/data/msg_26.txt binary -Lib/test/xmltestdata/* binary -Lib/venv/scripts/nt/* binary -Lib/test/coding20731.py binary + +# Text files that should not be subject to eol conversion +Lib/test/cjkencodings/* -text +Lib/test/decimaltestdata/*.decTest -text +Lib/test/test_email/data/*.txt -text +Lib/test/xmltestdata/* -text +Lib/test/coding20731.py -text + +# Special files in third party code +Modules/zlib/zlib.map -text + +# CRLF files +*.bat text eol=crlf +*.ps1 text eol=crlf +*.sln text eol=crlf +*.vcxproj* text eol=crlf +*.props text eol=crlf +*.proj text eol=crlf +PCbuild/readme.txt text eol=crlf +PC/readme.txt text eol=crlf diff --git a/.travis.yml b/.travis.yml index 778030709acd41..d30de21e82197d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -71,6 +71,7 @@ matrix: # Travis provides only 2 cores, so don't overdo the parallelism and waste memory. before_script: - | + set -e if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' then echo "Only docs were updated, stopping build process." @@ -78,6 +79,14 @@ before_script: fi ./configure --with-pydebug make -j4 + make -j4 regen-all clinic + changes=`git status --porcelain` + if ! test -z "$changes" + then + echo "Generated files not up to date" + echo "$changes" + exit 1 + fi script: # `-r -w` implicitly provided through `make buildbottest`. diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index f82dc40e0931fe..bc32380e976bfb 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -138,23 +138,32 @@ operation is being performed, so the intermediate analysis object isn't useful: Added *file* parameter. -.. function:: dis(x=None, *, file=None) +.. function:: dis(x=None, *, file=None, depth=None) Disassemble the *x* object. *x* can denote either a module, a class, a method, a function, a generator, a code object, a string of source code or a byte sequence of raw bytecode. For a module, it disassembles all functions. For a class, it disassembles all methods (including class and static methods). For a code object or sequence of raw bytecode, it prints one line per bytecode - instruction. Strings are first compiled to code objects with the :func:`compile` + instruction. It also recursively disassembles nested code objects (the code + of comprehensions, generator expressions and nested functions, and the code + used for building nested classes). + Strings are first compiled to code objects with the :func:`compile` built-in function before being disassembled. If no object is provided, this function disassembles the last traceback. The disassembly is written as text to the supplied *file* argument if provided and to ``sys.stdout`` otherwise. + The maximal depth of recursion is limited by *depth* unless it is ``None``. + ``depth=0`` means no recursion. + .. versionchanged:: 3.4 Added *file* parameter. + .. versionchanged:: 3.7 + Implemented recursive disassembling and added *depth* parameter. + .. function:: distb(tb=None, *, file=None) diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst index 8cb31869d3ecc6..729a239a1baff5 100644 --- a/Doc/library/ssl.rst +++ b/Doc/library/ssl.rst @@ -2112,8 +2112,8 @@ provided. When compared to :class:`SSLSocket`, this object lacks the following features: - - Any form of network IO incluging methods such as ``recv()`` and - ``send()``. + - Any form of network IO; ``recv()`` and ``send()`` read and write only to + the underlying :class:`MemoryBIO` buffers. - There is no *do_handshake_on_connect* machinery. You must always manually call :meth:`~SSLSocket.do_handshake` to start the handshake. diff --git a/Doc/make.bat b/Doc/make.bat index b1a3738f309d3b..d9c0ad0adecfe6 100644 --- a/Doc/make.bat +++ b/Doc/make.bat @@ -1,130 +1,130 @@ -@echo off -setlocal - -pushd %~dp0 - -set this=%~n0 - -if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build -if "%PYTHON%" EQU "" set PYTHON=py - -if "%1" NEQ "htmlhelp" goto :skiphhcsearch -if exist "%HTMLHELP%" goto :skiphhcsearch - -rem Search for HHC in likely places -set HTMLHELP= -where hhc /q && set HTMLHELP=hhc && goto :skiphhcsearch -where /R ..\externals hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" -if not exist "%HTMLHELP%" where /R "%ProgramFiles(x86)%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" -if not exist "%HTMLHELP%" where /R "%ProgramFiles%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" -if not exist "%HTMLHELP%" ( - echo. - echo.The HTML Help Workshop was not found. Set the HTMLHELP variable - echo.to the path to hhc.exe or download and install it from - echo.http://msdn.microsoft.com/en-us/library/ms669985 - exit /B 1 -) -:skiphhcsearch - -if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v - -if "%BUILDDIR%" EQU "" set BUILDDIR=build - -rem Targets that don't require sphinx-build -if "%1" EQU "" goto help -if "%1" EQU "help" goto help -if "%1" EQU "check" goto check -if "%1" EQU "serve" goto serve -if "%1" == "clean" ( - rmdir /q /s %BUILDDIR% - goto end -) - -%SPHINXBUILD% >nul 2> nul -if errorlevel 9009 ( - echo. - echo.The 'sphinx-build' command was not found. Make sure you have Sphinx - echo.installed, then set the SPHINXBUILD environment variable to point - echo.to the full path of the 'sphinx-build' executable. Alternatively you - echo.may add the Sphinx directory to PATH. - echo. - echo.If you don't have Sphinx installed, grab it from - echo.http://sphinx-doc.org/ - popd - exit /B 1 -) - -rem Targets that do require sphinx-build and have their own label -if "%1" EQU "htmlview" goto htmlview - -rem Everything else -goto build - -:help -echo.usage: %this% BUILDER [filename ...] -echo. -echo.Call %this% with the desired Sphinx builder as the first argument, e.g. -echo.``%this% html`` or ``%this% doctest``. Interesting targets that are -echo.always available include: -echo. -echo. Provided by Sphinx: -echo. html, htmlhelp, latex, text -echo. suspicious, linkcheck, changes, doctest -echo. Provided by this script: -echo. clean, check, serve, htmlview -echo. -echo.All arguments past the first one are passed through to sphinx-build as -echo.filenames to build or are ignored. See README.rst in this directory or -echo.the documentation for your version of Sphinx for more exhaustive lists -echo.of available targets and descriptions of each. -echo. -echo.This script assumes that the SPHINXBUILD environment variable contains -echo.a legitimate command for calling sphinx-build, or that sphinx-build is -echo.on your PATH if SPHINXBUILD is not set. Options for sphinx-build can -echo.be passed by setting the SPHINXOPTS environment variable. -goto end - -:build -if NOT "%PAPER%" == "" ( - set SPHINXOPTS=-D latex_elements.papersize=%PAPER% %SPHINXOPTS% -) -cmd /C %SPHINXBUILD% %SPHINXOPTS% -b%1 -dbuild\doctrees . %BUILDDIR%\%* - -if "%1" EQU "htmlhelp" ( - cmd /C "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp - rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2 - if not errorlevel 2 cmd /C exit /b 0 -) - -echo. -if errorlevel 1 ( - echo.Build failed (exit code %ERRORLEVEL%^), check for error messages - echo.above. Any output will be found in %BUILDDIR%\%1 -) else ( - echo.Build succeeded. All output should be in %BUILDDIR%\%1 -) -goto end - -:htmlview -if NOT "%2" EQU "" ( - echo.Can't specify filenames to build with htmlview target, ignoring. -) -cmd /C %this% html - -if EXIST %BUILDDIR%\html\index.html ( - echo.Opening %BUILDDIR%\html\index.html in the default web browser... - start %BUILDDIR%\html\index.html -) - -goto end - -:check -cmd /C %PYTHON% tools\rstlint.py -i tools -goto end - -:serve -cmd /C %PYTHON% ..\Tools\scripts\serve.py %BUILDDIR%\html -goto end - -:end -popd +@echo off +setlocal + +pushd %~dp0 + +set this=%~n0 + +if "%SPHINXBUILD%" EQU "" set SPHINXBUILD=sphinx-build +if "%PYTHON%" EQU "" set PYTHON=py + +if "%1" NEQ "htmlhelp" goto :skiphhcsearch +if exist "%HTMLHELP%" goto :skiphhcsearch + +rem Search for HHC in likely places +set HTMLHELP= +where hhc /q && set HTMLHELP=hhc && goto :skiphhcsearch +where /R ..\externals hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" +if not exist "%HTMLHELP%" where /R "%ProgramFiles(x86)%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" +if not exist "%HTMLHELP%" where /R "%ProgramFiles%" hhc > "%TEMP%\hhc.loc" 2> nul && set /P HTMLHELP= < "%TEMP%\hhc.loc" & del "%TEMP%\hhc.loc" +if not exist "%HTMLHELP%" ( + echo. + echo.The HTML Help Workshop was not found. Set the HTMLHELP variable + echo.to the path to hhc.exe or download and install it from + echo.http://msdn.microsoft.com/en-us/library/ms669985 + exit /B 1 +) +:skiphhcsearch + +if "%DISTVERSION%" EQU "" for /f "usebackq" %%v in (`%PYTHON% tools/extensions/patchlevel.py`) do set DISTVERSION=%%v + +if "%BUILDDIR%" EQU "" set BUILDDIR=build + +rem Targets that don't require sphinx-build +if "%1" EQU "" goto help +if "%1" EQU "help" goto help +if "%1" EQU "check" goto check +if "%1" EQU "serve" goto serve +if "%1" == "clean" ( + rmdir /q /s %BUILDDIR% + goto end +) + +%SPHINXBUILD% >nul 2> nul +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + popd + exit /B 1 +) + +rem Targets that do require sphinx-build and have their own label +if "%1" EQU "htmlview" goto htmlview + +rem Everything else +goto build + +:help +echo.usage: %this% BUILDER [filename ...] +echo. +echo.Call %this% with the desired Sphinx builder as the first argument, e.g. +echo.``%this% html`` or ``%this% doctest``. Interesting targets that are +echo.always available include: +echo. +echo. Provided by Sphinx: +echo. html, htmlhelp, latex, text +echo. suspicious, linkcheck, changes, doctest +echo. Provided by this script: +echo. clean, check, serve, htmlview +echo. +echo.All arguments past the first one are passed through to sphinx-build as +echo.filenames to build or are ignored. See README.rst in this directory or +echo.the documentation for your version of Sphinx for more exhaustive lists +echo.of available targets and descriptions of each. +echo. +echo.This script assumes that the SPHINXBUILD environment variable contains +echo.a legitimate command for calling sphinx-build, or that sphinx-build is +echo.on your PATH if SPHINXBUILD is not set. Options for sphinx-build can +echo.be passed by setting the SPHINXOPTS environment variable. +goto end + +:build +if NOT "%PAPER%" == "" ( + set SPHINXOPTS=-D latex_elements.papersize=%PAPER% %SPHINXOPTS% +) +cmd /C %SPHINXBUILD% %SPHINXOPTS% -b%1 -dbuild\doctrees . %BUILDDIR%\%* + +if "%1" EQU "htmlhelp" ( + cmd /C "%HTMLHELP%" build\htmlhelp\python%DISTVERSION:.=%.hhp + rem hhc.exe seems to always exit with code 1, reset to 0 for less than 2 + if not errorlevel 2 cmd /C exit /b 0 +) + +echo. +if errorlevel 1 ( + echo.Build failed (exit code %ERRORLEVEL%^), check for error messages + echo.above. Any output will be found in %BUILDDIR%\%1 +) else ( + echo.Build succeeded. All output should be in %BUILDDIR%\%1 +) +goto end + +:htmlview +if NOT "%2" EQU "" ( + echo.Can't specify filenames to build with htmlview target, ignoring. +) +cmd /C %this% html + +if EXIST %BUILDDIR%\html\index.html ( + echo.Opening %BUILDDIR%\html\index.html in the default web browser... + start %BUILDDIR%\html\index.html +) + +goto end + +:check +cmd /C %PYTHON% tools\rstlint.py -i tools +goto end + +:serve +cmd /C %PYTHON% ..\Tools\scripts\serve.py %BUILDDIR%\html +goto end + +:end +popd diff --git a/Doc/tutorial/datastructures.rst b/Doc/tutorial/datastructures.rst index 62be9a0e9d5601..b95aca88525207 100644 --- a/Doc/tutorial/datastructures.rst +++ b/Doc/tutorial/datastructures.rst @@ -466,7 +466,7 @@ Here is a brief demonstration:: {'a', 'r', 'b', 'c', 'd'} >>> a - b # letters in a but not in b {'r', 'd', 'b'} - >>> a | b # letters in either a or b + >>> a | b # letters in a or b or both {'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'} >>> a & b # letters in both a and b {'a', 'c'} diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index bad0302b037861..92f439c31c920b 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -412,6 +412,7 @@ sent over a network connection to some distant machine. If you have an object ``x``, you can view its JSON string representation with a simple line of code:: + >>> import json >>> json.dumps([1, 'simple', 'list']) '[1, "simple", "list"]' diff --git a/Doc/using/cmdline.rst b/Doc/using/cmdline.rst index 40a06b9adc06ef..920d5c01e4bef4 100644 --- a/Doc/using/cmdline.rst +++ b/Doc/using/cmdline.rst @@ -713,6 +713,42 @@ conflict. .. versionadded:: 3.6 + +.. envvar:: PYTHONCOERCECLOCALE + + If set to the value ``0``, causes the main Python command line application + to skip coercing the legacy ASCII-based C locale to a more capable UTF-8 + based alternative. Note that this setting is checked even when the + :option:`-E` or :option:`-I` options are used, as it is handled prior to + the processing of command line options. + + If this variable is *not* set, or is set to a value other than ``0``, and + the current locale reported for the ``LC_CTYPE`` category is the default + ``C`` locale, then the Python CLI will attempt to configure the following + locales for the ``LC_CTYPE`` category in the order listed before loading the + interpreter runtime: + + * ``C.UTF-8`` + * ``C.utf8`` + * ``UTF-8`` + + If setting one of these locale categories succeeds, then the ``LC_CTYPE`` + environment variable will also be set accordingly in the current process + environment before the Python runtime is initialized. This ensures the + updated setting is seen in subprocesses, as well as in operations that + query the environment rather than the current C locale (such as Python's + own :func:`locale.getdefaultlocale`). + + Configuring one of these locales (either explicitly or via the above + implicit locale coercion) will automatically set the error handler for + :data:`sys.stdin` and :data:`sys.stdout` to ``surrogateescape``. This + behavior can be overridden using :envvar:`PYTHONIOENCODING` as usual. + + Availability: \*nix + + .. versionadded:: 3.7 + See :pep:`538` for more details. + Debug-mode variables ~~~~~~~~~~~~~~~~~~~~ diff --git a/Doc/whatsnew/3.7.rst b/Doc/whatsnew/3.7.rst index d4c2470e4b24c4..ea487158f57ef7 100644 --- a/Doc/whatsnew/3.7.rst +++ b/Doc/whatsnew/3.7.rst @@ -70,6 +70,51 @@ Summary -- Release highlights New Features ============ +.. _whatsnew37-pep538: + +PEP 538: Legacy C Locale Coercion +--------------------------------- + +An ongoing challenge within the Python 3 series has been determining a sensible +default strategy for handling the "7-bit ASCII" text encoding assumption +currently implied by the use of the default C locale on non-Windows platforms. + +:pep:`538` updates the default interpreter command line interface to +automatically coerce that locale to an available UTF-8 based locale as +described in the documentation of the new :envvar:`PYTHONCOERCECLOCALE` +environment variable. Automatically setting ``LC_CTYPE`` this way means that +both the core interpreter and locale-aware C extensions (such as +:mod:`readline`) will assume the use of UTF-8 as the default text encoding, +rather than ASCII. + +The platform support definition in :pep:`11` has also been updated to limit +full text handling support to suitably configured non-ASCII based locales. + +As part of this change, the default error handler for ``stdin`` and ``stdout`` +is now ``surrogateescape`` (rather than ``strict``) when using any of the +defined coercion target locales (currently ``C.UTF-8``, ``C.utf8``, and +``UTF-8``). The default error handler for ``stderr`` continues to be +``backslashreplace``, regardless of locale. + +.. note:: + + In the current implementation, a warning message is printed directly to + ``stderr`` even for successful implicit locale coercion. This gives + redistributors and system integrators the opportunity to determine if they + should be making an environmental change to avoid the need for implicit + coercion at the Python interpreter level. + + However, it's not clear that this is going to be the best approach for + the final 3.7.0 release, and we may end up deciding to disable the warning + by default and provide some way of opting into it at runtime or build time. + + Concrete examples of use cases where it would be preferrable to disable the + warning by default can be noted on :issue:`30565`. + +.. seealso:: + + :pep:`538` -- Coercing the legacy C locale to a UTF-8 based locale + PEP written and implemented by Nick Coghlan. Other Language Changes @@ -133,6 +178,14 @@ contextlib :func:`contextlib.asynccontextmanager` has been added. (Contributed by Jelle Zijlstra in :issue:`29679`.) +dis +--- + +The :func:`~dis.dis` function now is able to +disassemble nested code objects (the code of comprehensions, generator +expressions and nested functions, and the code used for building nested +classes). (Contributed by Serhiy Storchaka in :issue:`11822`.) + distutils --------- diff --git a/Lib/asyncio/futures.py b/Lib/asyncio/futures.py index 39721eaf00fd42..215f72d1910ecf 100644 --- a/Lib/asyncio/futures.py +++ b/Lib/asyncio/futures.py @@ -107,6 +107,7 @@ def cancel(self): change the future's state to cancelled, schedule the callbacks and return True. """ + self._log_traceback = False if self._state != _PENDING: return False self._state = _CANCELLED diff --git a/Lib/asyncio/sslproto.py b/Lib/asyncio/sslproto.py index a36725e0e4453d..68499e5aeeae7e 100644 --- a/Lib/asyncio/sslproto.py +++ b/Lib/asyncio/sslproto.py @@ -6,8 +6,6 @@ ssl = None from . import base_events -from . import compat -from . import futures from . import protocols from . import transports from .log import logger @@ -409,7 +407,7 @@ class SSLProtocol(protocols.Protocol): def __init__(self, loop, app_protocol, sslcontext, waiter, server_side=False, server_hostname=None, - call_connection_made=True, shutdown_timeout=5.0): + call_connection_made=True): if ssl is None: raise RuntimeError('stdlib ssl module not available') @@ -440,8 +438,6 @@ def __init__(self, loop, app_protocol, sslcontext, waiter, self._session_established = False self._in_handshake = False self._in_shutdown = False - self._shutdown_timeout = shutdown_timeout - self._shutdown_timeout_handle = None # transport, ex: SelectorSocketTransport self._transport = None self._call_connection_made = call_connection_made @@ -556,15 +552,6 @@ def _start_shutdown(self): self._in_shutdown = True self._write_appdata(b'') - if self._shutdown_timeout is not None: - self._shutdown_timeout_handle = self._loop.call_later( - self._shutdown_timeout, self._on_shutdown_timeout) - - def _on_shutdown_timeout(self): - if self._transport is not None: - self._fatal_error( - futures.TimeoutError(), 'Can not complete shitdown operation') - def _write_appdata(self, data): self._write_backlog.append((data, 0)) self._write_buffer_size += len(data) @@ -692,22 +679,12 @@ def _fatal_error(self, exc, message='Fatal error on transport'): }) if self._transport: self._transport._force_close(exc) - self._transport = None - - if self._shutdown_timeout_handle is not None: - self._shutdown_timeout_handle.cancel() - self._shutdown_timeout_handle = None def _finalize(self): self._sslpipe = None if self._transport is not None: self._transport.close() - self._transport = None - - if self._shutdown_timeout_handle is not None: - self._shutdown_timeout_handle.cancel() - self._shutdown_timeout_handle = None def _abort(self): try: diff --git a/Lib/asyncio/tasks.py b/Lib/asyncio/tasks.py index e4533000e7985f..575d205404ae39 100644 --- a/Lib/asyncio/tasks.py +++ b/Lib/asyncio/tasks.py @@ -144,6 +144,7 @@ def cancel(self): terminates with a CancelledError exception (even if cancel() was not called). """ + self._log_traceback = False if self.done(): return False if self._fut_waiter is not None: diff --git a/Lib/ctypes/macholib/fetch_macholib.bat b/Lib/ctypes/macholib/fetch_macholib.bat index f474d5cd0a26f7..f9e1c0dc96c318 100644 --- a/Lib/ctypes/macholib/fetch_macholib.bat +++ b/Lib/ctypes/macholib/fetch_macholib.bat @@ -1 +1 @@ -svn export --force http://svn.red-bean.com/bob/macholib/trunk/macholib/ . +svn export --force http://svn.red-bean.com/bob/macholib/trunk/macholib/ . diff --git a/Lib/dis.py b/Lib/dis.py index f3c18a5fde483d..b990839bcbfe92 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -31,7 +31,7 @@ def _try_compile(source, name): c = compile(source, name, 'exec') return c -def dis(x=None, *, file=None): +def dis(x=None, *, file=None, depth=None): """Disassemble classes, methods, functions, generators, or code. With no argument, disassemble the last traceback. @@ -52,16 +52,16 @@ def dis(x=None, *, file=None): if isinstance(x1, _have_code): print("Disassembly of %s:" % name, file=file) try: - dis(x1, file=file) + dis(x1, file=file, depth=depth) except TypeError as msg: print("Sorry:", msg, file=file) print(file=file) elif hasattr(x, 'co_code'): # Code object - disassemble(x, file=file) + _disassemble_recursive(x, file=file, depth=depth) elif isinstance(x, (bytes, bytearray)): # Raw bytecode _disassemble_bytes(x, file=file) elif isinstance(x, str): # Source code - _disassemble_str(x, file=file) + _disassemble_str(x, file=file, depth=depth) else: raise TypeError("don't know how to disassemble %s objects" % type(x).__name__) @@ -338,6 +338,17 @@ def disassemble(co, lasti=-1, *, file=None): _disassemble_bytes(co.co_code, lasti, co.co_varnames, co.co_names, co.co_consts, cell_names, linestarts, file=file) +def _disassemble_recursive(co, *, file=None, depth=None): + disassemble(co, file=file) + if depth is None or depth > 0: + if depth is not None: + depth = depth - 1 + for x in co.co_consts: + if hasattr(x, 'co_code'): + print(file=file) + print("Disassembly of %r:" % (x,), file=file) + _disassemble_recursive(x, file=file, depth=depth) + def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, constants=None, cells=None, linestarts=None, *, file=None, line_offset=0): @@ -368,9 +379,9 @@ def _disassemble_bytes(code, lasti=-1, varnames=None, names=None, print(instr._disassemble(lineno_width, is_current_instr, offset_width), file=file) -def _disassemble_str(source, *, file=None): +def _disassemble_str(source, **kwargs): """Compile the source string, then disassemble the code object.""" - disassemble(_try_compile(source, ''), file=file) + _disassemble_recursive(_try_compile(source, ''), **kwargs) disco = disassemble # XXX For backwards compatibility diff --git a/Lib/email/_policybase.py b/Lib/email/_policybase.py index df4649676aed72..c9cbadd2a80c48 100644 --- a/Lib/email/_policybase.py +++ b/Lib/email/_policybase.py @@ -361,8 +361,12 @@ def _fold(self, name, value, sanitize): # Assume it is a Header-like object. h = value if h is not None: - parts.append(h.encode(linesep=self.linesep, - maxlinelen=self.max_line_length)) + # The Header class interprets a value of None for maxlinelen as the + # default value of 78, as recommended by RFC 2822. + maxlinelen = 0 + if self.max_line_length is not None: + maxlinelen = self.max_line_length + parts.append(h.encode(linesep=self.linesep, maxlinelen=maxlinelen)) parts.append(self.linesep) return ''.join(parts) diff --git a/Lib/http/server.py b/Lib/http/server.py index 694a41604201b6..5750304da5149e 100644 --- a/Lib/http/server.py +++ b/Lib/http/server.py @@ -7,7 +7,6 @@ It does, however, optionally implement HTTP/1.1 persistent connections, as of version 0.3. - Notes on CGIHTTPRequestHandler ------------------------------ @@ -1283,4 +1282,3 @@ def test(HandlerClass=BaseHTTPRequestHandler, handler_class = partial(SimpleHTTPRequestHandler, directory=args.directory) test(HandlerClass=handler_class, port=args.port, bind=args.bind) - diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index a3fc5012fb3014..595429370ac71e 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -1,6 +1,24 @@ -What's New in IDLE 3.6.0? -=========================== -*Release date: 2016-12-16?* +What's New in IDLE 3.7.0 +Released on 2018-06-18? +======================== + +bpo-30290: Help-about: use pep8 names and add tests. +Increase coverage to 100%. +Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy. + +bpo-30303: Add _utest option to textview; add new tests. +Increase coverage to 100%. +Patches by Louie Lu and Terry Jan Reedy. + +Issue #29071: IDLE colors f-string prefixes (but not invalid ur prefixes). + +Issue #28572: Add 10% to coverage of IDLE's test_configdialog. +Update and augment description of the configuration system. + + +What's New in IDLE 3.6.0 +Released on 2016-12-23 +======================== - Issue #15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger Serwy, updated by Bayard Randel. diff --git a/Lib/idlelib/idle.bat b/Lib/idlelib/idle.bat index 3d619a37eed366..e77b96e9b5149b 100755 --- a/Lib/idlelib/idle.bat +++ b/Lib/idlelib/idle.bat @@ -1,4 +1,4 @@ -@echo off -rem Start IDLE using the appropriate Python interpreter -set CURRDIR=%~dp0 -start "IDLE" "%CURRDIR%..\..\pythonw.exe" "%CURRDIR%idle.pyw" %1 %2 %3 %4 %5 %6 %7 %8 %9 +@echo off +rem Start IDLE using the appropriate Python interpreter +set CURRDIR=%~dp0 +start "IDLE" "%CURRDIR%..\..\pythonw.exe" "%CURRDIR%idle.pyw" %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/Lib/multiprocessing/forkserver.py b/Lib/multiprocessing/forkserver.py index 8156dae3b79f85..ddbd0c257399ba 100644 --- a/Lib/multiprocessing/forkserver.py +++ b/Lib/multiprocessing/forkserver.py @@ -6,6 +6,7 @@ import struct import sys import threading +import warnings from . import connection from . import process @@ -22,7 +23,7 @@ # MAXFDS_TO_SEND = 256 -UNSIGNED_STRUCT = struct.Struct('Q') # large enough for pid_t +SIGNED_STRUCT = struct.Struct('q') # large enough for pid_t # # Forkserver class @@ -148,21 +149,33 @@ def main(listener_fd, alive_r, preload, main_path=None, sys_path=None): util._close_stdin() - # ignoring SIGCHLD means no need to reap zombie processes; + sig_r, sig_w = os.pipe() + os.set_blocking(sig_w, False) + + def sigchld_handler(*_unused): + try: + os.write(sig_w, b'.') + except BlockingIOError: + pass + # letting SIGINT through avoids KeyboardInterrupt tracebacks handlers = { - signal.SIGCHLD: signal.SIG_IGN, + signal.SIGCHLD: sigchld_handler, signal.SIGINT: signal.SIG_DFL, } old_handlers = {sig: signal.signal(sig, val) for (sig, val) in handlers.items()} + # map child pids to client fds + pid_to_fd = {} + with socket.socket(socket.AF_UNIX, fileno=listener_fd) as listener, \ selectors.DefaultSelector() as selector: _forkserver._forkserver_address = listener.getsockname() selector.register(listener, selectors.EVENT_READ) selector.register(alive_r, selectors.EVENT_READ) + selector.register(sig_r, selectors.EVENT_READ) while True: try: @@ -176,62 +189,100 @@ def main(listener_fd, alive_r, preload, main_path=None, sys_path=None): assert os.read(alive_r, 1) == b'' raise SystemExit - assert listener in rfds - with listener.accept()[0] as s: - code = 1 - if os.fork() == 0: + if sig_r in rfds: + # Got SIGCHLD + os.read(sig_r, 65536) # exhaust + while True: + # Scan for child processes try: - _serve_one(s, listener, alive_r, old_handlers) - except Exception: - sys.excepthook(*sys.exc_info()) - sys.stderr.flush() - finally: - os._exit(code) + pid, sts = os.waitpid(-1, os.WNOHANG) + except ChildProcessError: + break + if pid == 0: + break + child_w = pid_to_fd.pop(pid, None) + if child_w is not None: + if os.WIFSIGNALED(sts): + returncode = -os.WTERMSIG(sts) + else: + assert os.WIFEXITED(sts) + returncode = os.WEXITSTATUS(sts) + # Write the exit code to the pipe + write_signed(child_w, returncode) + os.close(child_w) + else: + # This shouldn't happen really + warnings.warn('forkserver: waitpid returned ' + 'unexpected pid %d' % pid) + + if listener in rfds: + # Incoming fork request + with listener.accept()[0] as s: + # Receive fds from client + fds = reduction.recvfds(s, MAXFDS_TO_SEND + 1) + assert len(fds) <= MAXFDS_TO_SEND + child_r, child_w, *fds = fds + s.close() + pid = os.fork() + if pid == 0: + # Child + code = 1 + try: + listener.close() + code = _serve_one(child_r, fds, + (alive_r, child_w, sig_r, sig_w), + old_handlers) + except Exception: + sys.excepthook(*sys.exc_info()) + sys.stderr.flush() + finally: + os._exit(code) + else: + # Send pid to client processes + write_signed(child_w, pid) + pid_to_fd[pid] = child_w + os.close(child_r) + for fd in fds: + os.close(fd) except OSError as e: if e.errno != errno.ECONNABORTED: raise -def _serve_one(s, listener, alive_r, handlers): + +def _serve_one(child_r, fds, unused_fds, handlers): # close unnecessary stuff and reset signal handlers - listener.close() - os.close(alive_r) for sig, val in handlers.items(): signal.signal(sig, val) + for fd in unused_fds: + os.close(fd) - # receive fds from parent process - fds = reduction.recvfds(s, MAXFDS_TO_SEND + 1) - s.close() - assert len(fds) <= MAXFDS_TO_SEND - (child_r, child_w, _forkserver._forkserver_alive_fd, - stfd, *_forkserver._inherited_fds) = fds - semaphore_tracker._semaphore_tracker._fd = stfd - - # send pid to client processes - write_unsigned(child_w, os.getpid()) + (_forkserver._forkserver_alive_fd, + semaphore_tracker._semaphore_tracker._fd, + *_forkserver._inherited_fds) = fds - # run process object received over pipe + # Run process object received over pipe code = spawn._main(child_r) - # write the exit code to the pipe - write_unsigned(child_w, code) + return code + # -# Read and write unsigned numbers +# Read and write signed numbers # -def read_unsigned(fd): +def read_signed(fd): data = b'' - length = UNSIGNED_STRUCT.size + length = SIGNED_STRUCT.size while len(data) < length: s = os.read(fd, length - len(data)) if not s: raise EOFError('unexpected EOF') data += s - return UNSIGNED_STRUCT.unpack(data)[0] + return SIGNED_STRUCT.unpack(data)[0] -def write_unsigned(fd, n): - msg = UNSIGNED_STRUCT.pack(n) +def write_signed(fd, n): + msg = SIGNED_STRUCT.pack(n) while msg: nbytes = os.write(fd, msg) if nbytes == 0: diff --git a/Lib/multiprocessing/popen_fork.py b/Lib/multiprocessing/popen_fork.py index 683b52d2271ffa..ca28bf37de0d82 100644 --- a/Lib/multiprocessing/popen_fork.py +++ b/Lib/multiprocessing/popen_fork.py @@ -24,15 +24,12 @@ def duplicate_for_child(self, fd): def poll(self, flag=os.WNOHANG): if self.returncode is None: - while True: - try: - pid, sts = os.waitpid(self.pid, flag) - except OSError as e: - # Child process not yet created. See #1731717 - # e.errno == errno.ECHILD == 10 - return None - else: - break + try: + pid, sts = os.waitpid(self.pid, flag) + except OSError as e: + # Child process not yet created. See #1731717 + # e.errno == errno.ECHILD == 10 + return None if pid == self.pid: if os.WIFSIGNALED(sts): self.returncode = -os.WTERMSIG(sts) diff --git a/Lib/multiprocessing/popen_forkserver.py b/Lib/multiprocessing/popen_forkserver.py index 222db2d90a3156..fa8e574a34e834 100644 --- a/Lib/multiprocessing/popen_forkserver.py +++ b/Lib/multiprocessing/popen_forkserver.py @@ -52,7 +52,7 @@ def _launch(self, process_obj): util.Finalize(self, os.close, (self.sentinel,)) with open(w, 'wb', closefd=True) as f: f.write(buf.getbuffer()) - self.pid = forkserver.read_unsigned(self.sentinel) + self.pid = forkserver.read_signed(self.sentinel) def poll(self, flag=os.WNOHANG): if self.returncode is None: @@ -61,8 +61,10 @@ def poll(self, flag=os.WNOHANG): if not wait([self.sentinel], timeout): return None try: - self.returncode = forkserver.read_unsigned(self.sentinel) + self.returncode = forkserver.read_signed(self.sentinel) except (OSError, EOFError): - # The process ended abnormally perhaps because of a signal + # This should not happen usually, but perhaps the forkserver + # process itself got killed self.returncode = 255 + return self.returncode diff --git a/Lib/selectors.py b/Lib/selectors.py index edde22c634b059..a9a0801ef0713b 100644 --- a/Lib/selectors.py +++ b/Lib/selectors.py @@ -357,7 +357,7 @@ def register(self, fileobj, events, data=None): poller_events |= self._EVENT_WRITE try: self._selector.register(key.fd, poller_events) - except Exception: + except: super().unregister(fileobj) raise return key @@ -387,7 +387,7 @@ def modify(self, fileobj, events, data=None): selector_events |= self._EVENT_WRITE try: self._selector.modify(key.fd, selector_events) - except Exception: + except: super().unregister(fileobj) raise changed = True @@ -524,7 +524,7 @@ def register(self, fileobj, events, data=None): kev = select.kevent(key.fd, select.KQ_FILTER_WRITE, select.KQ_EV_ADD) self._selector.control([kev], 0, 0) - except Exception: + except: super().unregister(fileobj) raise return key diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index f1f93674935e7a..70ecc54bfec2c5 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -274,6 +274,10 @@ def test_process(self): def _test_terminate(cls): time.sleep(100) + @classmethod + def _test_sleep(cls, delay): + time.sleep(delay) + def test_terminate(self): if self.TYPE == 'threads': self.skipTest('test not appropriate for {}'.format(self.TYPE)) @@ -323,8 +327,9 @@ def handler(*args): p.join() - # XXX sometimes get p.exitcode == 0 on Windows ... - #self.assertEqual(p.exitcode, -signal.SIGTERM) + # sometimes get p.exitcode == 0 on Windows ... + if os.name != 'nt': + self.assertEqual(p.exitcode, -signal.SIGTERM) def test_cpu_count(self): try: @@ -398,6 +403,36 @@ def test_sentinel(self): p.join() self.assertTrue(wait_for_handle(sentinel, timeout=1)) + def test_many_processes(self): + if self.TYPE == 'threads': + self.skipTest('test not appropriate for {}'.format(self.TYPE)) + + sm = multiprocessing.get_start_method() + N = 5 if sm == 'spawn' else 100 + + # Try to overwhelm the forkserver loop with events + procs = [self.Process(target=self._test_sleep, args=(0.01,)) + for i in range(N)] + for p in procs: + p.start() + for p in procs: + p.join(timeout=10) + for p in procs: + self.assertEqual(p.exitcode, 0) + + procs = [self.Process(target=self._test_terminate) + for i in range(N)] + for p in procs: + p.start() + time.sleep(0.001) # let the children start... + for p in procs: + p.terminate() + for p in procs: + p.join(timeout=10) + if os.name != 'nt': + for p in procs: + self.assertEqual(p.exitcode, -signal.SIGTERM) + # # # diff --git a/Lib/test/support/script_helper.py b/Lib/test/support/script_helper.py index 1e746472ee6348..b3ac848f08252b 100644 --- a/Lib/test/support/script_helper.py +++ b/Lib/test/support/script_helper.py @@ -48,8 +48,35 @@ def interpreter_requires_environment(): return __cached_interp_requires_environment -_PythonRunResult = collections.namedtuple("_PythonRunResult", - ("rc", "out", "err")) +class _PythonRunResult(collections.namedtuple("_PythonRunResult", + ("rc", "out", "err"))): + """Helper for reporting Python subprocess run results""" + def fail(self, cmd_line): + """Provide helpful details about failed subcommand runs""" + # Limit to 80 lines to ASCII characters + maxlen = 80 * 100 + out, err = self.out, self.err + if len(out) > maxlen: + out = b'(... truncated stdout ...)' + out[-maxlen:] + if len(err) > maxlen: + err = b'(... truncated stderr ...)' + err[-maxlen:] + out = out.decode('ascii', 'replace').rstrip() + err = err.decode('ascii', 'replace').rstrip() + raise AssertionError("Process return code is %d\n" + "command line: %r\n" + "\n" + "stdout:\n" + "---\n" + "%s\n" + "---\n" + "\n" + "stderr:\n" + "---\n" + "%s\n" + "---" + % (self.rc, cmd_line, + out, + err)) # Executing the interpreter in a subprocess @@ -107,30 +134,7 @@ def run_python_until_end(*args, **env_vars): def _assert_python(expected_success, *args, **env_vars): res, cmd_line = run_python_until_end(*args, **env_vars) if (res.rc and expected_success) or (not res.rc and not expected_success): - # Limit to 80 lines to ASCII characters - maxlen = 80 * 100 - out, err = res.out, res.err - if len(out) > maxlen: - out = b'(... truncated stdout ...)' + out[-maxlen:] - if len(err) > maxlen: - err = b'(... truncated stderr ...)' + err[-maxlen:] - out = out.decode('ascii', 'replace').rstrip() - err = err.decode('ascii', 'replace').rstrip() - raise AssertionError("Process return code is %d\n" - "command line: %r\n" - "\n" - "stdout:\n" - "---\n" - "%s\n" - "---\n" - "\n" - "stderr:\n" - "---\n" - "%s\n" - "---" - % (res.rc, cmd_line, - out, - err)) + res.fail(cmd_line) return res def assert_python_ok(*args, **env_vars): diff --git a/Lib/test/test_asyncio/test_futures.py b/Lib/test/test_asyncio/test_futures.py index 99336f86ab824e..5d4b2d2aa0efc0 100644 --- a/Lib/test/test_asyncio/test_futures.py +++ b/Lib/test/test_asyncio/test_futures.py @@ -318,6 +318,14 @@ def test_tb_logger_abandoned(self, m_log): del fut self.assertFalse(m_log.error.called) + @mock.patch('asyncio.base_events.logger') + def test_tb_logger_not_called_after_cancel(self, m_log): + fut = self._new_future(loop=self.loop) + fut.set_exception(Exception()) + fut.cancel() + del fut + self.assertFalse(m_log.error.called) + @mock.patch('asyncio.base_events.logger') def test_tb_logger_result_unretrieved(self, m_log): fut = self._new_future(loop=self.loop) diff --git a/Lib/test/test_asyncio/test_sslproto.py b/Lib/test/test_asyncio/test_sslproto.py index 6bcaa9edb4306d..bcd236ea2632ed 100644 --- a/Lib/test/test_asyncio/test_sslproto.py +++ b/Lib/test/test_asyncio/test_sslproto.py @@ -96,40 +96,6 @@ def test_connection_lost(self): test_utils.run_briefly(self.loop) self.assertIsInstance(waiter.exception(), ConnectionAbortedError) - def test_close_abort(self): - # From issue #bpo-29406 - # abort connection if server does not complete shutdown procedure - ssl_proto = self.ssl_protocol() - transport = self.connection_made(ssl_proto) - ssl_proto._on_handshake_complete(None) - ssl_proto._start_shutdown() - self.assertIsNotNone(ssl_proto._shutdown_timeout_handle) - - exc_handler = mock.Mock() - self.loop.set_exception_handler(exc_handler) - ssl_proto._shutdown_timeout_handle._run() - - exc_handler.assert_called_with( - self.loop, {'message': 'Can not complete shitdown operation', - 'exception': mock.ANY, - 'transport': transport, - 'protocol': ssl_proto} - ) - self.assertIsNone(ssl_proto._shutdown_timeout_handle) - - def test_close(self): - # From issue #bpo-29406 - # abort connection if server does not complete shutdown procedure - ssl_proto = self.ssl_protocol() - transport = self.connection_made(ssl_proto) - ssl_proto._on_handshake_complete(None) - ssl_proto._start_shutdown() - self.assertIsNotNone(ssl_proto._shutdown_timeout_handle) - - ssl_proto._finalize() - self.assertIsNone(ssl_proto._transport) - self.assertIsNone(ssl_proto._shutdown_timeout_handle) - def test_close_during_handshake(self): # bpo-29743 Closing transport during handshake process leaks socket waiter = asyncio.Future(loop=self.loop) diff --git a/Lib/test/test_asyncio/test_tasks.py b/Lib/test/test_asyncio/test_tasks.py index 988b2885c30cd9..686387f4f21d85 100644 --- a/Lib/test/test_asyncio/test_tasks.py +++ b/Lib/test/test_asyncio/test_tasks.py @@ -1864,6 +1864,25 @@ def kill_me(loop): }) mock_handler.reset_mock() + @mock.patch('asyncio.base_events.logger') + def test_tb_logger_not_called_after_cancel(self, m_log): + loop = asyncio.new_event_loop() + self.set_event_loop(loop) + + @asyncio.coroutine + def coro(): + raise TypeError + + @asyncio.coroutine + def runner(): + task = self.new_task(loop, coro()) + yield from asyncio.sleep(0.05, loop=loop) + task.cancel() + task = None + + loop.run_until_complete(runner()) + self.assertFalse(m_log.error.called) + @mock.patch('asyncio.coroutines.logger') def test_coroutine_never_yielded(self, m_log): with set_coroutine_debug(True): diff --git a/Lib/test/test_atexit.py b/Lib/test/test_atexit.py index c761076c4a0225..1d0b018aafaf93 100644 --- a/Lib/test/test_atexit.py +++ b/Lib/test/test_atexit.py @@ -23,6 +23,9 @@ def raise1(): def raise2(): raise SystemError +def exit(): + raise SystemExit + class GeneralTest(unittest.TestCase): @@ -76,6 +79,13 @@ def test_raise_unnormalized(self): self.assertRaises(ZeroDivisionError, atexit._run_exitfuncs) self.assertIn("ZeroDivisionError", self.stream.getvalue()) + def test_exit(self): + # be sure a SystemExit is handled properly + atexit.register(exit) + + self.assertRaises(SystemExit, atexit._run_exitfuncs) + self.assertEqual(self.stream.getvalue(), '') + def test_print_tracebacks(self): # Issue #18776: the tracebacks should be printed when errors occur. def f(): diff --git a/Lib/test/test_c_locale_coercion.py b/Lib/test/test_c_locale_coercion.py new file mode 100644 index 00000000000000..c14d820a2d7931 --- /dev/null +++ b/Lib/test/test_c_locale_coercion.py @@ -0,0 +1,262 @@ +# Tests the attempted automatic coercion of the C locale to a UTF-8 locale + +import unittest +import os +import sys +import sysconfig +import shutil +import subprocess +from collections import namedtuple + +import test.support +from test.support.script_helper import ( + run_python_until_end, + interpreter_requires_environment, +) + +# In order to get the warning messages to match up as expected, the candidate +# order here must much the target locale order in Python/pylifecycle.c +_C_UTF8_LOCALES = ("C.UTF-8", "C.utf8", "UTF-8") + +# There's no reliable cross-platform way of checking locale alias +# lists, so the only way of knowing which of these locales will work +# is to try them with locale.setlocale(). We do that in a subprocess +# to avoid altering the locale of the test runner. +def _set_locale_in_subprocess(locale_name): + cmd_fmt = "import locale; print(locale.setlocale(locale.LC_CTYPE, '{}'))" + cmd = cmd_fmt.format(locale_name) + result, py_cmd = run_python_until_end("-c", cmd, __isolated=True) + return result.rc == 0 + +_EncodingDetails = namedtuple("EncodingDetails", + "fsencoding stdin_info stdout_info stderr_info") + +class EncodingDetails(_EncodingDetails): + CHILD_PROCESS_SCRIPT = ";".join([ + "import sys", + "print(sys.getfilesystemencoding())", + "print(sys.stdin.encoding + ':' + sys.stdin.errors)", + "print(sys.stdout.encoding + ':' + sys.stdout.errors)", + "print(sys.stderr.encoding + ':' + sys.stderr.errors)", + ]) + + @classmethod + def get_expected_details(cls, expected_fsencoding): + """Returns expected child process details for a given encoding""" + _stream = expected_fsencoding + ":{}" + # stdin and stdout should use surrogateescape either because the + # coercion triggered, or because the C locale was detected + stream_info = 2*[_stream.format("surrogateescape")] + # stderr should always use backslashreplace + stream_info.append(_stream.format("backslashreplace")) + return dict(cls(expected_fsencoding, *stream_info)._asdict()) + + @staticmethod + def _handle_output_variations(data): + """Adjust the output to handle platform specific idiosyncrasies + + * Some platforms report ASCII as ANSI_X3.4-1968 + * Some platforms report ASCII as US-ASCII + * Some platforms report UTF-8 instead of utf-8 + """ + data = data.replace(b"ANSI_X3.4-1968", b"ascii") + data = data.replace(b"US-ASCII", b"ascii") + data = data.lower() + return data + + @classmethod + def get_child_details(cls, env_vars): + """Retrieves fsencoding and standard stream details from a child process + + Returns (encoding_details, stderr_lines): + + - encoding_details: EncodingDetails for eager decoding + - stderr_lines: result of calling splitlines() on the stderr output + + The child is run in isolated mode if the current interpreter supports + that. + """ + result, py_cmd = run_python_until_end( + "-c", cls.CHILD_PROCESS_SCRIPT, + __isolated=True, + **env_vars + ) + if not result.rc == 0: + result.fail(py_cmd) + # All subprocess outputs in this test case should be pure ASCII + adjusted_output = cls._handle_output_variations(result.out) + stdout_lines = adjusted_output.decode("ascii").rstrip().splitlines() + child_encoding_details = dict(cls(*stdout_lines)._asdict()) + stderr_lines = result.err.decode("ascii").rstrip().splitlines() + return child_encoding_details, stderr_lines + + +class _ChildProcessEncodingTestCase(unittest.TestCase): + # Base class to check for expected encoding details in a child process + + def _check_child_encoding_details(self, + env_vars, + expected_fsencoding, + expected_warning): + """Check the C locale handling for the given process environment + + Parameters: + expected_fsencoding: the encoding the child is expected to report + allow_c_locale: setting to use for PYTHONALLOWCLOCALE + None: don't set the variable at all + str: the value set in the child's environment + """ + result = EncodingDetails.get_child_details(env_vars) + encoding_details, stderr_lines = result + self.assertEqual(encoding_details, + EncodingDetails.get_expected_details( + expected_fsencoding)) + self.assertEqual(stderr_lines, expected_warning) + +# Details of the shared library warning emitted at runtime +LIBRARY_C_LOCALE_WARNING = ( + "Python runtime initialized with LC_CTYPE=C (a locale with default ASCII " + "encoding), which may cause Unicode compatibility problems. Using C.UTF-8, " + "C.utf8, or UTF-8 (if available) as alternative Unicode-compatible " + "locales is recommended." +) + +@unittest.skipUnless(sysconfig.get_config_var("PY_WARN_ON_C_LOCALE"), + "C locale runtime warning disabled at build time") +class LocaleWarningTests(_ChildProcessEncodingTestCase): + # Test warning emitted when running in the C locale + + def test_library_c_locale_warning(self): + self.maxDiff = None + for locale_to_set in ("C", "POSIX", "invalid.ascii"): + var_dict = { + "LC_ALL": locale_to_set + } + with self.subTest(forced_locale=locale_to_set): + self._check_child_encoding_details(var_dict, + "ascii", + [LIBRARY_C_LOCALE_WARNING]) + +# Details of the CLI locale coercion warning emitted at runtime +CLI_COERCION_WARNING_FMT = ( + "Python detected LC_CTYPE=C: LC_CTYPE coerced to {} (set another locale " + "or PYTHONCOERCECLOCALE=0 to disable this locale coercion behavior)." +) + +class _LocaleCoercionTargetsTestCase(_ChildProcessEncodingTestCase): + # Base class for test cases that rely on coercion targets being defined + + available_targets = [] + targets_required = True + + @classmethod + def setUpClass(cls): + first_target_locale = None + available_targets = cls.available_targets + # Find the target locales available in the current system + for target_locale in _C_UTF8_LOCALES: + if _set_locale_in_subprocess(target_locale): + available_targets.append(target_locale) + if first_target_locale is None: + first_target_locale = target_locale + if cls.targets_required and not available_targets: + raise unittest.SkipTest("No C-with-UTF-8 locale available") + # Expect coercion to use the first available locale + warning_msg = CLI_COERCION_WARNING_FMT.format(first_target_locale) + cls.EXPECTED_COERCION_WARNING = warning_msg + + +class LocaleConfigurationTests(_LocaleCoercionTargetsTestCase): + # Test explicit external configuration via the process environment + + def test_external_target_locale_configuration(self): + # Explicitly setting a target locale should give the same behaviour as + # is seen when implicitly coercing to that target locale + self.maxDiff = None + + expected_warning = [] + expected_fsencoding = "utf-8" + + base_var_dict = { + "LANG": "", + "LC_CTYPE": "", + "LC_ALL": "", + } + for env_var in ("LANG", "LC_CTYPE"): + for locale_to_set in self.available_targets: + with self.subTest(env_var=env_var, + configured_locale=locale_to_set): + var_dict = base_var_dict.copy() + var_dict[env_var] = locale_to_set + self._check_child_encoding_details(var_dict, + expected_fsencoding, + expected_warning) + + + +@test.support.cpython_only +@unittest.skipUnless(sysconfig.get_config_var("PY_COERCE_C_LOCALE"), + "C locale coercion disabled at build time") +class LocaleCoercionTests(_LocaleCoercionTargetsTestCase): + # Test implicit reconfiguration of the environment during CLI startup + + def _check_c_locale_coercion(self, expected_fsencoding, coerce_c_locale): + """Check the C locale handling for various configurations + + Parameters: + expected_fsencoding: the encoding the child is expected to report + allow_c_locale: setting to use for PYTHONALLOWCLOCALE + None: don't set the variable at all + str: the value set in the child's environment + """ + + # Check for expected warning on stderr if C locale is coerced + self.maxDiff = None + + expected_warning = [] + if coerce_c_locale != "0": + expected_warning.append(self.EXPECTED_COERCION_WARNING) + + base_var_dict = { + "LANG": "", + "LC_CTYPE": "", + "LC_ALL": "", + } + for env_var in ("LANG", "LC_CTYPE"): + for locale_to_set in ("", "C", "POSIX", "invalid.ascii"): + with self.subTest(env_var=env_var, + nominal_locale=locale_to_set, + PYTHONCOERCECLOCALE=coerce_c_locale): + var_dict = base_var_dict.copy() + var_dict[env_var] = locale_to_set + if coerce_c_locale is not None: + var_dict["PYTHONCOERCECLOCALE"] = coerce_c_locale + self._check_child_encoding_details(var_dict, + expected_fsencoding, + expected_warning) + + def test_test_PYTHONCOERCECLOCALE_not_set(self): + # This should coerce to the first available target locale by default + self._check_c_locale_coercion("utf-8", coerce_c_locale=None) + + def test_PYTHONCOERCECLOCALE_not_zero(self): + # *Any* string other that "0" is considered "set" for our purposes + # and hence should result in the locale coercion being enabled + for setting in ("", "1", "true", "false"): + self._check_c_locale_coercion("utf-8", coerce_c_locale=setting) + + def test_PYTHONCOERCECLOCALE_set_to_zero(self): + # The setting "0" should result in the locale coercion being disabled + self._check_c_locale_coercion("ascii", coerce_c_locale="0") + + +def test_main(): + test.support.run_unittest( + LocaleConfigurationTests, + LocaleCoercionTests, + LocaleWarningTests + ) + test.support.reap_children() + +if __name__ == "__main__": + test_main() diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index 8ac8af98265695..c4a97664290949 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -371,14 +371,21 @@ def setUp(self): def tearDown(self): os.chdir(self.oldcwd) - def run_embedded_interpreter(self, *args): + def run_embedded_interpreter(self, *args, env=None): """Runs a test in the embedded interpreter""" cmd = [self.test_exe] cmd.extend(args) + if env is not None and sys.platform == 'win32': + # Windows requires at least the SYSTEMROOT environment variable to + # start Python. + env = env.copy() + env['SYSTEMROOT'] = os.environ['SYSTEMROOT'] + p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, - universal_newlines=True) + universal_newlines=True, + env=env) (out, err) = p.communicate() self.assertEqual(p.returncode, 0, "bad returncode %d, stderr is %r" % @@ -471,26 +478,16 @@ def test_subinterps_distinct_state(self): self.assertNotEqual(sub.tstate, main.tstate) self.assertNotEqual(sub.modules, main.modules) - @staticmethod - def _get_default_pipe_encoding(): - rp, wp = os.pipe() - try: - with os.fdopen(wp, 'w') as w: - default_pipe_encoding = w.encoding - finally: - os.close(rp) - return default_pipe_encoding - def test_forced_io_encoding(self): # Checks forced configuration of embedded interpreter IO streams - out, err = self.run_embedded_interpreter("forced_io_encoding") - if support.verbose: + env = {"PYTHONIOENCODING": "utf-8:surrogateescape"} + out, err = self.run_embedded_interpreter("forced_io_encoding", env=env) + if support.verbose > 1: print() print(out) print(err) - expected_errors = sys.__stdout__.errors - expected_stdin_encoding = sys.__stdin__.encoding - expected_pipe_encoding = self._get_default_pipe_encoding() + expected_stream_encoding = "utf-8" + expected_errors = "surrogateescape" expected_output = '\n'.join([ "--- Use defaults ---", "Expected encoding: default", @@ -517,8 +514,8 @@ def test_forced_io_encoding(self): "stdout: latin-1:replace", "stderr: latin-1:backslashreplace"]) expected_output = expected_output.format( - in_encoding=expected_stdin_encoding, - out_encoding=expected_pipe_encoding, + in_encoding=expected_stream_encoding, + out_encoding=expected_stream_encoding, errors=expected_errors) # This is useful if we ever trip over odd platform behaviour self.maxDiff = None diff --git a/Lib/test/test_cmd_line.py b/Lib/test/test_cmd_line.py index 5f96d61c7d0ab7..3e20427917345a 100644 --- a/Lib/test/test_cmd_line.py +++ b/Lib/test/test_cmd_line.py @@ -8,8 +8,9 @@ import subprocess import tempfile from test.support import script_helper, is_android -from test.support.script_helper import (spawn_python, kill_python, assert_python_ok, - assert_python_failure) +from test.support.script_helper import ( + spawn_python, kill_python, assert_python_ok, assert_python_failure +) # XXX (ncoghlan): Move to script_helper and make consistent with run_python @@ -150,6 +151,7 @@ def test_undecodable_code(self): env = os.environ.copy() # Use C locale to get ascii for the locale encoding env['LC_ALL'] = 'C' + env['PYTHONCOERCECLOCALE'] = '0' code = ( b'import locale; ' b'print(ascii("' + undecodable + b'"), ' diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index e614b718ee35f0..254b317e498243 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -331,16 +331,77 @@ def _fstring(a, b, c, d): def _g(x): yield x +def _h(y): + def foo(x): + '''funcdoc''' + return [x + z for z in y] + return foo + +dis_nested_0 = """\ +%3d 0 LOAD_CLOSURE 0 (y) + 2 BUILD_TUPLE 1 + 4 LOAD_CONST 1 () + 6 LOAD_CONST 2 ('_h..foo') + 8 MAKE_FUNCTION 8 + 10 STORE_FAST 1 (foo) + +%3d 12 LOAD_FAST 1 (foo) + 14 RETURN_VALUE +""" % (_h.__code__.co_firstlineno + 1, + __file__, + _h.__code__.co_firstlineno + 1, + _h.__code__.co_firstlineno + 4, +) + +dis_nested_1 = """%s +Disassembly of : +%3d 0 LOAD_CLOSURE 0 (x) + 2 BUILD_TUPLE 1 + 4 LOAD_CONST 1 ( at 0x..., file "%s", line %d>) + 6 LOAD_CONST 2 ('_h..foo..') + 8 MAKE_FUNCTION 8 + 10 LOAD_DEREF 1 (y) + 12 GET_ITER + 14 CALL_FUNCTION 1 + 16 RETURN_VALUE +""" % (dis_nested_0, + __file__, + _h.__code__.co_firstlineno + 1, + _h.__code__.co_firstlineno + 3, + __file__, + _h.__code__.co_firstlineno + 3, +) + +dis_nested_2 = """%s +Disassembly of at 0x..., file "%s", line %d>: +%3d 0 BUILD_LIST 0 + 2 LOAD_FAST 0 (.0) + >> 4 FOR_ITER 12 (to 18) + 6 STORE_FAST 1 (z) + 8 LOAD_DEREF 0 (x) + 10 LOAD_FAST 1 (z) + 12 BINARY_ADD + 14 LIST_APPEND 2 + 16 JUMP_ABSOLUTE 4 + >> 18 RETURN_VALUE +""" % (dis_nested_1, + __file__, + _h.__code__.co_firstlineno + 3, + _h.__code__.co_firstlineno + 3, +) + class DisTests(unittest.TestCase): - def get_disassembly(self, func, lasti=-1, wrapper=True): + maxDiff = None + + def get_disassembly(self, func, lasti=-1, wrapper=True, **kwargs): # We want to test the default printing behaviour, not the file arg output = io.StringIO() with contextlib.redirect_stdout(output): if wrapper: - dis.dis(func) + dis.dis(func, **kwargs) else: - dis.disassemble(func, lasti) + dis.disassemble(func, lasti, **kwargs) return output.getvalue() def get_disassemble_as_string(self, func, lasti=-1): @@ -350,7 +411,7 @@ def strip_addresses(self, text): return re.sub(r'\b0x[0-9A-Fa-f]+\b', '0x...', text) def do_disassembly_test(self, func, expected): - got = self.get_disassembly(func) + got = self.get_disassembly(func, depth=0) if got != expected: got = self.strip_addresses(got) self.assertEqual(got, expected) @@ -502,15 +563,29 @@ def test_dis_traceback(self): def test_dis_object(self): self.assertRaises(TypeError, dis.dis, object()) + def test_disassemble_recursive(self): + def check(expected, **kwargs): + dis = self.get_disassembly(_h, **kwargs) + dis = self.strip_addresses(dis) + self.assertEqual(dis, expected) + + check(dis_nested_0, depth=0) + check(dis_nested_1, depth=1) + check(dis_nested_2, depth=2) + check(dis_nested_2, depth=3) + check(dis_nested_2, depth=None) + check(dis_nested_2) + + class DisWithFileTests(DisTests): # Run the tests again, using the file arg instead of print - def get_disassembly(self, func, lasti=-1, wrapper=True): + def get_disassembly(self, func, lasti=-1, wrapper=True, **kwargs): output = io.StringIO() if wrapper: - dis.dis(func, file=output) + dis.dis(func, file=output, **kwargs) else: - dis.disassemble(func, lasti, file=output) + dis.disassemble(func, lasti, file=output, **kwargs) return output.getvalue() diff --git a/Lib/test/test_email/test_generator.py b/Lib/test/test_email/test_generator.py index 7c8877fdcb090e..c4f182903afefe 100644 --- a/Lib/test/test_email/test_generator.py +++ b/Lib/test/test_email/test_generator.py @@ -162,6 +162,13 @@ def test_set_mangle_from_via_policy(self): g.flatten(msg) self.assertEqual(s.getvalue(), self.typ(expected)) + def test_compat32_max_line_length_does_not_fold_when_none(self): + msg = self.msgmaker(self.typ(self.refold_long_expected[0])) + s = self.ioclass() + g = self.genclass(s, policy=policy.compat32.clone(max_line_length=None)) + g.flatten(msg) + self.assertEqual(s.getvalue(), self.typ(self.refold_long_expected[0])) + class TestGenerator(TestGeneratorBase, TestEmailBase): diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 7fabe6ad765332..52b05c12b641da 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -642,7 +642,8 @@ def is_env_var_to_ignore(n): # on adding even when the environment in exec is empty. # Gentoo sandboxes also force LD_PRELOAD and SANDBOX_* to exist. return ('VERSIONER' in n or '__CF' in n or # MacOS - n == 'LD_PRELOAD' or n.startswith('SANDBOX')) # Gentoo + n == 'LD_PRELOAD' or n.startswith('SANDBOX') or # Gentoo + n == 'LC_CTYPE') # Locale coercion triggered with subprocess.Popen([sys.executable, "-c", 'import os; print(list(os.environ.keys()))'], diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index ed78e2a0f9aea3..3844812ba28873 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -682,6 +682,7 @@ def c_locale_get_error_handler(self, isolated=False, encoding=None): # Force the POSIX locale env = os.environ.copy() env["LC_ALL"] = "C" + env["PYTHONCOERCECLOCALE"] = "0" code = '\n'.join(( 'import sys', 'def dump(name):', diff --git a/Lib/test/test_threaded_import.py b/Lib/test/test_threaded_import.py index 9b2d9a6f19b8b6..a4cf1d70f1dc7b 100644 --- a/Lib/test/test_threaded_import.py +++ b/Lib/test/test_threaded_import.py @@ -12,6 +12,7 @@ import time import shutil import unittest +from unittest import mock from test.support import ( verbose, import_module, run_unittest, TESTFN, reap_threads, forget, unlink, rmtree, start_threads) @@ -37,6 +38,12 @@ def task(N, done, done_tasks, errors): if finished: done.set() +def mock_register_at_fork(func): + # bpo-30599: Mock os.register_at_fork() when importing the random module, + # since this function doesn't allow to unregister callbacks and would leak + # memory. + return mock.patch('os.register_at_fork', create=True)(func) + # Create a circular import structure: A -> C -> B -> D -> A # NOTE: `time` is already loaded and therefore doesn't threaten to deadlock. @@ -97,7 +104,8 @@ def tearDown(self): if self.old_random is not None: sys.modules['random'] = self.old_random - def check_parallel_module_init(self): + @mock_register_at_fork + def check_parallel_module_init(self, mock_os): if imp.lock_held(): # This triggers on, e.g., from test import autotest. raise unittest.SkipTest("can't run when import lock is held") @@ -214,7 +222,8 @@ def import_ba(): t2.join() self.assertEqual(set(results), {'a', 'b'}) - def test_side_effect_import(self): + @mock_register_at_fork + def test_side_effect_import(self, mock_os): code = """if 1: import threading def target(): diff --git a/Lib/test/test_typing.py b/Lib/test/test_typing.py index 33d553ed6e3a4e..fd2d93c3a4db1f 100644 --- a/Lib/test/test_typing.py +++ b/Lib/test/test_typing.py @@ -1552,6 +1552,12 @@ def __anext__(self) -> T_a: return data else: raise StopAsyncIteration + +class ACM: + async def __aenter__(self) -> int: + return 42 + async def __aexit__(self, etype, eval, tb): + return None """ if ASYNCIO: @@ -1562,12 +1568,13 @@ def __anext__(self) -> T_a: else: # fake names for the sake of static analysis asyncio = None - AwaitableWrapper = AsyncIteratorWrapper = object + AwaitableWrapper = AsyncIteratorWrapper = ACM = object PY36 = sys.version_info[:2] >= (3, 6) PY36_TESTS = """ from test import ann_module, ann_module2, ann_module3 +from typing import AsyncContextManager class A: y: float @@ -1604,6 +1611,16 @@ def __str__(self): return f'{self.x} -> {self.y}' def __add__(self, other): return 0 + +async def g_with(am: AsyncContextManager[int]): + x: int + async with am as x: + return x + +try: + g_with(ACM()).send(None) +except StopIteration as e: + assert e.args[0] == 42 """ if PY36: @@ -2156,8 +2173,6 @@ class B: ... class OtherABCTests(BaseTestCase): - @skipUnless(hasattr(typing, 'ContextManager'), - 'requires typing.ContextManager') def test_contextmanager(self): @contextlib.contextmanager def manager(): @@ -2167,6 +2182,24 @@ def manager(): self.assertIsInstance(cm, typing.ContextManager) self.assertNotIsInstance(42, typing.ContextManager) + @skipUnless(ASYNCIO, 'Python 3.5 required') + def test_async_contextmanager(self): + class NotACM: + pass + self.assertIsInstance(ACM(), typing.AsyncContextManager) + self.assertNotIsInstance(NotACM(), typing.AsyncContextManager) + @contextlib.contextmanager + def manager(): + yield 42 + + cm = manager() + self.assertNotIsInstance(cm, typing.AsyncContextManager) + self.assertEqual(typing.AsyncContextManager[int].__args__, (int,)) + with self.assertRaises(TypeError): + isinstance(42, typing.AsyncContextManager[int]) + with self.assertRaises(TypeError): + typing.AsyncContextManager[int, str] + class TypeTests(BaseTestCase): diff --git a/Lib/typing.py b/Lib/typing.py index 645bc6f8ae0edd..c487afcb5b42f8 100644 --- a/Lib/typing.py +++ b/Lib/typing.py @@ -10,6 +10,8 @@ import collections.abc as collections_abc except ImportError: import collections as collections_abc # Fallback for PY3.2. +if sys.version_info[:2] >= (3, 6): + import _collections_abc # Needed for private function _check_methods # noqa try: from types import WrapperDescriptorType, MethodWrapperType, MethodDescriptorType except ImportError: @@ -37,6 +39,7 @@ # for 'Generic' and ABCs below. 'ByteString', 'Container', + 'ContextManager', 'Hashable', 'ItemsView', 'Iterable', @@ -57,8 +60,8 @@ # AsyncIterable, # Coroutine, # Collection, - # ContextManager, # AsyncGenerator, + # AsyncContextManager # Structural checks, a.k.a. protocols. 'Reversible', @@ -1949,7 +1952,61 @@ class ValuesView(MappingView[VT_co], extra=collections_abc.ValuesView): if hasattr(contextlib, 'AbstractContextManager'): class ContextManager(Generic[T_co], extra=contextlib.AbstractContextManager): __slots__ = () - __all__.append('ContextManager') +else: + class ContextManager(Generic[T_co]): + __slots__ = () + + def __enter__(self): + return self + + @abc.abstractmethod + def __exit__(self, exc_type, exc_value, traceback): + return None + + @classmethod + def __subclasshook__(cls, C): + if cls is ContextManager: + # In Python 3.6+, it is possible to set a method to None to + # explicitly indicate that the class does not implement an ABC + # (https://bugs.python.org/issue25958), but we do not support + # that pattern here because this fallback class is only used + # in Python 3.5 and earlier. + if (any("__enter__" in B.__dict__ for B in C.__mro__) and + any("__exit__" in B.__dict__ for B in C.__mro__)): + return True + return NotImplemented + + +if hasattr(contextlib, 'AbstractAsyncContextManager'): + class AsyncContextManager(Generic[T_co], + extra=contextlib.AbstractAsyncContextManager): + __slots__ = () + + __all__.append('AsyncContextManager') +elif sys.version_info[:2] >= (3, 5): + exec(""" +class AsyncContextManager(Generic[T_co]): + __slots__ = () + + async def __aenter__(self): + return self + + @abc.abstractmethod + async def __aexit__(self, exc_type, exc_value, traceback): + return None + + @classmethod + def __subclasshook__(cls, C): + if cls is AsyncContextManager: + if sys.version_info[:2] >= (3, 6): + return _collections_abc._check_methods(C, "__aenter__", "__aexit__") + if (any("__aenter__" in B.__dict__ for B in C.__mro__) and + any("__aexit__" in B.__dict__ for B in C.__mro__)): + return True + return NotImplemented + +__all__.append('AsyncContextManager') +""") class Dict(dict, MutableMapping[KT, VT], extra=dict): diff --git a/Lib/venv/scripts/nt/Activate.ps1 b/Lib/venv/scripts/nt/Activate.ps1 index 85646c89a81cb3..bf60869e552e97 100644 --- a/Lib/venv/scripts/nt/Activate.ps1 +++ b/Lib/venv/scripts/nt/Activate.ps1 @@ -1,51 +1,51 @@ -function global:deactivate ([switch]$NonDestructive) { - # Revert to original values - if (Test-Path function:_OLD_VIRTUAL_PROMPT) { - copy-item function:_OLD_VIRTUAL_PROMPT function:prompt - remove-item function:_OLD_VIRTUAL_PROMPT - } - - if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) { - copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME - remove-item env:_OLD_VIRTUAL_PYTHONHOME - } - - if (Test-Path env:_OLD_VIRTUAL_PATH) { - copy-item env:_OLD_VIRTUAL_PATH env:PATH - remove-item env:_OLD_VIRTUAL_PATH - } - - if (Test-Path env:VIRTUAL_ENV) { - remove-item env:VIRTUAL_ENV - } - - if (!$NonDestructive) { - # Self destruct! - remove-item function:deactivate - } -} - -deactivate -nondestructive - -$env:VIRTUAL_ENV="__VENV_DIR__" - -if (! $env:VIRTUAL_ENV_DISABLE_PROMPT) { - # Set the prompt to include the env name - # Make sure _OLD_VIRTUAL_PROMPT is global - function global:_OLD_VIRTUAL_PROMPT {""} - copy-item function:prompt function:_OLD_VIRTUAL_PROMPT - function global:prompt { - Write-Host -NoNewline -ForegroundColor Green '__VENV_PROMPT__' - _OLD_VIRTUAL_PROMPT - } -} - -# Clear PYTHONHOME -if (Test-Path env:PYTHONHOME) { - copy-item env:PYTHONHOME env:_OLD_VIRTUAL_PYTHONHOME - remove-item env:PYTHONHOME -} - -# Add the venv to the PATH -copy-item env:PATH env:_OLD_VIRTUAL_PATH -$env:PATH = "$env:VIRTUAL_ENV\__VENV_BIN_NAME__;$env:PATH" +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + if (Test-Path function:_OLD_VIRTUAL_PROMPT) { + copy-item function:_OLD_VIRTUAL_PROMPT function:prompt + remove-item function:_OLD_VIRTUAL_PROMPT + } + + if (Test-Path env:_OLD_VIRTUAL_PYTHONHOME) { + copy-item env:_OLD_VIRTUAL_PYTHONHOME env:PYTHONHOME + remove-item env:_OLD_VIRTUAL_PYTHONHOME + } + + if (Test-Path env:_OLD_VIRTUAL_PATH) { + copy-item env:_OLD_VIRTUAL_PATH env:PATH + remove-item env:_OLD_VIRTUAL_PATH + } + + if (Test-Path env:VIRTUAL_ENV) { + remove-item env:VIRTUAL_ENV + } + + if (!$NonDestructive) { + # Self destruct! + remove-item function:deactivate + } +} + +deactivate -nondestructive + +$env:VIRTUAL_ENV="__VENV_DIR__" + +if (! $env:VIRTUAL_ENV_DISABLE_PROMPT) { + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT {""} + copy-item function:prompt function:_OLD_VIRTUAL_PROMPT + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green '__VENV_PROMPT__' + _OLD_VIRTUAL_PROMPT + } +} + +# Clear PYTHONHOME +if (Test-Path env:PYTHONHOME) { + copy-item env:PYTHONHOME env:_OLD_VIRTUAL_PYTHONHOME + remove-item env:PYTHONHOME +} + +# Add the venv to the PATH +copy-item env:PATH env:_OLD_VIRTUAL_PATH +$env:PATH = "$env:VIRTUAL_ENV\__VENV_BIN_NAME__;$env:PATH" diff --git a/Lib/venv/scripts/nt/activate.bat b/Lib/venv/scripts/nt/activate.bat index 9eab147f314d3b..d76ca1359627ee 100644 --- a/Lib/venv/scripts/nt/activate.bat +++ b/Lib/venv/scripts/nt/activate.bat @@ -1,32 +1,32 @@ -@echo off -set "VIRTUAL_ENV=__VENV_DIR__" - -if not defined PROMPT ( - set "PROMPT=$P$G" -) - -if defined _OLD_VIRTUAL_PROMPT ( - set "PROMPT=%_OLD_VIRTUAL_PROMPT%" -) - -if defined _OLD_VIRTUAL_PYTHONHOME ( - set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" -) - -set "_OLD_VIRTUAL_PROMPT=%PROMPT%" -set "PROMPT=__VENV_PROMPT__%PROMPT%" - -if defined PYTHONHOME ( - set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%" - set PYTHONHOME= -) - -if defined _OLD_VIRTUAL_PATH ( - set "PATH=%_OLD_VIRTUAL_PATH%" -) else ( - set "_OLD_VIRTUAL_PATH=%PATH%" -) - -set "PATH=%VIRTUAL_ENV%\__VENV_BIN_NAME__;%PATH%" - -:END +@echo off +set "VIRTUAL_ENV=__VENV_DIR__" + +if not defined PROMPT ( + set "PROMPT=$P$G" +) + +if defined _OLD_VIRTUAL_PROMPT ( + set "PROMPT=%_OLD_VIRTUAL_PROMPT%" +) + +if defined _OLD_VIRTUAL_PYTHONHOME ( + set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" +) + +set "_OLD_VIRTUAL_PROMPT=%PROMPT%" +set "PROMPT=__VENV_PROMPT__%PROMPT%" + +if defined PYTHONHOME ( + set "_OLD_VIRTUAL_PYTHONHOME=%PYTHONHOME%" + set PYTHONHOME= +) + +if defined _OLD_VIRTUAL_PATH ( + set "PATH=%_OLD_VIRTUAL_PATH%" +) else ( + set "_OLD_VIRTUAL_PATH=%PATH%" +) + +set "PATH=%VIRTUAL_ENV%\__VENV_BIN_NAME__;%PATH%" + +:END diff --git a/Lib/venv/scripts/nt/deactivate.bat b/Lib/venv/scripts/nt/deactivate.bat index 313c0791173682..1205c618686fbb 100644 --- a/Lib/venv/scripts/nt/deactivate.bat +++ b/Lib/venv/scripts/nt/deactivate.bat @@ -1,21 +1,21 @@ -@echo off - -if defined _OLD_VIRTUAL_PROMPT ( - set "PROMPT=%_OLD_VIRTUAL_PROMPT%" -) -set _OLD_VIRTUAL_PROMPT= - -if defined _OLD_VIRTUAL_PYTHONHOME ( - set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" - set _OLD_VIRTUAL_PYTHONHOME= -) - -if defined _OLD_VIRTUAL_PATH ( - set "PATH=%_OLD_VIRTUAL_PATH%" -) - -set _OLD_VIRTUAL_PATH= - -set VIRTUAL_ENV= - -:END +@echo off + +if defined _OLD_VIRTUAL_PROMPT ( + set "PROMPT=%_OLD_VIRTUAL_PROMPT%" +) +set _OLD_VIRTUAL_PROMPT= + +if defined _OLD_VIRTUAL_PYTHONHOME ( + set "PYTHONHOME=%_OLD_VIRTUAL_PYTHONHOME%" + set _OLD_VIRTUAL_PYTHONHOME= +) + +if defined _OLD_VIRTUAL_PATH ( + set "PATH=%_OLD_VIRTUAL_PATH%" +) + +set _OLD_VIRTUAL_PATH= + +set VIRTUAL_ENV= + +:END diff --git a/Misc/ACKS b/Misc/ACKS index 74ac15b89ece6b..1ae9b6fe5d0a2e 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -310,6 +310,7 @@ Garrett Cooper Greg Copeland Ian Cordasco Aldo Cortesi +Mircea Cosbuc David Costanzo Scott Cotton Greg Couch diff --git a/Misc/NEWS b/Misc/NEWS index 2a4e4cbba96f0a..9a9aeae5b17528 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -10,6 +10,15 @@ What's New in Python 3.7.0 alpha 1? Core and Builtins ----------------- +- bpo-30501: The compiler now produces more optimal code for complex condition + expressions in the "if", "while" and "assert" statement, the "if" expression, + and generator expressions and comprehensions. + +- bpo-28180: Implement PEP 538 (legacy C locale coercion). This means that when + a suitable coercion target locale is available, both the core interpreter and + locale-aware C extensions will assume the use of UTF-8 as the default text + encoding, rather than ASCII. + - bpo-30486: Allows setting cell values for __closure__. Patch by Lisa Roach. - bpo-30537: itertools.islice now accepts integer-like objects (having @@ -133,6 +142,9 @@ Core and Builtins - bpo-29546: Improve from-import error message with location +- bpo-29478: If max_line_length=None is specified while using the Compat32 policy, + it is no longer ignored. Patch by Mircea Cosbuc. + - Issue #29319: Prevent RunMainFromImporter overwriting sys.path[0]. - Issue #29337: Fixed possible BytesWarning when compare the code objects. @@ -350,13 +362,36 @@ Extension Modules Library ------- +<<<<<<< HEAD - bpo-30576 : http.server supports HTTP compression (gzip). Patch by Pierre Quentel. +======= +- bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite + of the signal number when the process is killed by a signal (instead + of 255) when using the "forkserver" method. + +- bpo-28994: The traceback no longer displayed for SystemExit raised in + a callback registered by atexit. + +- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was + called. + +- bpo-11822: The dis.dis() function now is able to disassemble nested + code objects. + +- bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into + account, leaving a fd in a bad state in case of error. Patch by Giampaolo + Rodola'. +>>>>>>> upstream2/master - bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader in non-blocking mode if it succeeded to aquire the lock but the acquire took longer than the timeout. +- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add + support for ContextManager on all versions. Original PRs by Jelle Zijlstra + and Ivan Levkivskyi + - bpo-30605: re.compile() no longer raises a BytesWarning when compiling a bytes instance with misplaced inline modifier. Patch by Roy Williams. @@ -366,10 +401,6 @@ Library - bpo-29743: Closing transport during handshake process leaks open socket. Patch by Nikolay Kim -- bpo-29406: asyncio SSL contexts leak sockets after calling close with - certain servers. - Patch by Nikolay Kim - - bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu Sornay. @@ -1073,6 +1104,25 @@ Library sys.getrecursionlimit() times, to protect against objects which create a new object on every attribute access. +- bpo-30177: path.resolve(strict=False) no longer cuts the path after the first + element not present in the filesystem. Patch by Antoine Pietri. + +IDLE +---- + +- bpo-30290: Help-about: use pep8 names and add tests. + Increase coverage to 100%. + Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy. + +- bpo-30303: Add _utest option to textview; add new tests. + Increase coverage to 100%. + Patches by Louie Lu and Terry Jan Reedy. + +- Issue #29071: IDLE colors f-string prefixes (but not invalid ur prefixes). + +- Issue #28572: Add 10% to coverage of IDLE's test_configdialog. + Update and augment description of the configuration system. + Windows ------- diff --git a/Modules/_asynciomodule.c b/Modules/_asynciomodule.c index 150ca198d27cfc..b8a88e61d4aba4 100644 --- a/Modules/_asynciomodule.c +++ b/Modules/_asynciomodule.c @@ -306,6 +306,8 @@ future_add_done_callback(FutureObj *fut, PyObject *arg) static PyObject * future_cancel(FutureObj *fut) { + fut->fut_log_tb = 0; + if (fut->fut_state != STATE_PENDING) { Py_RETURN_FALSE; } @@ -639,6 +641,17 @@ FutureObj_get_log_traceback(FutureObj *fut) } } +static int +FutureObj_set_log_traceback(FutureObj *fut, PyObject *val) +{ + int is_true = PyObject_IsTrue(val); + if (is_true < 0) { + return -1; + } + fut->fut_log_tb = is_true; + return 0; +} + static PyObject * FutureObj_get_loop(FutureObj *fut) { @@ -883,7 +896,8 @@ static PyMethodDef FutureType_methods[] = { {"_callbacks", (getter)FutureObj_get_callbacks, NULL, NULL}, \ {"_result", (getter)FutureObj_get_result, NULL, NULL}, \ {"_exception", (getter)FutureObj_get_exception, NULL, NULL}, \ - {"_log_traceback", (getter)FutureObj_get_log_traceback, NULL, NULL}, \ + {"_log_traceback", (getter)FutureObj_get_log_traceback, \ + (setter)FutureObj_set_log_traceback, NULL}, \ {"_source_traceback", (getter)FutureObj_get_source_traceback, NULL, NULL}, static PyGetSetDef FutureType_getsetlist[] = { @@ -1569,6 +1583,8 @@ static PyObject * _asyncio_Task_cancel_impl(TaskObj *self) /*[clinic end generated code: output=6bfc0479da9d5757 input=13f9bf496695cb52]*/ { + self->task_log_tb = 0; + if (self->task_state != STATE_PENDING) { Py_RETURN_FALSE; } diff --git a/Modules/_decimal/tests/runall.bat b/Modules/_decimal/tests/runall.bat index 568f92f6ddf392..5bc872a63f83aa 100755 --- a/Modules/_decimal/tests/runall.bat +++ b/Modules/_decimal/tests/runall.bat @@ -1,111 +1,111 @@ -@ECHO OFF - -rem Test all machine configurations, pydebug, refleaks, release build. - -cd ..\..\..\ - - -echo. -echo # ====================================================================== -echo # Building Python -echo # ====================================================================== -echo. - -call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x64 -msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x64 -msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x64 -msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=x64 -msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=x64 - -call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86 -msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=Win32 -msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=Win32 -echo. -echo. - -echo. -echo # ====================================================================== -echo # test_decimal: platform=x64 -echo # ====================================================================== -echo. - -cd PCbuild\amd64 - -echo # ==================== refleak tests ======================= -echo. -python_d.exe -m test -uall -R 2:2 test_decimal -echo. -echo. - -echo # ==================== regular tests ======================= -echo. -python.exe -m test -uall test_decimal -echo. -echo. - -cd .. - -echo. -echo # ====================================================================== -echo # test_decimal: platform=x86 -echo # ====================================================================== -echo. - -echo # ==================== refleak tests ======================= -echo. -python_d.exe -m test -uall -R 2:2 test_decimal -echo. -echo. - -echo # ==================== regular tests ======================= -echo. -python.exe -m test -uall test_decimal -echo. -echo. - -cd amd64 - -echo. -echo # ====================================================================== -echo # deccheck: platform=x64 -echo # ====================================================================== -echo. - -echo # ==================== debug build ======================= -echo. -python_d.exe ..\..\Modules\_decimal\tests\deccheck.py -echo. -echo. - -echo # =================== release build ====================== -echo. -python.exe ..\..\Modules\_decimal\tests\deccheck.py -echo. -echo. - -cd .. - -echo. -echo # ====================================================================== -echo # deccheck: platform=x86 -echo # ====================================================================== -echo. -echo. - -echo # ==================== debug build ======================= -echo. -python_d.exe ..\Modules\_decimal\tests\deccheck.py -echo. -echo. - -echo # =================== release build ====================== -echo. -python.exe ..\Modules\_decimal\tests\deccheck.py -echo. -echo. - - -cd ..\Modules\_decimal\tests - - - +@ECHO OFF + +rem Test all machine configurations, pydebug, refleaks, release build. + +cd ..\..\..\ + + +echo. +echo # ====================================================================== +echo # Building Python +echo # ====================================================================== +echo. + +call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x64 +msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Release /p:PlatformTarget=x64 +msbuild /noconsolelogger /target:clean PCbuild\pcbuild.sln /p:Configuration=Debug /p:PlatformTarget=x64 +msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=x64 +msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=x64 + +call "%VS100COMNTOOLS%\..\..\VC\vcvarsall.bat" x86 +msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Release /p:Platform=Win32 +msbuild /noconsolelogger PCbuild\pcbuild.sln /p:Configuration=Debug /p:Platform=Win32 +echo. +echo. + +echo. +echo # ====================================================================== +echo # test_decimal: platform=x64 +echo # ====================================================================== +echo. + +cd PCbuild\amd64 + +echo # ==================== refleak tests ======================= +echo. +python_d.exe -m test -uall -R 2:2 test_decimal +echo. +echo. + +echo # ==================== regular tests ======================= +echo. +python.exe -m test -uall test_decimal +echo. +echo. + +cd .. + +echo. +echo # ====================================================================== +echo # test_decimal: platform=x86 +echo # ====================================================================== +echo. + +echo # ==================== refleak tests ======================= +echo. +python_d.exe -m test -uall -R 2:2 test_decimal +echo. +echo. + +echo # ==================== regular tests ======================= +echo. +python.exe -m test -uall test_decimal +echo. +echo. + +cd amd64 + +echo. +echo # ====================================================================== +echo # deccheck: platform=x64 +echo # ====================================================================== +echo. + +echo # ==================== debug build ======================= +echo. +python_d.exe ..\..\Modules\_decimal\tests\deccheck.py +echo. +echo. + +echo # =================== release build ====================== +echo. +python.exe ..\..\Modules\_decimal\tests\deccheck.py +echo. +echo. + +cd .. + +echo. +echo # ====================================================================== +echo # deccheck: platform=x86 +echo # ====================================================================== +echo. +echo. + +echo # ==================== debug build ======================= +echo. +python_d.exe ..\Modules\_decimal\tests\deccheck.py +echo. +echo. + +echo # =================== release build ====================== +echo. +python.exe ..\Modules\_decimal\tests\deccheck.py +echo. +echo. + + +cd ..\Modules\_decimal\tests + + + diff --git a/Modules/atexitmodule.c b/Modules/atexitmodule.c index 3cdf2d7e56348a..35ebf08ecd3c66 100644 --- a/Modules/atexitmodule.c +++ b/Modules/atexitmodule.c @@ -97,7 +97,7 @@ atexit_callfuncs(void) Py_XDECREF(exc_tb); } PyErr_Fetch(&exc_type, &exc_value, &exc_tb); - if (!PyErr_ExceptionMatches(PyExc_SystemExit)) { + if (!PyErr_GivenExceptionMatches(exc_type, PyExc_SystemExit)) { PySys_WriteStderr("Error in atexit._run_exitfuncs:\n"); PyErr_NormalizeException(&exc_type, &exc_value, &exc_tb); PyErr_Display(exc_type, exc_value, exc_tb); diff --git a/Modules/main.c b/Modules/main.c index 438cb2c63c90d8..6a7e1d3b1f4fa3 100644 --- a/Modules/main.c +++ b/Modules/main.c @@ -106,6 +106,9 @@ static const char usage_6[] = "PYTHONMALLOC: set the Python memory allocators and/or install debug hooks\n" " on Python memory allocators. Use PYTHONMALLOC=debug to install debug\n" " hooks.\n"; +static const char usage_7[] = +"PYTHONCOERCECLOCALE: if this variable is set to 0, it disables the locale\n" +"coercion behavior\n"; static int usage(int exitcode, const wchar_t* program) @@ -122,6 +125,7 @@ usage(int exitcode, const wchar_t* program) fprintf(f, usage_4, (wint_t)DELIM); fprintf(f, usage_5, (wint_t)DELIM, PYTHONHOMEHELP); fputs(usage_6, f); + fputs(usage_7, f); } return exitcode; } diff --git a/PC/bdist_wininst/build.bat b/PC/bdist_wininst/build.bat index 25f565ce0a16d8..ee6856754faa8c 100644 --- a/PC/bdist_wininst/build.bat +++ b/PC/bdist_wininst/build.bat @@ -1,22 +1,22 @@ -@echo off -setlocal - -set D=%~dp0 -set PCBUILD=%~dp0..\..\PCBuild\ - - -echo Building Lib\distutils\command\wininst-xx.0.exe - -call "%PCBUILD%env.bat" x86 -if errorlevel 1 goto :eof - -msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=Win32 -if errorlevel 1 goto :eof - - -echo Building Lib\distutils\command\wininst-xx.0-amd64.exe - -call "%PCBUILD%env.bat" x86_amd64 -if errorlevel 1 goto :eof - -msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=x64 +@echo off +setlocal + +set D=%~dp0 +set PCBUILD=%~dp0..\..\PCBuild\ + + +echo Building Lib\distutils\command\wininst-xx.0.exe + +call "%PCBUILD%env.bat" x86 +if errorlevel 1 goto :eof + +msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=Win32 +if errorlevel 1 goto :eof + + +echo Building Lib\distutils\command\wininst-xx.0-amd64.exe + +call "%PCBUILD%env.bat" x86_amd64 +if errorlevel 1 goto :eof + +msbuild "%D%bdist_wininst.vcxproj" "/p:SolutionDir=%PCBUILD%\" /p:Configuration=Release /p:Platform=x64 diff --git a/PCbuild/build.bat b/PCbuild/build.bat index aac3f7f6766db7..caed481e4fc613 100644 --- a/PCbuild/build.bat +++ b/PCbuild/build.bat @@ -1,161 +1,161 @@ -@echo off -goto Run -:Usage -echo.%~nx0 [flags and arguments] [quoted MSBuild options] -echo. -echo.Build CPython from the command line. Requires the appropriate -echo.version(s) of Microsoft Visual Studio to be installed (see readme.txt). -echo.Also requires Subversion (svn.exe) to be on PATH if the '-e' flag is -echo.given. -echo. -echo.After the flags recognized by this script, up to 9 arguments to be passed -echo.directly to MSBuild may be passed. If the argument contains an '=', the -echo.entire argument must be quoted (e.g. `%~nx0 "/p:PlatformToolset=v100"`). -echo.Alternatively you can put extra flags for MSBuild in a file named -echo.`msbuild.rsp` in the `PCbuild` directory, one flag per line. This file -echo.will be picked automatically by MSBuild. Flags put in this file does not -echo.need to be quoted. You can still use environment variables inside the -echo.response file. -echo. -echo.Available flags: -echo. -h Display this help message -echo. -V Display version information for the current build -echo. -r Target Rebuild instead of Build -echo. -d Set the configuration to Debug -echo. -e Build external libraries fetched by get_externals.bat -echo. Extension modules that depend on external libraries will not attempt -echo. to build if this flag is not present -echo. -m Enable parallel build (enabled by default) -echo. -M Disable parallel build -echo. -v Increased output messages -echo. -k Attempt to kill any running Pythons before building (usually done -echo. automatically by the pythoncore project) -echo. --pgo Build with Profile-Guided Optimization. This flag -echo. overrides -c and -d -echo. --test-marker Enable the test marker within the build. -echo. -echo.Available flags to avoid building certain modules. -echo.These flags have no effect if '-e' is not given: -echo. --no-ssl Do not attempt to build _ssl -echo. --no-tkinter Do not attempt to build Tkinter -echo. -echo.Available arguments: -echo. -c Release ^| Debug ^| PGInstrument ^| PGUpdate -echo. Set the configuration (default: Release) -echo. -p x64 ^| Win32 -echo. Set the platform (default: Win32) -echo. -t Build ^| Rebuild ^| Clean ^| CleanAll -echo. Set the target manually -echo. --pgo-job The job to use for PGO training; implies --pgo -echo. (default: "-m test --pgo") -exit /b 127 - -:Run -setlocal -set platf=Win32 -set vs_platf=x86 -set conf=Release -set target=Build -set dir=%~dp0 -set parallel=/m -set verbose=/nologo /v:m -set kill= -set do_pgo= -set pgo_job=-m test --pgo -set on_64_bit=true - -rem This may not be 100% accurate, but close enough. -if "%ProgramFiles(x86)%"=="" (set on_64_bit=false) - -:CheckOpts -if "%~1"=="-h" goto Usage -if "%~1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts -if "%~1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts -if "%~1"=="-r" (set target=Rebuild) & shift & goto CheckOpts -if "%~1"=="-t" (set target=%2) & shift & shift & goto CheckOpts -if "%~1"=="-d" (set conf=Debug) & shift & goto CheckOpts -if "%~1"=="-m" (set parallel=/m) & shift & goto CheckOpts -if "%~1"=="-M" (set parallel=) & shift & goto CheckOpts -if "%~1"=="-v" (set verbose=/v:n) & shift & goto CheckOpts -if "%~1"=="-k" (set kill=true) & shift & goto CheckOpts -if "%~1"=="--pgo" (set do_pgo=true) & shift & goto CheckOpts -if "%~1"=="--pgo-job" (set do_pgo=true) & (set pgo_job=%~2) & shift & shift & goto CheckOpts -if "%~1"=="--test-marker" (set UseTestMarker=true) & shift & goto CheckOpts -if "%~1"=="-V" shift & goto Version -rem These use the actual property names used by MSBuild. We could just let -rem them in through the environment, but we specify them on the command line -rem anyway for visibility so set defaults after this -if "%~1"=="-e" (set IncludeExternals=true) & shift & goto CheckOpts -if "%~1"=="--no-ssl" (set IncludeSSL=false) & shift & goto CheckOpts -if "%~1"=="--no-tkinter" (set IncludeTkinter=false) & shift & goto CheckOpts - -if "%IncludeExternals%"=="" set IncludeExternals=false -if "%IncludeSSL%"=="" set IncludeSSL=true -if "%IncludeTkinter%"=="" set IncludeTkinter=true - -if "%IncludeExternals%"=="true" call "%dir%get_externals.bat" - -if "%platf%"=="x64" ( - if "%on_64_bit%"=="true" ( - rem This ought to always be correct these days... - set vs_platf=amd64 - ) else ( - if "%do_pgo%"=="true" ( - echo.ERROR: Cannot cross-compile with PGO - echo. 32bit operating system detected, if this is incorrect, - echo. make sure the ProgramFiles(x86^) environment variable is set - exit /b 1 - ) - set vs_platf=x86_amd64 - ) -) - -if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc" -if exist "%GIT%" set GITProperty=/p:GIT="%GIT%" -if not exist "%GIT%" echo Cannot find Git on PATH & set GITProperty= - -rem Setup the environment -call "%dir%env.bat" %vs_platf% >nul - -if "%kill%"=="true" call :Kill - -if "%do_pgo%"=="true" ( - set conf=PGInstrument - call :Build %1 %2 %3 %4 %5 %6 %7 %8 %9 - del /s "%dir%\*.pgc" - del /s "%dir%\..\Lib\*.pyc" - echo on - call "%dir%\..\python.bat" %pgo_job% - @echo off - call :Kill - set conf=PGUpdate - set target=Build -) -goto Build -:Kill -echo on -msbuild "%dir%\pythoncore.vcxproj" /t:KillPython %verbose%^ - /p:Configuration=%conf% /p:Platform=%platf%^ - /p:KillPython=true - -@echo off -goto :eof - -:Build -rem Call on MSBuild to do the work, echo the command. -rem Passing %1-9 is not the preferred option, but argument parsing in -rem batch is, shall we say, "lackluster" -echo on -msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose%^ - /p:Configuration=%conf% /p:Platform=%platf%^ - /p:IncludeExternals=%IncludeExternals%^ - /p:IncludeSSL=%IncludeSSL% /p:IncludeTkinter=%IncludeTkinter%^ - /p:UseTestMarker=%UseTestMarker% %GITProperty%^ - %1 %2 %3 %4 %5 %6 %7 %8 %9 - -@echo off -goto :eof - -:Version -rem Display the current build version information -msbuild "%dir%python.props" /t:ShowVersionInfo /v:m /nologo %1 %2 %3 %4 %5 %6 %7 %8 %9 +@echo off +goto Run +:Usage +echo.%~nx0 [flags and arguments] [quoted MSBuild options] +echo. +echo.Build CPython from the command line. Requires the appropriate +echo.version(s) of Microsoft Visual Studio to be installed (see readme.txt). +echo.Also requires Subversion (svn.exe) to be on PATH if the '-e' flag is +echo.given. +echo. +echo.After the flags recognized by this script, up to 9 arguments to be passed +echo.directly to MSBuild may be passed. If the argument contains an '=', the +echo.entire argument must be quoted (e.g. `%~nx0 "/p:PlatformToolset=v100"`). +echo.Alternatively you can put extra flags for MSBuild in a file named +echo.`msbuild.rsp` in the `PCbuild` directory, one flag per line. This file +echo.will be picked automatically by MSBuild. Flags put in this file does not +echo.need to be quoted. You can still use environment variables inside the +echo.response file. +echo. +echo.Available flags: +echo. -h Display this help message +echo. -V Display version information for the current build +echo. -r Target Rebuild instead of Build +echo. -d Set the configuration to Debug +echo. -e Build external libraries fetched by get_externals.bat +echo. Extension modules that depend on external libraries will not attempt +echo. to build if this flag is not present +echo. -m Enable parallel build (enabled by default) +echo. -M Disable parallel build +echo. -v Increased output messages +echo. -k Attempt to kill any running Pythons before building (usually done +echo. automatically by the pythoncore project) +echo. --pgo Build with Profile-Guided Optimization. This flag +echo. overrides -c and -d +echo. --test-marker Enable the test marker within the build. +echo. +echo.Available flags to avoid building certain modules. +echo.These flags have no effect if '-e' is not given: +echo. --no-ssl Do not attempt to build _ssl +echo. --no-tkinter Do not attempt to build Tkinter +echo. +echo.Available arguments: +echo. -c Release ^| Debug ^| PGInstrument ^| PGUpdate +echo. Set the configuration (default: Release) +echo. -p x64 ^| Win32 +echo. Set the platform (default: Win32) +echo. -t Build ^| Rebuild ^| Clean ^| CleanAll +echo. Set the target manually +echo. --pgo-job The job to use for PGO training; implies --pgo +echo. (default: "-m test --pgo") +exit /b 127 + +:Run +setlocal +set platf=Win32 +set vs_platf=x86 +set conf=Release +set target=Build +set dir=%~dp0 +set parallel=/m +set verbose=/nologo /v:m +set kill= +set do_pgo= +set pgo_job=-m test --pgo +set on_64_bit=true + +rem This may not be 100% accurate, but close enough. +if "%ProgramFiles(x86)%"=="" (set on_64_bit=false) + +:CheckOpts +if "%~1"=="-h" goto Usage +if "%~1"=="-c" (set conf=%2) & shift & shift & goto CheckOpts +if "%~1"=="-p" (set platf=%2) & shift & shift & goto CheckOpts +if "%~1"=="-r" (set target=Rebuild) & shift & goto CheckOpts +if "%~1"=="-t" (set target=%2) & shift & shift & goto CheckOpts +if "%~1"=="-d" (set conf=Debug) & shift & goto CheckOpts +if "%~1"=="-m" (set parallel=/m) & shift & goto CheckOpts +if "%~1"=="-M" (set parallel=) & shift & goto CheckOpts +if "%~1"=="-v" (set verbose=/v:n) & shift & goto CheckOpts +if "%~1"=="-k" (set kill=true) & shift & goto CheckOpts +if "%~1"=="--pgo" (set do_pgo=true) & shift & goto CheckOpts +if "%~1"=="--pgo-job" (set do_pgo=true) & (set pgo_job=%~2) & shift & shift & goto CheckOpts +if "%~1"=="--test-marker" (set UseTestMarker=true) & shift & goto CheckOpts +if "%~1"=="-V" shift & goto Version +rem These use the actual property names used by MSBuild. We could just let +rem them in through the environment, but we specify them on the command line +rem anyway for visibility so set defaults after this +if "%~1"=="-e" (set IncludeExternals=true) & shift & goto CheckOpts +if "%~1"=="--no-ssl" (set IncludeSSL=false) & shift & goto CheckOpts +if "%~1"=="--no-tkinter" (set IncludeTkinter=false) & shift & goto CheckOpts + +if "%IncludeExternals%"=="" set IncludeExternals=false +if "%IncludeSSL%"=="" set IncludeSSL=true +if "%IncludeTkinter%"=="" set IncludeTkinter=true + +if "%IncludeExternals%"=="true" call "%dir%get_externals.bat" + +if "%platf%"=="x64" ( + if "%on_64_bit%"=="true" ( + rem This ought to always be correct these days... + set vs_platf=amd64 + ) else ( + if "%do_pgo%"=="true" ( + echo.ERROR: Cannot cross-compile with PGO + echo. 32bit operating system detected, if this is incorrect, + echo. make sure the ProgramFiles(x86^) environment variable is set + exit /b 1 + ) + set vs_platf=x86_amd64 + ) +) + +if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc" +if exist "%GIT%" set GITProperty=/p:GIT="%GIT%" +if not exist "%GIT%" echo Cannot find Git on PATH & set GITProperty= + +rem Setup the environment +call "%dir%env.bat" %vs_platf% >nul + +if "%kill%"=="true" call :Kill + +if "%do_pgo%"=="true" ( + set conf=PGInstrument + call :Build %1 %2 %3 %4 %5 %6 %7 %8 %9 + del /s "%dir%\*.pgc" + del /s "%dir%\..\Lib\*.pyc" + echo on + call "%dir%\..\python.bat" %pgo_job% + @echo off + call :Kill + set conf=PGUpdate + set target=Build +) +goto Build +:Kill +echo on +msbuild "%dir%\pythoncore.vcxproj" /t:KillPython %verbose%^ + /p:Configuration=%conf% /p:Platform=%platf%^ + /p:KillPython=true + +@echo off +goto :eof + +:Build +rem Call on MSBuild to do the work, echo the command. +rem Passing %1-9 is not the preferred option, but argument parsing in +rem batch is, shall we say, "lackluster" +echo on +msbuild "%dir%pcbuild.proj" /t:%target% %parallel% %verbose%^ + /p:Configuration=%conf% /p:Platform=%platf%^ + /p:IncludeExternals=%IncludeExternals%^ + /p:IncludeSSL=%IncludeSSL% /p:IncludeTkinter=%IncludeTkinter%^ + /p:UseTestMarker=%UseTestMarker% %GITProperty%^ + %1 %2 %3 %4 %5 %6 %7 %8 %9 + +@echo off +goto :eof + +:Version +rem Display the current build version information +msbuild "%dir%python.props" /t:ShowVersionInfo /v:m /nologo %1 %2 %3 %4 %5 %6 %7 %8 %9 diff --git a/PCbuild/build_env.bat b/PCbuild/build_env.bat index 01024cff215d39..4c67ae3ac253c7 100644 --- a/PCbuild/build_env.bat +++ b/PCbuild/build_env.bat @@ -1 +1 @@ -@%comspec% /k env.bat %* +@%comspec% /k env.bat %* diff --git a/PCbuild/clean.bat b/PCbuild/clean.bat index 78517d225f9f44..6144c715f64e43 100644 --- a/PCbuild/clean.bat +++ b/PCbuild/clean.bat @@ -1,5 +1,5 @@ -@echo off -rem A batch program to clean a particular configuration, -rem just for convenience. - -call %~dp0build.bat -t Clean %* +@echo off +rem A batch program to clean a particular configuration, +rem just for convenience. + +call %~dp0build.bat -t Clean %* diff --git a/PCbuild/env.bat b/PCbuild/env.bat index 2b2c0051ce912f..9d4c9d1c32f7a4 100644 --- a/PCbuild/env.bat +++ b/PCbuild/env.bat @@ -1,16 +1,16 @@ -@echo off -rem This script adds the latest available tools to the path for the current -rem command window. However, most builds of Python will ignore the version -rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of -rem tools should be the same version to avoid potential conflicts. -rem -rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or -rem 'v110', 'v120' or 'v140') to the build script. - -echo Build environments: x86, amd64, x86_amd64 -echo. -set VSTOOLS=%VS140COMNTOOLS% -if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS% -if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS% -if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS% -call "%VSTOOLS%..\..\VC\vcvarsall.bat" %* +@echo off +rem This script adds the latest available tools to the path for the current +rem command window. However, most builds of Python will ignore the version +rem of the tools on PATH and use PlatformToolset instead. Ideally, both sets of +rem tools should be the same version to avoid potential conflicts. +rem +rem To build Python with an earlier toolset, pass "/p:PlatformToolset=v100" (or +rem 'v110', 'v120' or 'v140') to the build script. + +echo Build environments: x86, amd64, x86_amd64 +echo. +set VSTOOLS=%VS140COMNTOOLS% +if "%VSTOOLS%"=="" set VSTOOLS=%VS120COMNTOOLS% +if "%VSTOOLS%"=="" set VSTOOLS=%VS110COMNTOOLS% +if "%VSTOOLS%"=="" set VSTOOLS=%VS100COMNTOOLS% +call "%VSTOOLS%..\..\VC\vcvarsall.bat" %* diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat index 3a2656e961ef7f..5767ab2eacf25b 100644 --- a/PCbuild/get_externals.bat +++ b/PCbuild/get_externals.bat @@ -1,104 +1,104 @@ -@echo off -setlocal -rem Simple script to fetch source for external libraries - -if not exist "%~dp0..\externals" mkdir "%~dp0..\externals" -pushd "%~dp0..\externals" - -if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/ - -rem Optionally clean up first. Be warned that this can be very destructive! -if not "%1"=="" ( - for %%c in (-c --clean --clean-only) do ( - if "%1"=="%%c" goto clean - ) - goto usage -) -goto fetch - -:clean -echo.Cleaning up external libraries. -for /D %%d in ( - bzip2-* - db-* - nasm-* - openssl-* - tcl-* - tcltk* - tk-* - tix-* - sqlite-* - xz-* - ) do ( - echo.Removing %%d - rmdir /s /q %%d -) -if "%1"=="--clean-only" ( - goto end -) - -:fetch -rem Fetch current versions - -svn --version > nul 2>&1 -if ERRORLEVEL 9009 ( - echo.svn.exe must be on your PATH. - echo.Try TortoiseSVN (http://tortoisesvn.net/^) and be sure to check the - echo.command line tools option. - popd - exit /b 1 -) - -echo.Fetching external libraries... - -set libraries= -set libraries=%libraries% bzip2-1.0.6 -if NOT "%IncludeSSL%"=="false" set libraries=%libraries% nasm-2.11.06 -if NOT "%IncludeSSL%"=="false" set libraries=%libraries% openssl-1.0.2k -set libraries=%libraries% sqlite-3.14.2.0 -if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tcl-core-8.6.6.0 -if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tk-8.6.6.0 -if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tix-8.4.3.6 -set libraries=%libraries% xz-5.2.2 - -for %%e in (%libraries%) do ( - if exist %%e ( - echo.%%e already exists, skipping. - ) else ( - echo.Fetching %%e... - svn export -q %SVNROOT%%%e - ) -) - -goto end - -:usage -echo.invalid argument: %1 -echo.usage: %~n0 [[ -c ^| --clean ] ^| --clean-only ] -echo. -echo.Pull all sources necessary for compiling optional extension modules -echo.that rely on external libraries. Requires svn.exe to be on your PATH -echo.and pulls sources from %SVNROOT%. -echo. -echo.Use the -c or --clean option to clean up all external library sources -echo.before pulling in the current versions. -echo. -echo.Use the --clean-only option to do the same cleaning, without pulling in -echo.anything new. -echo. -echo.Only the first argument is checked, all others are ignored. -echo. -echo.**WARNING**: the cleaning options unconditionally remove any directory -echo.that is a child of -echo. %CD% -echo.and matches wildcard patterns beginning with bzip2-, db-, nasm-, openssl-, -echo.tcl-, tcltk, tk-, tix-, sqlite-, or xz-, and as such has the potential -echo.to be very destructive if you are not aware of what it is doing. Use with -echo.caution! -popd -exit /b -1 - - -:end -echo Finished. -popd +@echo off +setlocal +rem Simple script to fetch source for external libraries + +if not exist "%~dp0..\externals" mkdir "%~dp0..\externals" +pushd "%~dp0..\externals" + +if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/ + +rem Optionally clean up first. Be warned that this can be very destructive! +if not "%1"=="" ( + for %%c in (-c --clean --clean-only) do ( + if "%1"=="%%c" goto clean + ) + goto usage +) +goto fetch + +:clean +echo.Cleaning up external libraries. +for /D %%d in ( + bzip2-* + db-* + nasm-* + openssl-* + tcl-* + tcltk* + tk-* + tix-* + sqlite-* + xz-* + ) do ( + echo.Removing %%d + rmdir /s /q %%d +) +if "%1"=="--clean-only" ( + goto end +) + +:fetch +rem Fetch current versions + +svn --version > nul 2>&1 +if ERRORLEVEL 9009 ( + echo.svn.exe must be on your PATH. + echo.Try TortoiseSVN (http://tortoisesvn.net/^) and be sure to check the + echo.command line tools option. + popd + exit /b 1 +) + +echo.Fetching external libraries... + +set libraries= +set libraries=%libraries% bzip2-1.0.6 +if NOT "%IncludeSSL%"=="false" set libraries=%libraries% nasm-2.11.06 +if NOT "%IncludeSSL%"=="false" set libraries=%libraries% openssl-1.0.2k +set libraries=%libraries% sqlite-3.14.2.0 +if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tcl-core-8.6.6.0 +if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tk-8.6.6.0 +if NOT "%IncludeTkinter%"=="false" set libraries=%libraries% tix-8.4.3.6 +set libraries=%libraries% xz-5.2.2 + +for %%e in (%libraries%) do ( + if exist %%e ( + echo.%%e already exists, skipping. + ) else ( + echo.Fetching %%e... + svn export -q %SVNROOT%%%e + ) +) + +goto end + +:usage +echo.invalid argument: %1 +echo.usage: %~n0 [[ -c ^| --clean ] ^| --clean-only ] +echo. +echo.Pull all sources necessary for compiling optional extension modules +echo.that rely on external libraries. Requires svn.exe to be on your PATH +echo.and pulls sources from %SVNROOT%. +echo. +echo.Use the -c or --clean option to clean up all external library sources +echo.before pulling in the current versions. +echo. +echo.Use the --clean-only option to do the same cleaning, without pulling in +echo.anything new. +echo. +echo.Only the first argument is checked, all others are ignored. +echo. +echo.**WARNING**: the cleaning options unconditionally remove any directory +echo.that is a child of +echo. %CD% +echo.and matches wildcard patterns beginning with bzip2-, db-, nasm-, openssl-, +echo.tcl-, tcltk, tk-, tix-, sqlite-, or xz-, and as such has the potential +echo.to be very destructive if you are not aware of what it is doing. Use with +echo.caution! +popd +exit /b -1 + + +:end +echo Finished. +popd diff --git a/PCbuild/idle.bat b/PCbuild/idle.bat index bacaaa8414a267..1978b99f6ee19d 100644 --- a/PCbuild/idle.bat +++ b/PCbuild/idle.bat @@ -1,15 +1,15 @@ -@echo off -rem start idle -rem Usage: idle [-d] -rem -d Run Debug build (python_d.exe). Else release build. - -setlocal -set exe=win32\python -PATH %PATH%;..\externals\tcltk\bin - -if "%1"=="-d" (set exe=%exe%_d) & shift - -set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 - -echo on -%cmd% +@echo off +rem start idle +rem Usage: idle [-d] +rem -d Run Debug build (python_d.exe). Else release build. + +setlocal +set exe=win32\python +PATH %PATH%;..\externals\tcltk\bin + +if "%1"=="-d" (set exe=%exe%_d) & shift + +set cmd=%exe% ../Lib/idlelib/idle.py %1 %2 %3 %4 %5 %6 %7 %8 %9 + +echo on +%cmd% diff --git a/PCbuild/pcbuild.sln b/PCbuild/pcbuild.sln index 4848e2bc63832d..4da58498ee60bf 100644 --- a/PCbuild/pcbuild.sln +++ b/PCbuild/pcbuild.sln @@ -1,769 +1,769 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26430.6 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}" - ProjectSection(SolutionItems) = preProject - ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c - readme.txt = readme.txt - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcxproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcxproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_decimal", "_decimal.vcxproj", "{0E9791DB-593A-465F-98BC-681011311617}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcxproj", "{0E9791DB-593A-465F-98BC-681011311618}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcxproj", "{9EC7190A-249F-4180-A900-548FDCF3055F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcxproj", "{17E1E049-C309-4D79-843F-AE483C264AEA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcxproj", "{31FFC478-7B4A-43E8-9954-8D03E2187E9C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcxproj", "{86937F53-C189-40EF-8CE8-8759D8E7D480}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcxproj", "{13CECB97-4119-4316-9D42-8534019A5A44}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcxproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcxproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testimportmultiple", "_testimportmultiple.vcxproj", "{36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcxproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bz2", "_bz2.vcxproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcxproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_lzma", "_lzma.vcxproj", "{F9D71780-F393-11E0-BE50-0800200C9A66}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcxproj", "{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcxproj", "{D06B6426-4762-44CC-8BAD-D79052507F2F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "..\PC\bdist_wininst\bdist_wininst.vcxproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcxproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcxproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited", "xxlimited.vcxproj", "{F749B822-B489-4CA5-A3AD-CE078F5F338A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testbuffer", "_testbuffer.vcxproj", "{A2697BD3-28C1-4AEC-9106-8B748639FD16}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pylauncher", "pylauncher.vcxproj", "{7B2727B5-5A3F-40EE-A866-43A13CD31446}" - ProjectSection(ProjectDependencies) = postProject - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} = {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pywlauncher", "pywlauncher.vcxproj", "{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}" - ProjectSection(ProjectDependencies) = postProject - {7B2727B5-5A3F-40EE-A866-43A13CD31446} = {7B2727B5-5A3F-40EE-A866-43A13CD31446} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_freeze_importlib", "_freeze_importlib.vcxproj", "{19C0C13F-47CA-4432-AFF3-799A296A4DDC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_overlapped", "_overlapped.vcxproj", "{EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testembed", "_testembed.vcxproj", "{6DAC66D9-E703-4624-BE03-49112AB5AA62}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay", "libeay.vcxproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay", "ssleay.vcxproj", "{10615B24-73BF-4EFA-93AA-236916321317}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testconsole", "_testconsole.vcxproj", "{B244E787-C445-441C-BDF4-5A4F1A3A1E51}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_asyncio", "_asyncio.vcxproj", "{384C224A-7474-476E-A01B-750EA7DE918C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - PGInstrument|Win32 = PGInstrument|Win32 - PGInstrument|x64 = PGInstrument|x64 - PGUpdate|Win32 = PGUpdate|Win32 - PGUpdate|x64 = PGUpdate|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.ActiveCfg = Debug|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.Build.0 = Debug|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.ActiveCfg = Debug|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.Build.0 = Debug|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.ActiveCfg = Release|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.Build.0 = Release|Win32 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.ActiveCfg = Release|x64 - {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.Build.0 = Release|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.ActiveCfg = Debug|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.Build.0 = Debug|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.ActiveCfg = Debug|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.Build.0 = Debug|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.ActiveCfg = Release|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.Build.0 = Release|Win32 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.ActiveCfg = Release|x64 - {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.Build.0 = Release|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.ActiveCfg = Debug|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.Build.0 = Debug|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.ActiveCfg = Debug|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.Build.0 = Debug|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.Build.0 = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.ActiveCfg = Release|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.Build.0 = Release|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.Build.0 = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.ActiveCfg = Release|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.Build.0 = Release|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.ActiveCfg = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.Build.0 = Release|Win32 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.ActiveCfg = Release|x64 - {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.Build.0 = Release|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.ActiveCfg = Debug|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.Build.0 = Debug|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.ActiveCfg = Debug|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.Build.0 = Debug|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.ActiveCfg = Release|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.Build.0 = Release|Win32 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.ActiveCfg = Release|x64 - {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.Build.0 = Release|x64 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.ActiveCfg = Debug|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.Build.0 = Debug|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.ActiveCfg = Debug|x64 - {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.Build.0 = Debug|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.ActiveCfg = Release|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.Build.0 = Release|Win32 - {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.ActiveCfg = Release|x64 - {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.Build.0 = Release|x64 - {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.ActiveCfg = Debug|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.Build.0 = Debug|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.ActiveCfg = Debug|x64 - {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.Build.0 = Debug|x64 - {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.ActiveCfg = Release|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.Build.0 = Release|Win32 - {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.ActiveCfg = Release|x64 - {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.Build.0 = Release|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.ActiveCfg = Debug|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.Build.0 = Debug|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.ActiveCfg = Debug|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.Build.0 = Debug|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.Build.0 = Release|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.ActiveCfg = Release|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.Build.0 = Release|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.Build.0 = Release|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.ActiveCfg = Release|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.Build.0 = Release|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.ActiveCfg = Release|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.Build.0 = Release|Win32 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.ActiveCfg = Release|x64 - {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.Build.0 = Release|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.ActiveCfg = Debug|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.Build.0 = Debug|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.ActiveCfg = Debug|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.Build.0 = Debug|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.ActiveCfg = Release|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.Build.0 = Release|Win32 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.ActiveCfg = Release|x64 - {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.Build.0 = Release|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.ActiveCfg = Debug|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.Build.0 = Debug|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.ActiveCfg = Debug|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.Build.0 = Debug|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.ActiveCfg = Release|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.Build.0 = Release|Win32 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.ActiveCfg = Release|x64 - {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.Build.0 = Release|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.ActiveCfg = Debug|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.Build.0 = Debug|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.ActiveCfg = Debug|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.Build.0 = Debug|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.ActiveCfg = Release|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.Build.0 = Release|Win32 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.ActiveCfg = Release|x64 - {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.Build.0 = Release|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.ActiveCfg = Debug|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.Build.0 = Debug|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.ActiveCfg = Debug|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.Build.0 = Debug|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.ActiveCfg = Release|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.Build.0 = Release|Win32 - {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.ActiveCfg = Release|x64 - {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.Build.0 = Release|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.ActiveCfg = Debug|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.Build.0 = Debug|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.ActiveCfg = Debug|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.Build.0 = Debug|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.ActiveCfg = Release|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.Build.0 = Release|Win32 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.ActiveCfg = Release|x64 - {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.Build.0 = Release|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.ActiveCfg = Debug|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.Build.0 = Debug|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.ActiveCfg = Debug|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.Build.0 = Debug|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.ActiveCfg = Release|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.Build.0 = Release|Win32 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.ActiveCfg = Release|x64 - {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.Build.0 = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.ActiveCfg = Debug|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.Build.0 = Debug|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.ActiveCfg = Debug|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.Build.0 = Debug|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.Build.0 = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.ActiveCfg = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.Build.0 = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.Build.0 = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.ActiveCfg = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.Build.0 = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.ActiveCfg = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.Build.0 = Release|Win32 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|x64.ActiveCfg = Release|x64 - {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|x64.Build.0 = Release|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.ActiveCfg = Debug|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.Build.0 = Debug|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.ActiveCfg = Debug|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.Build.0 = Debug|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.ActiveCfg = Release|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.Build.0 = Release|Win32 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.ActiveCfg = Release|x64 - {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.Build.0 = Release|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.ActiveCfg = Debug|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.Build.0 = Debug|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.ActiveCfg = Debug|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.Build.0 = Debug|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.ActiveCfg = Release|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.Build.0 = Release|Win32 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.ActiveCfg = Release|x64 - {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.Build.0 = Release|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.ActiveCfg = Debug|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.Build.0 = Debug|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.ActiveCfg = Debug|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.Build.0 = Debug|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.ActiveCfg = Release|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.Build.0 = Release|Win32 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.ActiveCfg = Release|x64 - {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.Build.0 = Release|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|x64.Build.0 = Debug|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|Win32.Build.0 = Release|Win32 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|x64.ActiveCfg = Release|x64 - {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|x64.Build.0 = Release|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.ActiveCfg = Debug|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.Build.0 = Debug|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.ActiveCfg = Debug|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.Build.0 = Debug|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.ActiveCfg = Release|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.Build.0 = Release|Win32 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.ActiveCfg = Release|x64 - {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.Build.0 = Release|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.ActiveCfg = Debug|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.Build.0 = Debug|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.ActiveCfg = Debug|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.Build.0 = Debug|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.ActiveCfg = Release|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.Build.0 = Release|Win32 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.ActiveCfg = Release|x64 - {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.Build.0 = Release|x64 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Debug|Win32 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|x64.ActiveCfg = Release|x64 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|x64.ActiveCfg = Release|x64 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|x64 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32 - {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.ActiveCfg = Debug|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.Build.0 = Debug|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.ActiveCfg = Debug|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.Build.0 = Debug|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.ActiveCfg = Release|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.Build.0 = Release|Win32 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.ActiveCfg = Release|x64 - {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.Build.0 = Release|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.ActiveCfg = Debug|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.Build.0 = Debug|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.ActiveCfg = Debug|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.Build.0 = Debug|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.ActiveCfg = Release|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.Build.0 = Release|Win32 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.ActiveCfg = Release|x64 - {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.Build.0 = Release|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.ActiveCfg = Debug|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.Build.0 = Debug|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.ActiveCfg = Debug|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.Build.0 = Debug|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.ActiveCfg = Release|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.Build.0 = Release|Win32 - {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.ActiveCfg = Release|x64 - {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.Build.0 = Release|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.ActiveCfg = Debug|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.Build.0 = Debug|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.ActiveCfg = Debug|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.Build.0 = Debug|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.ActiveCfg = Debug|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.Build.0 = Debug|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.ActiveCfg = Debug|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.Build.0 = Debug|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.ActiveCfg = Debug|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.Build.0 = Debug|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.ActiveCfg = Debug|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.Build.0 = Debug|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.ActiveCfg = Release|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.Build.0 = Release|Win32 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.ActiveCfg = Release|x64 - {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.Build.0 = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|Win32.ActiveCfg = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|x64.ActiveCfg = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|x64.ActiveCfg = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|x64.Build.0 = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|Win32.ActiveCfg = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|Win32.Build.0 = Release|Win32 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|x64.ActiveCfg = Release|x64 - {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|x64.Build.0 = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.ActiveCfg = Debug|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.Build.0 = Debug|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.ActiveCfg = Debug|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.Build.0 = Debug|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.Build.0 = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.ActiveCfg = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.Build.0 = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.Build.0 = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.ActiveCfg = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.Build.0 = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.ActiveCfg = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.Build.0 = Release|Win32 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.ActiveCfg = Release|x64 - {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.Build.0 = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.ActiveCfg = Debug|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.Build.0 = Debug|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.ActiveCfg = Debug|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.Build.0 = Debug|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.ActiveCfg = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.Build.0 = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.ActiveCfg = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.Build.0 = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.ActiveCfg = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.Build.0 = Release|Win32 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.ActiveCfg = Release|x64 - {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.Build.0 = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.ActiveCfg = Debug|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.Build.0 = Debug|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.ActiveCfg = Debug|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.Build.0 = Debug|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.ActiveCfg = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.Build.0 = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.ActiveCfg = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.Build.0 = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.ActiveCfg = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.Build.0 = Release|Win32 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.ActiveCfg = Release|x64 - {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.Build.0 = Release|x64 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|Win32.ActiveCfg = Debug|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|x64.ActiveCfg = Debug|x64 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|x64.ActiveCfg = Release|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|x64.ActiveCfg = Release|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.ActiveCfg = Release|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.Build.0 = Release|Win32 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.ActiveCfg = Release|x64 - {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.Build.0 = Release|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|Win32.ActiveCfg = Debug|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|Win32.Build.0 = Debug|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|x64.ActiveCfg = Debug|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|x64.Build.0 = Debug|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|Win32.ActiveCfg = Release|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|Win32.Build.0 = Release|Win32 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|x64.ActiveCfg = Release|x64 - {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|x64.Build.0 = Release|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|Win32.ActiveCfg = Debug|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|Win32.Build.0 = Debug|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|x64.ActiveCfg = Debug|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|x64.Build.0 = Debug|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGInstrument|x64.ActiveCfg = Release|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|Win32.Build.0 = Release|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|x64.ActiveCfg = Release|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|x64.Build.0 = Release|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|Win32.ActiveCfg = Release|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|Win32.Build.0 = Release|Win32 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|x64.ActiveCfg = Release|x64 - {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|x64.Build.0 = Release|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|Win32.ActiveCfg = Debug|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|Win32.Build.0 = Debug|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|x64.ActiveCfg = Debug|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|x64.Build.0 = Debug|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGInstrument|x64.ActiveCfg = Release|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|Win32.Build.0 = Release|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|x64.ActiveCfg = Release|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|x64.Build.0 = Release|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|Win32.ActiveCfg = Release|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|Win32.Build.0 = Release|Win32 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|x64.ActiveCfg = Release|x64 - {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|x64.Build.0 = Release|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|Win32.ActiveCfg = Debug|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|Win32.Build.0 = Debug|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.ActiveCfg = Debug|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.Build.0 = Debug|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.Build.0 = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.ActiveCfg = Release|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.Build.0 = Release|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.Build.0 = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.ActiveCfg = Release|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.Build.0 = Release|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.ActiveCfg = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.Build.0 = Release|Win32 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.ActiveCfg = Release|x64 - {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.Build.0 = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.ActiveCfg = Debug|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.Build.0 = Debug|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.ActiveCfg = Debug|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.Build.0 = Debug|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.Build.0 = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.ActiveCfg = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.Build.0 = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.Build.0 = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.ActiveCfg = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.Build.0 = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.ActiveCfg = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.Build.0 = Release|Win32 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.ActiveCfg = Release|x64 - {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.Build.0 = Release|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.ActiveCfg = Debug|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.Build.0 = Debug|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.ActiveCfg = Debug|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.Build.0 = Debug|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.Build.0 = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.ActiveCfg = Release|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.Build.0 = Release|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.Build.0 = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.ActiveCfg = Release|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.Build.0 = Release|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.ActiveCfg = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.Build.0 = Release|Win32 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.ActiveCfg = Release|x64 - {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.Build.0 = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64 - {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.Build.0 = Release|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.ActiveCfg = Debug|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.Build.0 = Debug|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.ActiveCfg = Debug|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.Build.0 = Debug|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.Build.0 = Release|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.ActiveCfg = Release|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.Build.0 = Release|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.Build.0 = Release|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.ActiveCfg = Release|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.Build.0 = Release|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.ActiveCfg = Release|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.Build.0 = Release|Win32 - {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.ActiveCfg = Release|x64 - {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.Build.0 = Release|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.ActiveCfg = Debug|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.Build.0 = Debug|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.ActiveCfg = Debug|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.Build.0 = Debug|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|Win32.ActiveCfg = Release|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|Win32.Build.0 = Release|Win32 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|x64.ActiveCfg = Release|x64 - {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|x64.Build.0 = Release|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|Win32.ActiveCfg = Debug|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|Win32.Build.0 = Debug|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|x64.ActiveCfg = Debug|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|x64.Build.0 = Debug|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|Win32.ActiveCfg = Release|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|Win32.Build.0 = Release|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|x64.ActiveCfg = Release|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|x64.Build.0 = Release|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|Win32.ActiveCfg = Release|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|Win32.Build.0 = Release|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|x64.ActiveCfg = Release|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|x64.Build.0 = Release|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|Win32.ActiveCfg = Release|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|Win32.Build.0 = Release|Win32 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|x64.ActiveCfg = Release|x64 - {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|x64.Build.0 = Release|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|Win32.ActiveCfg = Debug|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|Win32.Build.0 = Debug|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|x64.ActiveCfg = Debug|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|x64.Build.0 = Debug|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.Release|Win32.ActiveCfg = Release|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.Release|Win32.Build.0 = Release|Win32 - {384C224A-7474-476E-A01B-750EA7DE918C}.Release|x64.ActiveCfg = Release|x64 - {384C224A-7474-476E-A01B-750EA7DE918C}.Release|x64.Build.0 = Release|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|x64.Build.0 = PGInstrument|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|x64.Build.0 = PGUpdate|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64 - {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.26430.6 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{553EC33E-9816-4996-A660-5D6186A0B0B3}" + ProjectSection(SolutionItems) = preProject + ..\Modules\getbuildinfo.c = ..\Modules\getbuildinfo.c + readme.txt = readme.txt + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python", "python.vcxproj", "{B11D750F-CD1F-4A96-85CE-E69A5C5259F9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythoncore", "pythoncore.vcxproj", "{CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pythonw", "pythonw.vcxproj", "{F4229CC3-873C-49AE-9729-DD308ED4CD4A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "winsound", "winsound.vcxproj", "{28B5D777-DDF2-4B6B-B34F-31D938813856}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_decimal", "_decimal.vcxproj", "{0E9791DB-593A-465F-98BC-681011311617}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes", "_ctypes.vcxproj", "{0E9791DB-593A-465F-98BC-681011311618}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ctypes_test", "_ctypes_test.vcxproj", "{9EC7190A-249F-4180-A900-548FDCF3055F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_elementtree", "_elementtree.vcxproj", "{17E1E049-C309-4D79-843F-AE483C264AEA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_msi", "_msi.vcxproj", "{31FFC478-7B4A-43E8-9954-8D03E2187E9C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_socket", "_socket.vcxproj", "{86937F53-C189-40EF-8CE8-8759D8E7D480}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_sqlite3", "_sqlite3.vcxproj", "{13CECB97-4119-4316-9D42-8534019A5A44}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_ssl", "_ssl.vcxproj", "{C6E20F84-3247-4AD6-B051-B073268F73BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testcapi", "_testcapi.vcxproj", "{6901D91C-6E48-4BB7-9FEC-700C8131DF1D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testimportmultiple", "_testimportmultiple.vcxproj", "{36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_tkinter", "_tkinter.vcxproj", "{4946ECAC-2E69-4BF8-A90A-F5136F5094DF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_bz2", "_bz2.vcxproj", "{73FCD2BD-F133-46B7-8EC1-144CD82A59D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "select", "select.vcxproj", "{18CAE28C-B454-46C1-87A0-493D91D97F03}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_lzma", "_lzma.vcxproj", "{F9D71780-F393-11E0-BE50-0800200C9A66}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unicodedata", "unicodedata.vcxproj", "{ECC7CEAC-A5E5-458E-BB9E-2413CC847881}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyexpat", "pyexpat.vcxproj", "{D06B6426-4762-44CC-8BAD-D79052507F2F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bdist_wininst", "..\PC\bdist_wininst\bdist_wininst.vcxproj", "{EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_hashlib", "_hashlib.vcxproj", "{447F05A8-F581-4CAC-A466-5AC7936E207E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sqlite3", "sqlite3.vcxproj", "{A1A295E5-463C-437F-81CA-1F32367685DA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_multiprocessing", "_multiprocessing.vcxproj", "{9E48B300-37D1-11DD-8C41-005056C00008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "python3dll", "python3dll.vcxproj", "{885D4898-D08D-4091-9C40-C700CFE3FC5A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xxlimited", "xxlimited.vcxproj", "{F749B822-B489-4CA5-A3AD-CE078F5F338A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testbuffer", "_testbuffer.vcxproj", "{A2697BD3-28C1-4AEC-9106-8B748639FD16}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pylauncher", "pylauncher.vcxproj", "{7B2727B5-5A3F-40EE-A866-43A13CD31446}" + ProjectSection(ProjectDependencies) = postProject + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} = {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pywlauncher", "pywlauncher.vcxproj", "{1D4B18D3-7C12-4ECB-9179-8531FF876CE6}" + ProjectSection(ProjectDependencies) = postProject + {7B2727B5-5A3F-40EE-A866-43A13CD31446} = {7B2727B5-5A3F-40EE-A866-43A13CD31446} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_freeze_importlib", "_freeze_importlib.vcxproj", "{19C0C13F-47CA-4432-AFF3-799A296A4DDC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_overlapped", "_overlapped.vcxproj", "{EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testembed", "_testembed.vcxproj", "{6DAC66D9-E703-4624-BE03-49112AB5AA62}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testmultiphase", "_testmultiphase.vcxproj", "{16BFE6F0-22EF-40B5-B831-7E937119EF10}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tcl", "tcl.vcxproj", "{B5FD6F1D-129E-4BFF-9340-03606FAC7283}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tix", "tix.vcxproj", "{C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tk", "tk.vcxproj", "{7E85ECCF-A72C-4DA4-9E52-884508E80BA1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libeay", "libeay.vcxproj", "{E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ssleay", "ssleay.vcxproj", "{10615B24-73BF-4EFA-93AA-236916321317}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pyshellext", "pyshellext.vcxproj", "{0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_testconsole", "_testconsole.vcxproj", "{B244E787-C445-441C-BDF4-5A4F1A3A1E51}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_asyncio", "_asyncio.vcxproj", "{384C224A-7474-476E-A01B-750EA7DE918C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "liblzma", "liblzma.vcxproj", "{12728250-16EC-4DC6-94D7-E21DD88947F8}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + PGInstrument|Win32 = PGInstrument|Win32 + PGInstrument|x64 = PGInstrument|x64 + PGUpdate|Win32 = PGUpdate|Win32 + PGUpdate|x64 = PGUpdate|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.ActiveCfg = Debug|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|Win32.Build.0 = Debug|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.ActiveCfg = Debug|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Debug|x64.Build.0 = Debug|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.ActiveCfg = Release|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|Win32.Build.0 = Release|Win32 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.ActiveCfg = Release|x64 + {B11D750F-CD1F-4A96-85CE-E69A5C5259F9}.Release|x64.Build.0 = Release|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.ActiveCfg = Debug|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|Win32.Build.0 = Debug|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.ActiveCfg = Debug|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Debug|x64.Build.0 = Debug|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.ActiveCfg = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|Win32.Build.0 = Release|Win32 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.ActiveCfg = Release|x64 + {CF7AC3D1-E2DF-41D2-BEA6-1E2556CDEA26}.Release|x64.Build.0 = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.ActiveCfg = Debug|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|Win32.Build.0 = Debug|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.ActiveCfg = Debug|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Debug|x64.Build.0 = Debug|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|Win32.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.ActiveCfg = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGInstrument|x64.Build.0 = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|Win32.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.ActiveCfg = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.PGUpdate|x64.Build.0 = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.ActiveCfg = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|Win32.Build.0 = Release|Win32 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.ActiveCfg = Release|x64 + {F4229CC3-873C-49AE-9729-DD308ED4CD4A}.Release|x64.Build.0 = Release|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.ActiveCfg = Debug|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|Win32.Build.0 = Debug|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.ActiveCfg = Debug|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Debug|x64.Build.0 = Debug|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.ActiveCfg = Release|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|Win32.Build.0 = Release|Win32 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.ActiveCfg = Release|x64 + {28B5D777-DDF2-4B6B-B34F-31D938813856}.Release|x64.Build.0 = Release|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.ActiveCfg = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|Win32.Build.0 = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.ActiveCfg = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Debug|x64.Build.0 = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311617}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.ActiveCfg = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Release|Win32.Build.0 = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.ActiveCfg = Release|x64 + {0E9791DB-593A-465F-98BC-681011311617}.Release|x64.Build.0 = Release|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.ActiveCfg = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|Win32.Build.0 = Debug|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.ActiveCfg = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Debug|x64.Build.0 = Debug|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311618}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.ActiveCfg = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Release|Win32.Build.0 = Release|Win32 + {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.ActiveCfg = Release|x64 + {0E9791DB-593A-465F-98BC-681011311618}.Release|x64.Build.0 = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.ActiveCfg = Debug|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|Win32.Build.0 = Debug|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.ActiveCfg = Debug|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Debug|x64.Build.0 = Debug|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|Win32.Build.0 = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.ActiveCfg = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGInstrument|x64.Build.0 = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|Win32.Build.0 = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.ActiveCfg = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.PGUpdate|x64.Build.0 = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.ActiveCfg = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|Win32.Build.0 = Release|Win32 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.ActiveCfg = Release|x64 + {9EC7190A-249F-4180-A900-548FDCF3055F}.Release|x64.Build.0 = Release|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.ActiveCfg = Debug|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|Win32.Build.0 = Debug|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.ActiveCfg = Debug|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Debug|x64.Build.0 = Debug|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.ActiveCfg = Release|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|Win32.Build.0 = Release|Win32 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.ActiveCfg = Release|x64 + {17E1E049-C309-4D79-843F-AE483C264AEA}.Release|x64.Build.0 = Release|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.ActiveCfg = Debug|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|Win32.Build.0 = Debug|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.ActiveCfg = Debug|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Debug|x64.Build.0 = Debug|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.ActiveCfg = Release|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|Win32.Build.0 = Release|Win32 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.ActiveCfg = Release|x64 + {31FFC478-7B4A-43E8-9954-8D03E2187E9C}.Release|x64.Build.0 = Release|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.ActiveCfg = Debug|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|Win32.Build.0 = Debug|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.ActiveCfg = Debug|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Debug|x64.Build.0 = Debug|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.ActiveCfg = Release|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|Win32.Build.0 = Release|Win32 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.ActiveCfg = Release|x64 + {86937F53-C189-40EF-8CE8-8759D8E7D480}.Release|x64.Build.0 = Release|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.ActiveCfg = Debug|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|Win32.Build.0 = Debug|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.ActiveCfg = Debug|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Debug|x64.Build.0 = Debug|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.ActiveCfg = Release|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|Win32.Build.0 = Release|Win32 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.ActiveCfg = Release|x64 + {13CECB97-4119-4316-9D42-8534019A5A44}.Release|x64.Build.0 = Release|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.ActiveCfg = Debug|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|Win32.Build.0 = Debug|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.ActiveCfg = Debug|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Debug|x64.Build.0 = Debug|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.ActiveCfg = Release|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|Win32.Build.0 = Release|Win32 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.ActiveCfg = Release|x64 + {C6E20F84-3247-4AD6-B051-B073268F73BA}.Release|x64.Build.0 = Release|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.ActiveCfg = Debug|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|Win32.Build.0 = Debug|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.ActiveCfg = Debug|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Debug|x64.Build.0 = Debug|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.ActiveCfg = Release|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|Win32.Build.0 = Release|Win32 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.ActiveCfg = Release|x64 + {6901D91C-6E48-4BB7-9FEC-700C8131DF1D}.Release|x64.Build.0 = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.ActiveCfg = Debug|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|Win32.Build.0 = Debug|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.ActiveCfg = Debug|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Debug|x64.Build.0 = Debug|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|Win32.Build.0 = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.ActiveCfg = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGInstrument|x64.Build.0 = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|Win32.Build.0 = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.ActiveCfg = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.PGUpdate|x64.Build.0 = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.ActiveCfg = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|Win32.Build.0 = Release|Win32 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|x64.ActiveCfg = Release|x64 + {36D0C52C-DF4E-45D0-8BC7-E294C3ABC781}.Release|x64.Build.0 = Release|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.ActiveCfg = Debug|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|Win32.Build.0 = Debug|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.ActiveCfg = Debug|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Debug|x64.Build.0 = Debug|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.ActiveCfg = Release|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|Win32.Build.0 = Release|Win32 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.ActiveCfg = Release|x64 + {4946ECAC-2E69-4BF8-A90A-F5136F5094DF}.Release|x64.Build.0 = Release|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.ActiveCfg = Debug|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|Win32.Build.0 = Debug|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.ActiveCfg = Debug|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Debug|x64.Build.0 = Debug|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.ActiveCfg = Release|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|Win32.Build.0 = Release|Win32 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.ActiveCfg = Release|x64 + {73FCD2BD-F133-46B7-8EC1-144CD82A59D5}.Release|x64.Build.0 = Release|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.ActiveCfg = Debug|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|Win32.Build.0 = Debug|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.ActiveCfg = Debug|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Debug|x64.Build.0 = Debug|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.ActiveCfg = Release|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|Win32.Build.0 = Release|Win32 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.ActiveCfg = Release|x64 + {18CAE28C-B454-46C1-87A0-493D91D97F03}.Release|x64.Build.0 = Release|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|Win32.ActiveCfg = Debug|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|Win32.Build.0 = Debug|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|x64.ActiveCfg = Debug|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Debug|x64.Build.0 = Debug|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|Win32.ActiveCfg = Release|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|Win32.Build.0 = Release|Win32 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|x64.ActiveCfg = Release|x64 + {F9D71780-F393-11E0-BE50-0800200C9A66}.Release|x64.Build.0 = Release|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.ActiveCfg = Debug|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|Win32.Build.0 = Debug|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.ActiveCfg = Debug|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Debug|x64.Build.0 = Debug|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.ActiveCfg = Release|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|Win32.Build.0 = Release|Win32 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.ActiveCfg = Release|x64 + {ECC7CEAC-A5E5-458E-BB9E-2413CC847881}.Release|x64.Build.0 = Release|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.ActiveCfg = Debug|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|Win32.Build.0 = Debug|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.ActiveCfg = Debug|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Debug|x64.Build.0 = Debug|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.ActiveCfg = Release|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|Win32.Build.0 = Release|Win32 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.ActiveCfg = Release|x64 + {D06B6426-4762-44CC-8BAD-D79052507F2F}.Release|x64.Build.0 = Release|x64 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|Win32.ActiveCfg = Debug|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Debug|x64.ActiveCfg = Release|x64 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGInstrument|x64.ActiveCfg = Release|x64 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.PGUpdate|x64.ActiveCfg = Release|x64 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|Win32.ActiveCfg = Release|Win32 + {EB1C19C1-1F18-421E-9735-CAEE69DC6A3C}.Release|x64.ActiveCfg = Release|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.ActiveCfg = Debug|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|Win32.Build.0 = Debug|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.ActiveCfg = Debug|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Debug|x64.Build.0 = Debug|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.ActiveCfg = Release|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|Win32.Build.0 = Release|Win32 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.ActiveCfg = Release|x64 + {447F05A8-F581-4CAC-A466-5AC7936E207E}.Release|x64.Build.0 = Release|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.ActiveCfg = Debug|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|Win32.Build.0 = Debug|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.ActiveCfg = Debug|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Debug|x64.Build.0 = Debug|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.ActiveCfg = Release|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|Win32.Build.0 = Release|Win32 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.ActiveCfg = Release|x64 + {A1A295E5-463C-437F-81CA-1F32367685DA}.Release|x64.Build.0 = Release|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.ActiveCfg = Debug|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|Win32.Build.0 = Debug|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.ActiveCfg = Debug|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.Debug|x64.Build.0 = Debug|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.ActiveCfg = Release|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.Release|Win32.Build.0 = Release|Win32 + {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.ActiveCfg = Release|x64 + {9E48B300-37D1-11DD-8C41-005056C00008}.Release|x64.Build.0 = Release|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.ActiveCfg = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|Win32.Build.0 = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.ActiveCfg = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Debug|x64.Build.0 = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.ActiveCfg = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|Win32.Build.0 = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.ActiveCfg = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGInstrument|x64.Build.0 = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.ActiveCfg = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|Win32.Build.0 = Debug|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.ActiveCfg = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.PGUpdate|x64.Build.0 = Debug|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.ActiveCfg = Release|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|Win32.Build.0 = Release|Win32 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.ActiveCfg = Release|x64 + {885D4898-D08D-4091-9C40-C700CFE3FC5A}.Release|x64.Build.0 = Release|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|Win32.ActiveCfg = Release|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Debug|x64.ActiveCfg = Release|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|x64.ActiveCfg = Release|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.PGUpdate|x64.Build.0 = Release|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|Win32.ActiveCfg = Release|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|Win32.Build.0 = Release|Win32 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|x64.ActiveCfg = Release|x64 + {F749B822-B489-4CA5-A3AD-CE078F5F338A}.Release|x64.Build.0 = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|Win32.Build.0 = Debug|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.ActiveCfg = Debug|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Debug|x64.Build.0 = Debug|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|Win32.Build.0 = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.ActiveCfg = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGInstrument|x64.Build.0 = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|Win32.Build.0 = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.ActiveCfg = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.PGUpdate|x64.Build.0 = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.ActiveCfg = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|Win32.Build.0 = Release|Win32 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.ActiveCfg = Release|x64 + {A2697BD3-28C1-4AEC-9106-8B748639FD16}.Release|x64.Build.0 = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.ActiveCfg = Debug|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|Win32.Build.0 = Debug|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.ActiveCfg = Debug|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Debug|x64.Build.0 = Debug|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|Win32.Build.0 = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.ActiveCfg = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGInstrument|x64.Build.0 = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|Win32.Build.0 = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.ActiveCfg = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.PGUpdate|x64.Build.0 = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.ActiveCfg = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|Win32.Build.0 = Release|Win32 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.ActiveCfg = Release|x64 + {7B2727B5-5A3F-40EE-A866-43A13CD31446}.Release|x64.Build.0 = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.ActiveCfg = Debug|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|Win32.Build.0 = Debug|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.ActiveCfg = Debug|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Debug|x64.Build.0 = Debug|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|Win32.Build.0 = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.ActiveCfg = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGInstrument|x64.Build.0 = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|Win32.Build.0 = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.ActiveCfg = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.PGUpdate|x64.Build.0 = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.ActiveCfg = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|Win32.Build.0 = Release|Win32 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.ActiveCfg = Release|x64 + {1D4B18D3-7C12-4ECB-9179-8531FF876CE6}.Release|x64.Build.0 = Release|x64 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|Win32.ActiveCfg = Debug|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Debug|x64.ActiveCfg = Debug|x64 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGInstrument|x64.ActiveCfg = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.PGUpdate|x64.ActiveCfg = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.ActiveCfg = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|Win32.Build.0 = Release|Win32 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.ActiveCfg = Release|x64 + {19C0C13F-47CA-4432-AFF3-799A296A4DDC}.Release|x64.Build.0 = Release|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|Win32.ActiveCfg = Debug|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|Win32.Build.0 = Debug|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|x64.ActiveCfg = Debug|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Debug|x64.Build.0 = Debug|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|Win32.ActiveCfg = Release|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|Win32.Build.0 = Release|Win32 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|x64.ActiveCfg = Release|x64 + {EB6E69DD-04BF-4543-9B92-49FAABCEAC2E}.Release|x64.Build.0 = Release|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|Win32.ActiveCfg = Debug|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|Win32.Build.0 = Debug|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|x64.ActiveCfg = Debug|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Debug|x64.Build.0 = Debug|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGInstrument|x64.ActiveCfg = Release|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|Win32.Build.0 = Release|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|x64.ActiveCfg = Release|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.PGUpdate|x64.Build.0 = Release|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|Win32.ActiveCfg = Release|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|Win32.Build.0 = Release|Win32 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|x64.ActiveCfg = Release|x64 + {6DAC66D9-E703-4624-BE03-49112AB5AA62}.Release|x64.Build.0 = Release|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|Win32.ActiveCfg = Debug|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|Win32.Build.0 = Debug|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|x64.ActiveCfg = Debug|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Debug|x64.Build.0 = Debug|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGInstrument|x64.ActiveCfg = Release|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|Win32.Build.0 = Release|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|x64.ActiveCfg = Release|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.PGUpdate|x64.Build.0 = Release|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|Win32.ActiveCfg = Release|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|Win32.Build.0 = Release|Win32 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|x64.ActiveCfg = Release|x64 + {16BFE6F0-22EF-40B5-B831-7E937119EF10}.Release|x64.Build.0 = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|Win32.ActiveCfg = Debug|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|Win32.Build.0 = Debug|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.ActiveCfg = Debug|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Debug|x64.Build.0 = Debug|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|Win32.Build.0 = Release|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.ActiveCfg = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGInstrument|x64.Build.0 = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|Win32.Build.0 = Release|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.ActiveCfg = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.PGUpdate|x64.Build.0 = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.ActiveCfg = Release|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|Win32.Build.0 = Release|Win32 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.ActiveCfg = Release|x64 + {B5FD6F1D-129E-4BFF-9340-03606FAC7283}.Release|x64.Build.0 = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.ActiveCfg = Debug|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|Win32.Build.0 = Debug|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.ActiveCfg = Debug|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Debug|x64.Build.0 = Debug|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|Win32.Build.0 = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.ActiveCfg = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGInstrument|x64.Build.0 = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|Win32.Build.0 = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.ActiveCfg = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.PGUpdate|x64.Build.0 = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.ActiveCfg = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|Win32.Build.0 = Release|Win32 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.ActiveCfg = Release|x64 + {C5A3E7FB-9695-4B2E-960B-1D9F43F1E555}.Release|x64.Build.0 = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.ActiveCfg = Debug|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|Win32.Build.0 = Debug|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.ActiveCfg = Debug|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Debug|x64.Build.0 = Debug|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|Win32.Build.0 = Release|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.ActiveCfg = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGInstrument|x64.Build.0 = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|Win32.Build.0 = Release|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.ActiveCfg = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.PGUpdate|x64.Build.0 = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.ActiveCfg = Release|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|Win32.Build.0 = Release|Win32 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.ActiveCfg = Release|x64 + {7E85ECCF-A72C-4DA4-9E52-884508E80BA1}.Release|x64.Build.0 = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.ActiveCfg = Debug|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|Win32.Build.0 = Debug|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.ActiveCfg = Debug|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Debug|x64.Build.0 = Debug|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|Win32.Build.0 = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.ActiveCfg = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGInstrument|x64.Build.0 = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|Win32.Build.0 = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.ActiveCfg = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.PGUpdate|x64.Build.0 = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.ActiveCfg = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|Win32.Build.0 = Release|Win32 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.ActiveCfg = Release|x64 + {E5B04CC0-EB4C-42AB-B4DC-18EF95F864B0}.Release|x64.Build.0 = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.ActiveCfg = Debug|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|Win32.Build.0 = Debug|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.ActiveCfg = Debug|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Debug|x64.Build.0 = Debug|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|Win32.Build.0 = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.ActiveCfg = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGInstrument|x64.Build.0 = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|Win32.Build.0 = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.ActiveCfg = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.PGUpdate|x64.Build.0 = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.ActiveCfg = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|Win32.Build.0 = Release|Win32 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.ActiveCfg = Release|x64 + {10615B24-73BF-4EFA-93AA-236916321317}.Release|x64.Build.0 = Release|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.ActiveCfg = Debug|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|Win32.Build.0 = Debug|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.ActiveCfg = Debug|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Debug|x64.Build.0 = Debug|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|Win32.ActiveCfg = Release|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|Win32.Build.0 = Release|Win32 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|x64.ActiveCfg = Release|x64 + {0F6EE4A4-C75F-4578-B4B3-2D64F4B9B782}.Release|x64.Build.0 = Release|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|Win32.ActiveCfg = Debug|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|Win32.Build.0 = Debug|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|x64.ActiveCfg = Debug|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Debug|x64.Build.0 = Debug|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|Win32.ActiveCfg = Release|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|Win32.Build.0 = Release|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|x64.ActiveCfg = Release|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGInstrument|x64.Build.0 = Release|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|Win32.ActiveCfg = Release|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|Win32.Build.0 = Release|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|x64.ActiveCfg = Release|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.PGUpdate|x64.Build.0 = Release|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|Win32.ActiveCfg = Release|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|Win32.Build.0 = Release|Win32 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|x64.ActiveCfg = Release|x64 + {B244E787-C445-441C-BDF4-5A4F1A3A1E51}.Release|x64.Build.0 = Release|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|Win32.ActiveCfg = Debug|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|Win32.Build.0 = Debug|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|x64.ActiveCfg = Debug|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.Debug|x64.Build.0 = Debug|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.Release|Win32.ActiveCfg = Release|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.Release|Win32.Build.0 = Release|Win32 + {384C224A-7474-476E-A01B-750EA7DE918C}.Release|x64.ActiveCfg = Release|x64 + {384C224A-7474-476E-A01B-750EA7DE918C}.Release|x64.Build.0 = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.ActiveCfg = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|Win32.Build.0 = Debug|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.ActiveCfg = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Debug|x64.Build.0 = Debug|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|Win32.ActiveCfg = PGInstrument|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|Win32.Build.0 = PGInstrument|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|x64.ActiveCfg = PGInstrument|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGInstrument|x64.Build.0 = PGInstrument|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|Win32.ActiveCfg = PGUpdate|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|Win32.Build.0 = PGUpdate|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|x64.ActiveCfg = PGUpdate|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.PGUpdate|x64.Build.0 = PGUpdate|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.ActiveCfg = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|Win32.Build.0 = Release|Win32 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.ActiveCfg = Release|x64 + {12728250-16EC-4DC6-94D7-E21DD88947F8}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/PCbuild/prepare_ssl.bat b/PCbuild/prepare_ssl.bat index 33f878e616131b..ef8f7ad884c52a 100644 --- a/PCbuild/prepare_ssl.bat +++ b/PCbuild/prepare_ssl.bat @@ -1,12 +1,12 @@ -@echo off -if not defined HOST_PYTHON ( - if "%1" EQU "Debug" ( - shift - set HOST_PYTHON=python_d.exe - if not exist python37_d.dll exit 1 - ) ELSE ( - set HOST_PYTHON=python.exe - if not exist python37.dll exit 1 - ) -) -%HOST_PYTHON% "%~dp0prepare_ssl.py" %1 +@echo off +if not defined HOST_PYTHON ( + if "%1" EQU "Debug" ( + shift + set HOST_PYTHON=python_d.exe + if not exist python37_d.dll exit 1 + ) ELSE ( + set HOST_PYTHON=python.exe + if not exist python37.dll exit 1 + ) +) +%HOST_PYTHON% "%~dp0prepare_ssl.py" %1 diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt index 2afa847e3c2bc2..e92e51c4be02ca 100644 --- a/PCbuild/readme.txt +++ b/PCbuild/readme.txt @@ -1,300 +1,300 @@ -Quick Start Guide ------------------ - -1. Install Microsoft Visual Studio 2015, any edition. -2. Install Subversion, and make sure 'svn.exe' is on your PATH. -3. Run "build.bat -e" to build Python in 32-bit Release configuration. -4. (Optional, but recommended) Run the test suite with "rt.bat -q". - - -Building Python using Microsoft Visual C++ ------------------------------------------- - -This directory is used to build CPython for Microsoft Windows NT version -6.0 or higher (Windows Vista, Windows Server 2008, or later) on 32 and 64 -bit platforms. Using this directory requires an installation of -Microsoft Visual C++ 2015 (MSVC 14.0) of any edition. The specific -requirements are as follows: - -Visual Studio Express 2015 for Desktop -Visual Studio Professional 2015 - Either edition is sufficient for building all configurations except - for Profile Guided Optimization. - The Python build solution pcbuild.sln makes use of Solution Folders, - which this edition does not support. Any time pcbuild.sln is opened - or reloaded by Visual Studio, a warning about Solution Folders will - be displayed, which can be safely dismissed with no impact on your - ability to build Python. - Required for building 64-bit Debug and Release configuration builds -Visual Studio Premium 2015 - Required for building Release configuration builds that make use of - Profile Guided Optimization (PGO), on either platform. - -All you need to do to build is open the solution "pcbuild.sln" in Visual -Studio, select the desired combination of configuration and platform, -then build with "Build Solution". You can also build from the command -line using the "build.bat" script in this directory; see below for -details. The solution is configured to build the projects in the correct -order. - -The solution currently supports two platforms. The Win32 platform is -used to build standard x86-compatible 32-bit binaries, output into the -win32 sub-directory. The x64 platform is used for building 64-bit AMD64 -(aka x86_64 or EM64T) binaries, output into the amd64 sub-directory. -The Itanium (IA-64) platform is no longer supported. - -Four configuration options are supported by the solution: -Debug - Used to build Python with extra debugging capabilities, equivalent - to using ./configure --with-pydebug on UNIX. All binaries built - using this configuration have "_d" added to their name: - python37_d.dll, python_d.exe, parser_d.pyd, and so on. Both the - build and rt (run test) batch files in this directory accept a -d - option for debug builds. If you are building Python to help with - development of CPython, you will most likely use this configuration. -PGInstrument, PGUpdate - Used to build Python in Release configuration using PGO, which - requires Premium Edition of Visual Studio. See the "Profile - Guided Optimization" section below for more information. Build - output from each of these configurations lands in its own - sub-directory of this directory. The official Python releases may - be built using these configurations. -Release - Used to build Python as it is meant to be used in production - settings, though without PGO. - - -Building Python using the build.bat script ----------------------------------------------- - -In this directory you can find build.bat, a script designed to make -building Python on Windows simpler. This script will use the env.bat -script to detect one of Visual Studio 2015, 2013, 2012, or 2010, any of -which may be used to build Python, though only Visual Studio 2015 is -officially supported. - -By default, build.bat will build Python in Release configuration for -the 32-bit Win32 platform. It accepts several arguments to change -this behavior, try `build.bat -h` to learn more. - - -C Runtime ---------- - -Visual Studio 2015 uses version 14 of the C runtime (MSVCRT14). The -executables no longer use the "Side by Side" assemblies used in previous -versions of the compiler. This simplifies distribution of applications. - -The run time libraries are available under the VC/Redist folder of your -Visual Studio distribution. For more info, see the Readme in the -VC/Redist folder. - - -Sub-Projects ------------- - -The CPython project is split up into several smaller sub-projects which -are managed by the pcbuild.sln solution file. Each sub-project is -represented by a .vcxproj and a .vcxproj.filters file starting with the -name of the sub-project. These sub-projects fall into a few general -categories: - -The following sub-projects represent the bare minimum required to build -a functioning CPython interpreter. If nothing else builds but these, -you'll have a very limited but usable python.exe: -pythoncore - .dll and .lib -python - .exe - -These sub-projects provide extra executables that are useful for running -CPython in different ways: -pythonw - pythonw.exe, a variant of python.exe that doesn't open a Command - Prompt window -pylauncher - py.exe, the Python Launcher for Windows, see - http://docs.python.org/3/using/windows.html#launcher -pywlauncher - pyw.exe, a variant of py.exe that doesn't open a Command Prompt - window -_testembed - _testembed.exe, a small program that embeds Python for testing - purposes, used by test_capi.py - -These are miscellaneous sub-projects that don't really fit the other -categories: -_freeze_importlib - _freeze_importlib.exe, used to regenerate Python\importlib.h after - changes have been made to Lib\importlib\_bootstrap.py -python3dll - python3.dll, the PEP 384 Stable ABI dll -xxlimited - builds an example module that makes use of the PEP 384 Stable ABI, - see Modules\xxlimited.c - -The following sub-projects are for individual modules of the standard -library which are implemented in C; each one builds a DLL (renamed to -.pyd) of the same name as the project: -_ctypes -_ctypes_test -_decimal -_elementtree -_hashlib -_msi -_multiprocessing -_overlapped -_socket -_testcapi -_testbuffer -_testimportmultiple -pyexpat -select -unicodedata -winsound - -The following Python-controlled sub-projects wrap external projects. -Note that these external libraries are not necessary for a working -interpreter, but they do implement several major features. See the -"Getting External Sources" section below for additional information -about getting the source for building these libraries. The sub-projects -are: -_bz2 - Python wrapper for version 1.0.6 of the libbzip2 compression library - Homepage: - http://www.bzip.org/ -_lzma - Python wrapper for the liblzma compression library, using pre-built - binaries of XZ Utils version 5.0.5 - Homepage: - http://tukaani.org/xz/ -_ssl - Python wrapper for version 1.0.2k of the OpenSSL secure sockets - library, which is built by ssl.vcxproj - Homepage: - http://www.openssl.org/ - - Building OpenSSL requires nasm.exe (the Netwide Assembler), version - 2.10 or newer from - http://www.nasm.us/ - to be somewhere on your PATH. More recent versions of OpenSSL may - need a later version of NASM. If OpenSSL's self tests don't pass, - you should first try to update NASM and do a full rebuild of - OpenSSL. If you use the PCbuild\get_externals.bat method - for getting sources, it also downloads a version of NASM which the - libeay/ssleay sub-projects use. - - The libeay/ssleay sub-projects expect your OpenSSL sources to have - already been configured and be ready to build. If you get your sources - from svn.python.org as suggested in the "Getting External Sources" - section below, the OpenSSL source will already be ready to go. If - you want to build a different version, you will need to run - - PCbuild\prepare_ssl.py path\to\openssl-source-dir - - That script will prepare your OpenSSL sources in the same way that - those available on svn.python.org have been prepared. Note that - Perl must be installed and available on your PATH to configure - OpenSSL. ActivePerl is recommended and is available from - http://www.activestate.com/activeperl/ - - The libeay and ssleay sub-projects will build the modules of OpenSSL - required by _ssl and _hashlib and may need to be manually updated when - upgrading to a newer version of OpenSSL or when adding new - functionality to _ssl or _hashlib. They will not clean up their output - with the normal Clean target; CleanAll should be used instead. -_sqlite3 - Wraps SQLite 3.14.2.0, which is itself built by sqlite3.vcxproj - Homepage: - http://www.sqlite.org/ -_tkinter - Wraps version 8.6.6 of the Tk windowing system. - Homepage: - http://www.tcl.tk/ - - Tkinter's dependencies are built by the tcl.vcxproj and tk.vcxproj - projects. The tix.vcxproj project also builds the Tix extended - widget set for use with Tkinter. - - Those three projects install their respective components in a - directory alongside the source directories called "tcltk" on - Win32 and "tcltk64" on x64. They also copy the Tcl and Tk DLLs - into the current output directory, which should ensure that Tkinter - is able to load Tcl/Tk without having to change your PATH. - - The tcl, tk, and tix sub-projects do not clean their builds with - the normal Clean target; if you need to rebuild, you should use the - CleanAll target or manually delete their builds. - - -Getting External Sources ------------------------- - -The last category of sub-projects listed above wrap external projects -Python doesn't control, and as such a little more work is required in -order to download the relevant source files for each project before they -can be built. However, a simple script is provided to make this as -painless as possible, called "get_externals.bat" and located in this -directory. This script extracts all the external sub-projects from - http://svn.python.org/projects/external -via Subversion (so you'll need svn.exe on your PATH) and places them -in ..\externals (relative to this directory). - -It is also possible to download sources from each project's homepage, -though you may have to change folder names or pass the names to MSBuild -as the values of certain properties in order for the build solution to -find them. This is an advanced topic and not necessarily fully -supported. - -The get_externals.bat script is called automatically by build.bat when -you pass the '-e' option to it. - - -Profile Guided Optimization ---------------------------- - -The solution has two configurations for PGO. The PGInstrument -configuration must be built first. The PGInstrument binaries are linked -against a profiling library and contain extra debug information. The -PGUpdate configuration takes the profiling data and generates optimized -binaries. - -The build_pgo.bat script automates the creation of optimized binaries. -It creates the PGI files, runs the unit test suite or PyBench with the -PGI python, and finally creates the optimized files. - -See - http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.140).aspx -for more on this topic. - - -Static library --------------- - -The solution has no configuration for static libraries. However it is -easy to build a static library instead of a DLL. You simply have to set -the "Configuration Type" to "Static Library (.lib)" and alter the -preprocessor macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may -also have to change the "Runtime Library" from "Multi-threaded DLL -(/MD)" to "Multi-threaded (/MT)". - - -Visual Studio properties ------------------------- - -The PCbuild solution makes use of Visual Studio property files (*.props) -to simplify each project. The properties can be viewed in the Property -Manager (View -> Other Windows -> Property Manager) but should be -carefully modified by hand. - -The property files used are: - * python (versions, directories and build names) - * pyproject (base settings for all projects) - * openssl (used by libeay and ssleay projects) - * tcltk (used by _tkinter, tcl, tk and tix projects) - -The pyproject property file defines all of the build settings for each -project, with some projects overriding certain specific values. The GUI -doesn't always reflect the correct settings and may confuse the user -with false information, especially for settings that automatically adapt -for diffirent configurations. +Quick Start Guide +----------------- + +1. Install Microsoft Visual Studio 2015, any edition. +2. Install Subversion, and make sure 'svn.exe' is on your PATH. +3. Run "build.bat -e" to build Python in 32-bit Release configuration. +4. (Optional, but recommended) Run the test suite with "rt.bat -q". + + +Building Python using Microsoft Visual C++ +------------------------------------------ + +This directory is used to build CPython for Microsoft Windows NT version +6.0 or higher (Windows Vista, Windows Server 2008, or later) on 32 and 64 +bit platforms. Using this directory requires an installation of +Microsoft Visual C++ 2015 (MSVC 14.0) of any edition. The specific +requirements are as follows: + +Visual Studio Express 2015 for Desktop +Visual Studio Professional 2015 + Either edition is sufficient for building all configurations except + for Profile Guided Optimization. + The Python build solution pcbuild.sln makes use of Solution Folders, + which this edition does not support. Any time pcbuild.sln is opened + or reloaded by Visual Studio, a warning about Solution Folders will + be displayed, which can be safely dismissed with no impact on your + ability to build Python. + Required for building 64-bit Debug and Release configuration builds +Visual Studio Premium 2015 + Required for building Release configuration builds that make use of + Profile Guided Optimization (PGO), on either platform. + +All you need to do to build is open the solution "pcbuild.sln" in Visual +Studio, select the desired combination of configuration and platform, +then build with "Build Solution". You can also build from the command +line using the "build.bat" script in this directory; see below for +details. The solution is configured to build the projects in the correct +order. + +The solution currently supports two platforms. The Win32 platform is +used to build standard x86-compatible 32-bit binaries, output into the +win32 sub-directory. The x64 platform is used for building 64-bit AMD64 +(aka x86_64 or EM64T) binaries, output into the amd64 sub-directory. +The Itanium (IA-64) platform is no longer supported. + +Four configuration options are supported by the solution: +Debug + Used to build Python with extra debugging capabilities, equivalent + to using ./configure --with-pydebug on UNIX. All binaries built + using this configuration have "_d" added to their name: + python37_d.dll, python_d.exe, parser_d.pyd, and so on. Both the + build and rt (run test) batch files in this directory accept a -d + option for debug builds. If you are building Python to help with + development of CPython, you will most likely use this configuration. +PGInstrument, PGUpdate + Used to build Python in Release configuration using PGO, which + requires Premium Edition of Visual Studio. See the "Profile + Guided Optimization" section below for more information. Build + output from each of these configurations lands in its own + sub-directory of this directory. The official Python releases may + be built using these configurations. +Release + Used to build Python as it is meant to be used in production + settings, though without PGO. + + +Building Python using the build.bat script +---------------------------------------------- + +In this directory you can find build.bat, a script designed to make +building Python on Windows simpler. This script will use the env.bat +script to detect one of Visual Studio 2015, 2013, 2012, or 2010, any of +which may be used to build Python, though only Visual Studio 2015 is +officially supported. + +By default, build.bat will build Python in Release configuration for +the 32-bit Win32 platform. It accepts several arguments to change +this behavior, try `build.bat -h` to learn more. + + +C Runtime +--------- + +Visual Studio 2015 uses version 14 of the C runtime (MSVCRT14). The +executables no longer use the "Side by Side" assemblies used in previous +versions of the compiler. This simplifies distribution of applications. + +The run time libraries are available under the VC/Redist folder of your +Visual Studio distribution. For more info, see the Readme in the +VC/Redist folder. + + +Sub-Projects +------------ + +The CPython project is split up into several smaller sub-projects which +are managed by the pcbuild.sln solution file. Each sub-project is +represented by a .vcxproj and a .vcxproj.filters file starting with the +name of the sub-project. These sub-projects fall into a few general +categories: + +The following sub-projects represent the bare minimum required to build +a functioning CPython interpreter. If nothing else builds but these, +you'll have a very limited but usable python.exe: +pythoncore + .dll and .lib +python + .exe + +These sub-projects provide extra executables that are useful for running +CPython in different ways: +pythonw + pythonw.exe, a variant of python.exe that doesn't open a Command + Prompt window +pylauncher + py.exe, the Python Launcher for Windows, see + http://docs.python.org/3/using/windows.html#launcher +pywlauncher + pyw.exe, a variant of py.exe that doesn't open a Command Prompt + window +_testembed + _testembed.exe, a small program that embeds Python for testing + purposes, used by test_capi.py + +These are miscellaneous sub-projects that don't really fit the other +categories: +_freeze_importlib + _freeze_importlib.exe, used to regenerate Python\importlib.h after + changes have been made to Lib\importlib\_bootstrap.py +python3dll + python3.dll, the PEP 384 Stable ABI dll +xxlimited + builds an example module that makes use of the PEP 384 Stable ABI, + see Modules\xxlimited.c + +The following sub-projects are for individual modules of the standard +library which are implemented in C; each one builds a DLL (renamed to +.pyd) of the same name as the project: +_ctypes +_ctypes_test +_decimal +_elementtree +_hashlib +_msi +_multiprocessing +_overlapped +_socket +_testcapi +_testbuffer +_testimportmultiple +pyexpat +select +unicodedata +winsound + +The following Python-controlled sub-projects wrap external projects. +Note that these external libraries are not necessary for a working +interpreter, but they do implement several major features. See the +"Getting External Sources" section below for additional information +about getting the source for building these libraries. The sub-projects +are: +_bz2 + Python wrapper for version 1.0.6 of the libbzip2 compression library + Homepage: + http://www.bzip.org/ +_lzma + Python wrapper for the liblzma compression library, using pre-built + binaries of XZ Utils version 5.0.5 + Homepage: + http://tukaani.org/xz/ +_ssl + Python wrapper for version 1.0.2k of the OpenSSL secure sockets + library, which is built by ssl.vcxproj + Homepage: + http://www.openssl.org/ + + Building OpenSSL requires nasm.exe (the Netwide Assembler), version + 2.10 or newer from + http://www.nasm.us/ + to be somewhere on your PATH. More recent versions of OpenSSL may + need a later version of NASM. If OpenSSL's self tests don't pass, + you should first try to update NASM and do a full rebuild of + OpenSSL. If you use the PCbuild\get_externals.bat method + for getting sources, it also downloads a version of NASM which the + libeay/ssleay sub-projects use. + + The libeay/ssleay sub-projects expect your OpenSSL sources to have + already been configured and be ready to build. If you get your sources + from svn.python.org as suggested in the "Getting External Sources" + section below, the OpenSSL source will already be ready to go. If + you want to build a different version, you will need to run + + PCbuild\prepare_ssl.py path\to\openssl-source-dir + + That script will prepare your OpenSSL sources in the same way that + those available on svn.python.org have been prepared. Note that + Perl must be installed and available on your PATH to configure + OpenSSL. ActivePerl is recommended and is available from + http://www.activestate.com/activeperl/ + + The libeay and ssleay sub-projects will build the modules of OpenSSL + required by _ssl and _hashlib and may need to be manually updated when + upgrading to a newer version of OpenSSL or when adding new + functionality to _ssl or _hashlib. They will not clean up their output + with the normal Clean target; CleanAll should be used instead. +_sqlite3 + Wraps SQLite 3.14.2.0, which is itself built by sqlite3.vcxproj + Homepage: + http://www.sqlite.org/ +_tkinter + Wraps version 8.6.6 of the Tk windowing system. + Homepage: + http://www.tcl.tk/ + + Tkinter's dependencies are built by the tcl.vcxproj and tk.vcxproj + projects. The tix.vcxproj project also builds the Tix extended + widget set for use with Tkinter. + + Those three projects install their respective components in a + directory alongside the source directories called "tcltk" on + Win32 and "tcltk64" on x64. They also copy the Tcl and Tk DLLs + into the current output directory, which should ensure that Tkinter + is able to load Tcl/Tk without having to change your PATH. + + The tcl, tk, and tix sub-projects do not clean their builds with + the normal Clean target; if you need to rebuild, you should use the + CleanAll target or manually delete their builds. + + +Getting External Sources +------------------------ + +The last category of sub-projects listed above wrap external projects +Python doesn't control, and as such a little more work is required in +order to download the relevant source files for each project before they +can be built. However, a simple script is provided to make this as +painless as possible, called "get_externals.bat" and located in this +directory. This script extracts all the external sub-projects from + http://svn.python.org/projects/external +via Subversion (so you'll need svn.exe on your PATH) and places them +in ..\externals (relative to this directory). + +It is also possible to download sources from each project's homepage, +though you may have to change folder names or pass the names to MSBuild +as the values of certain properties in order for the build solution to +find them. This is an advanced topic and not necessarily fully +supported. + +The get_externals.bat script is called automatically by build.bat when +you pass the '-e' option to it. + + +Profile Guided Optimization +--------------------------- + +The solution has two configurations for PGO. The PGInstrument +configuration must be built first. The PGInstrument binaries are linked +against a profiling library and contain extra debug information. The +PGUpdate configuration takes the profiling data and generates optimized +binaries. + +The build_pgo.bat script automates the creation of optimized binaries. +It creates the PGI files, runs the unit test suite or PyBench with the +PGI python, and finally creates the optimized files. + +See + http://msdn.microsoft.com/en-us/library/e7k32f4k(VS.140).aspx +for more on this topic. + + +Static library +-------------- + +The solution has no configuration for static libraries. However it is +easy to build a static library instead of a DLL. You simply have to set +the "Configuration Type" to "Static Library (.lib)" and alter the +preprocessor macro "Py_ENABLE_SHARED" to "Py_NO_ENABLE_SHARED". You may +also have to change the "Runtime Library" from "Multi-threaded DLL +(/MD)" to "Multi-threaded (/MT)". + + +Visual Studio properties +------------------------ + +The PCbuild solution makes use of Visual Studio property files (*.props) +to simplify each project. The properties can be viewed in the Property +Manager (View -> Other Windows -> Property Manager) but should be +carefully modified by hand. + +The property files used are: + * python (versions, directories and build names) + * pyproject (base settings for all projects) + * openssl (used by libeay and ssleay projects) + * tcltk (used by _tkinter, tcl, tk and tix projects) + +The pyproject property file defines all of the build settings for each +project, with some projects overriding certain specific values. The GUI +doesn't always reflect the correct settings and may confuse the user +with false information, especially for settings that automatically adapt +for diffirent configurations. diff --git a/PCbuild/rt.bat b/PCbuild/rt.bat index b4b9bb1780c64b..575cdc858fdaf4 100644 --- a/PCbuild/rt.bat +++ b/PCbuild/rt.bat @@ -1,63 +1,63 @@ -@echo off -rem Run Tests. Run the regression test suite. -rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args -rem -d Run Debug build (python_d.exe). Else release build. -rem -O Run python.exe or python_d.exe (see -d) with -O. -rem -q "quick" -- normally the tests are run twice, the first time -rem after deleting all the .pyc files reachable from Lib/. -rem -q runs the tests just once, and without deleting .pyc files. -rem -x64 Run the 64-bit build of python (or python_d if -d was specified) -rem from the 'amd64' dir instead of the 32-bit build in this dir. -rem All leading instances of these switches are shifted off, and -rem whatever remains (up to 9 arguments) is passed to regrtest.py. -rem For example, -rem rt -O -d -x test_thread -rem runs -rem python_d -O ../lib/test/regrtest.py -x test_thread -rem twice, and -rem rt -q -g test_binascii -rem runs -rem python_d ../lib/test/regrtest.py -g test_binascii -rem to generate the expected-output file for binascii quickly. -rem -rem Confusing: if you want to pass a comma-separated list, like -rem -u network,largefile -rem then you have to quote it on the rt line, like -rem rt -u "network,largefile" - -setlocal - -set pcbuild=%~dp0 -set prefix=%pcbuild%win32\ -set suffix= -set qmode= -set dashO= -set regrtestargs= - -:CheckOpts -if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts -if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts -if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts -if "%1"=="-x64" (set prefix=%pcbuild%amd64\) & shift & goto CheckOpts -if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & shift & goto CheckOpts - -set exe=%prefix%python%suffix%.exe -set cmd="%exe%" %dashO% -u -Wd -E -bb -m test %regrtestargs% -if defined qmode goto Qmode - -echo Deleting .pyc files ... -"%exe%" "%pcbuild%rmpyc.py" - -echo Cleaning _pth files ... -if exist %prefix%*._pth del %prefix%*._pth - -echo on -%cmd% -@echo off - -echo About to run again without deleting .pyc first: -pause - -:Qmode -echo on -%cmd% +@echo off +rem Run Tests. Run the regression test suite. +rem Usage: rt [-d] [-O] [-q] [-x64] regrtest_args +rem -d Run Debug build (python_d.exe). Else release build. +rem -O Run python.exe or python_d.exe (see -d) with -O. +rem -q "quick" -- normally the tests are run twice, the first time +rem after deleting all the .pyc files reachable from Lib/. +rem -q runs the tests just once, and without deleting .pyc files. +rem -x64 Run the 64-bit build of python (or python_d if -d was specified) +rem from the 'amd64' dir instead of the 32-bit build in this dir. +rem All leading instances of these switches are shifted off, and +rem whatever remains (up to 9 arguments) is passed to regrtest.py. +rem For example, +rem rt -O -d -x test_thread +rem runs +rem python_d -O ../lib/test/regrtest.py -x test_thread +rem twice, and +rem rt -q -g test_binascii +rem runs +rem python_d ../lib/test/regrtest.py -g test_binascii +rem to generate the expected-output file for binascii quickly. +rem +rem Confusing: if you want to pass a comma-separated list, like +rem -u network,largefile +rem then you have to quote it on the rt line, like +rem rt -u "network,largefile" + +setlocal + +set pcbuild=%~dp0 +set prefix=%pcbuild%win32\ +set suffix= +set qmode= +set dashO= +set regrtestargs= + +:CheckOpts +if "%1"=="-O" (set dashO=-O) & shift & goto CheckOpts +if "%1"=="-q" (set qmode=yes) & shift & goto CheckOpts +if "%1"=="-d" (set suffix=_d) & shift & goto CheckOpts +if "%1"=="-x64" (set prefix=%pcbuild%amd64\) & shift & goto CheckOpts +if NOT "%1"=="" (set regrtestargs=%regrtestargs% %1) & shift & goto CheckOpts + +set exe=%prefix%python%suffix%.exe +set cmd="%exe%" %dashO% -u -Wd -E -bb -m test %regrtestargs% +if defined qmode goto Qmode + +echo Deleting .pyc files ... +"%exe%" "%pcbuild%rmpyc.py" + +echo Cleaning _pth files ... +if exist %prefix%*._pth del %prefix%*._pth + +echo on +%cmd% +@echo off + +echo About to run again without deleting .pyc first: +pause + +:Qmode +echo on +%cmd% diff --git a/Programs/python.c b/Programs/python.c index a7afbc774b3a55..03f8295045cfc6 100644 --- a/Programs/python.c +++ b/Programs/python.c @@ -15,6 +15,21 @@ wmain(int argc, wchar_t **argv) } #else +/* Access private pylifecycle helper API to better handle the legacy C locale + * + * The legacy C locale assumes ASCII as the default text encoding, which + * causes problems not only for the CPython runtime, but also other + * components like GNU readline. + * + * Accordingly, when the CLI detects it, it attempts to coerce it to a + * more capable UTF-8 based alternative. + * + * See the documentation of the PYTHONCOERCECLOCALE setting for more details. + * + */ +extern int _Py_LegacyLocaleDetected(void); +extern void _Py_CoerceLegacyLocale(void); + int main(int argc, char **argv) { @@ -25,7 +40,11 @@ main(int argc, char **argv) char *oldloc; /* Force malloc() allocator to bootstrap Python */ +#ifdef Py_DEBUG + (void)_PyMem_SetupAllocators("malloc_debug"); +# else (void)_PyMem_SetupAllocators("malloc"); +# endif argv_copy = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1)); argv_copy2 = (wchar_t **)PyMem_RawMalloc(sizeof(wchar_t*) * (argc+1)); @@ -49,7 +68,21 @@ main(int argc, char **argv) return 1; } +#ifdef __ANDROID__ + /* Passing "" to setlocale() on Android requests the C locale rather + * than checking environment variables, so request C.UTF-8 explicitly + */ + setlocale(LC_ALL, "C.UTF-8"); +#else + /* Reconfigure the locale to the default for this process */ setlocale(LC_ALL, ""); +#endif + + if (_Py_LegacyLocaleDetected()) { + _Py_CoerceLegacyLocale(); + } + + /* Convert from char to wchar_t based on the locale settings */ for (i = 0; i < argc; i++) { argv_copy[i] = Py_DecodeLocale(argv[i], NULL); if (!argv_copy[i]) { @@ -70,7 +103,11 @@ main(int argc, char **argv) /* Force again malloc() allocator to release memory blocks allocated before Py_Main() */ +#ifdef Py_DEBUG + (void)_PyMem_SetupAllocators("malloc_debug"); +# else (void)_PyMem_SetupAllocators("malloc"); +# endif for (i = 0; i < argc; i++) { PyMem_RawFree(argv_copy2[i]); diff --git a/Python/compile.c b/Python/compile.c index dad7404a85f3f4..280ddc39e317b8 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -1999,6 +1999,131 @@ compiler_class(struct compiler *c, stmt_ty s) return 1; } +static int +cmpop(cmpop_ty op) +{ + switch (op) { + case Eq: + return PyCmp_EQ; + case NotEq: + return PyCmp_NE; + case Lt: + return PyCmp_LT; + case LtE: + return PyCmp_LE; + case Gt: + return PyCmp_GT; + case GtE: + return PyCmp_GE; + case Is: + return PyCmp_IS; + case IsNot: + return PyCmp_IS_NOT; + case In: + return PyCmp_IN; + case NotIn: + return PyCmp_NOT_IN; + default: + return PyCmp_BAD; + } +} + +static int +compiler_jump_if(struct compiler *c, expr_ty e, basicblock *next, int cond) +{ + switch (e->kind) { + case UnaryOp_kind: + if (e->v.UnaryOp.op == Not) + return compiler_jump_if(c, e->v.UnaryOp.operand, next, !cond); + /* fallback to general implementation */ + break; + case BoolOp_kind: { + asdl_seq *s = e->v.BoolOp.values; + Py_ssize_t i, n = asdl_seq_LEN(s) - 1; + assert(n >= 0); + int cond2 = e->v.BoolOp.op == Or; + basicblock *next2 = next; + if (!cond2 != !cond) { + next2 = compiler_new_block(c); + if (next2 == NULL) + return 0; + } + for (i = 0; i < n; ++i) { + if (!compiler_jump_if(c, (expr_ty)asdl_seq_GET(s, i), next2, cond2)) + return 0; + } + if (!compiler_jump_if(c, (expr_ty)asdl_seq_GET(s, n), next, cond)) + return 0; + if (next2 != next) + compiler_use_next_block(c, next2); + return 1; + } + case IfExp_kind: { + basicblock *end, *next2; + end = compiler_new_block(c); + if (end == NULL) + return 0; + next2 = compiler_new_block(c); + if (next2 == NULL) + return 0; + if (!compiler_jump_if(c, e->v.IfExp.test, next2, 0)) + return 0; + if (!compiler_jump_if(c, e->v.IfExp.body, next, cond)) + return 0; + ADDOP_JREL(c, JUMP_FORWARD, end); + compiler_use_next_block(c, next2); + if (!compiler_jump_if(c, e->v.IfExp.orelse, next, cond)) + return 0; + compiler_use_next_block(c, end); + return 1; + } + case Compare_kind: { + Py_ssize_t i, n = asdl_seq_LEN(e->v.Compare.ops) - 1; + if (n > 0) { + basicblock *cleanup = compiler_new_block(c); + if (cleanup == NULL) + return 0; + VISIT(c, expr, e->v.Compare.left); + for (i = 0; i < n; i++) { + VISIT(c, expr, + (expr_ty)asdl_seq_GET(e->v.Compare.comparators, i)); + ADDOP(c, DUP_TOP); + ADDOP(c, ROT_THREE); + ADDOP_I(c, COMPARE_OP, + cmpop((cmpop_ty)(asdl_seq_GET(e->v.Compare.ops, i)))); + ADDOP_JABS(c, POP_JUMP_IF_FALSE, cleanup); + NEXT_BLOCK(c); + } + VISIT(c, expr, (expr_ty)asdl_seq_GET(e->v.Compare.comparators, n)); + ADDOP_I(c, COMPARE_OP, + cmpop((cmpop_ty)(asdl_seq_GET(e->v.Compare.ops, n)))); + ADDOP_JABS(c, cond ? POP_JUMP_IF_TRUE : POP_JUMP_IF_FALSE, next); + basicblock *end = compiler_new_block(c); + if (end == NULL) + return 0; + ADDOP_JREL(c, JUMP_FORWARD, end); + compiler_use_next_block(c, cleanup); + ADDOP(c, POP_TOP); + if (!cond) { + ADDOP_JREL(c, JUMP_FORWARD, next); + } + compiler_use_next_block(c, end); + return 1; + } + /* fallback to general implementation */ + break; + } + default: + /* fallback to general implementation */ + break; + } + + /* general implementation */ + VISIT(c, expr, e); + ADDOP_JABS(c, cond ? POP_JUMP_IF_TRUE : POP_JUMP_IF_FALSE, next); + return 1; +} + static int compiler_ifexp(struct compiler *c, expr_ty e) { @@ -2011,8 +2136,8 @@ compiler_ifexp(struct compiler *c, expr_ty e) next = compiler_new_block(c); if (next == NULL) return 0; - VISIT(c, expr, e->v.IfExp.test); - ADDOP_JABS(c, POP_JUMP_IF_FALSE, next); + if (!compiler_jump_if(c, e->v.IfExp.test, next, 0)) + return 0; VISIT(c, expr, e->v.IfExp.body); ADDOP_JREL(c, JUMP_FORWARD, end); compiler_use_next_block(c, next); @@ -2101,8 +2226,8 @@ compiler_if(struct compiler *c, stmt_ty s) } else next = end; - VISIT(c, expr, s->v.If.test); - ADDOP_JABS(c, POP_JUMP_IF_FALSE, next); + if (!compiler_jump_if(c, s->v.If.test, next, 0)) + return 0; VISIT_SEQ(c, stmt, s->v.If.body); if (asdl_seq_LEN(s->v.If.orelse)) { ADDOP_JREL(c, JUMP_FORWARD, end); @@ -2261,8 +2386,8 @@ compiler_while(struct compiler *c, stmt_ty s) if (!compiler_push_fblock(c, LOOP, loop)) return 0; if (constant == -1) { - VISIT(c, expr, s->v.While.test); - ADDOP_JABS(c, POP_JUMP_IF_FALSE, anchor); + if (!compiler_jump_if(c, s->v.While.test, anchor, 0)) + return 0; } VISIT_SEQ(c, stmt, s->v.While.body); ADDOP_JABS(c, JUMP_ABSOLUTE, loop); @@ -2721,11 +2846,11 @@ compiler_assert(struct compiler *c, stmt_ty s) } Py_DECREF(msg); } - VISIT(c, expr, s->v.Assert.test); end = compiler_new_block(c); if (end == NULL) return 0; - ADDOP_JABS(c, POP_JUMP_IF_TRUE, end); + if (!compiler_jump_if(c, s->v.Assert.test, end, 1)) + return 0; ADDOP_O(c, LOAD_GLOBAL, assertion_error, names); if (s->v.Assert.msg) { VISIT(c, expr, s->v.Assert.msg); @@ -2909,35 +3034,6 @@ binop(struct compiler *c, operator_ty op) } } -static int -cmpop(cmpop_ty op) -{ - switch (op) { - case Eq: - return PyCmp_EQ; - case NotEq: - return PyCmp_NE; - case Lt: - return PyCmp_LT; - case LtE: - return PyCmp_LE; - case Gt: - return PyCmp_GT; - case GtE: - return PyCmp_GE; - case Is: - return PyCmp_IS; - case IsNot: - return PyCmp_IS_NOT; - case In: - return PyCmp_IN; - case NotIn: - return PyCmp_NOT_IN; - default: - return PyCmp_BAD; - } -} - static int inplace_binop(struct compiler *c, operator_ty op) { @@ -3676,8 +3772,8 @@ compiler_sync_comprehension_generator(struct compiler *c, n = asdl_seq_LEN(gen->ifs); for (i = 0; i < n; i++) { expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i); - VISIT(c, expr, e); - ADDOP_JABS(c, POP_JUMP_IF_FALSE, if_cleanup); + if (!compiler_jump_if(c, e, if_cleanup, 0)) + return 0; NEXT_BLOCK(c); } @@ -3807,8 +3903,8 @@ compiler_async_comprehension_generator(struct compiler *c, n = asdl_seq_LEN(gen->ifs); for (i = 0; i < n; i++) { expr_ty e = (expr_ty)asdl_seq_GET(gen->ifs, i); - VISIT(c, expr, e); - ADDOP_JABS(c, POP_JUMP_IF_FALSE, if_cleanup); + if (!compiler_jump_if(c, e, if_cleanup, 0)) + return 0; NEXT_BLOCK(c); } diff --git a/Python/importlib.h b/Python/importlib.h index eda1dc77b877e8..bd4d0038f612f4 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -1411,422 +1411,422 @@ const unsigned char _Py_M__importlib[] = { 102,105,110,100,95,115,112,101,99,95,108,101,103,97,99,121, 84,3,0,0,115,8,0,0,0,0,3,12,1,8,1,4, 1,114,165,0,0,0,99,3,0,0,0,0,0,0,0,10, - 0,0,0,27,0,0,0,67,0,0,0,115,242,0,0,0, + 0,0,0,27,0,0,0,67,0,0,0,115,240,0,0,0, 116,0,106,1,125,3,124,3,100,1,107,8,114,22,116,2, 100,2,131,1,130,1,124,3,115,38,116,3,160,4,100,3, 116,5,161,2,1,0,124,0,116,0,106,6,107,6,125,4, - 120,188,124,3,68,0,93,176,125,5,116,7,131,0,143,72, + 120,186,124,3,68,0,93,174,125,5,116,7,131,0,143,72, 1,0,121,10,124,5,106,8,125,6,87,0,110,42,4,0, 116,9,107,10,114,118,1,0,1,0,1,0,116,10,124,5, 124,0,124,1,131,3,125,7,124,7,100,1,107,8,114,114, 119,54,89,0,110,14,88,0,124,6,124,0,124,1,124,2, 131,3,125,7,87,0,100,1,81,0,82,0,88,0,124,7, - 100,1,107,9,114,54,124,4,12,0,114,226,124,0,116,0, - 106,6,107,6,114,226,116,0,106,6,124,0,25,0,125,8, - 121,10,124,8,106,11,125,9,87,0,110,20,4,0,116,9, - 107,10,114,206,1,0,1,0,1,0,124,7,83,0,88,0, - 124,9,100,1,107,8,114,220,124,7,83,0,124,9,83,0, - 113,54,124,7,83,0,113,54,87,0,100,1,83,0,100,1, - 83,0,41,4,122,21,70,105,110,100,32,97,32,109,111,100, - 117,108,101,39,115,32,115,112,101,99,46,78,122,53,115,121, - 115,46,109,101,116,97,95,112,97,116,104,32,105,115,32,78, - 111,110,101,44,32,80,121,116,104,111,110,32,105,115,32,108, - 105,107,101,108,121,32,115,104,117,116,116,105,110,103,32,100, - 111,119,110,122,22,115,121,115,46,109,101,116,97,95,112,97, - 116,104,32,105,115,32,101,109,112,116,121,41,12,114,14,0, - 0,0,218,9,109,101,116,97,95,112,97,116,104,114,70,0, - 0,0,218,9,95,119,97,114,110,105,110,103,115,218,4,119, - 97,114,110,218,13,73,109,112,111,114,116,87,97,114,110,105, - 110,103,114,79,0,0,0,114,157,0,0,0,114,146,0,0, - 0,114,90,0,0,0,114,165,0,0,0,114,89,0,0,0, - 41,10,114,15,0,0,0,114,144,0,0,0,114,145,0,0, - 0,114,166,0,0,0,90,9,105,115,95,114,101,108,111,97, - 100,114,164,0,0,0,114,146,0,0,0,114,82,0,0,0, - 114,83,0,0,0,114,89,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,10,95,102,105,110,100, - 95,115,112,101,99,93,3,0,0,115,54,0,0,0,0,2, - 6,1,8,2,8,3,4,1,12,5,10,1,10,1,8,1, - 2,1,10,1,14,1,12,1,8,1,8,2,22,1,8,2, - 16,1,10,1,2,1,10,1,14,4,6,2,8,1,4,2, - 6,2,8,2,114,170,0,0,0,99,3,0,0,0,0,0, - 0,0,4,0,0,0,5,0,0,0,67,0,0,0,115,140, - 0,0,0,116,0,124,0,116,1,131,2,115,28,116,2,100, - 1,160,3,116,4,124,0,131,1,161,1,131,1,130,1,124, - 2,100,2,107,0,114,44,116,5,100,3,131,1,130,1,124, - 2,100,2,107,4,114,114,116,0,124,1,116,1,131,2,115, - 72,116,2,100,4,131,1,130,1,110,42,124,1,115,86,116, - 6,100,5,131,1,130,1,110,28,124,1,116,7,106,8,107, - 7,114,114,100,6,125,3,116,9,124,3,160,3,124,1,161, - 1,131,1,130,1,124,0,12,0,114,136,124,2,100,2,107, - 2,114,136,116,5,100,7,131,1,130,1,100,8,83,0,41, - 9,122,28,86,101,114,105,102,121,32,97,114,103,117,109,101, - 110,116,115,32,97,114,101,32,34,115,97,110,101,34,46,122, - 31,109,111,100,117,108,101,32,110,97,109,101,32,109,117,115, - 116,32,98,101,32,115,116,114,44,32,110,111,116,32,123,125, - 114,19,0,0,0,122,18,108,101,118,101,108,32,109,117,115, - 116,32,98,101,32,62,61,32,48,122,31,95,95,112,97,99, - 107,97,103,101,95,95,32,110,111,116,32,115,101,116,32,116, - 111,32,97,32,115,116,114,105,110,103,122,54,97,116,116,101, - 109,112,116,101,100,32,114,101,108,97,116,105,118,101,32,105, - 109,112,111,114,116,32,119,105,116,104,32,110,111,32,107,110, - 111,119,110,32,112,97,114,101,110,116,32,112,97,99,107,97, - 103,101,122,61,80,97,114,101,110,116,32,109,111,100,117,108, - 101,32,123,33,114,125,32,110,111,116,32,108,111,97,100,101, - 100,44,32,99,97,110,110,111,116,32,112,101,114,102,111,114, - 109,32,114,101,108,97,116,105,118,101,32,105,109,112,111,114, - 116,122,17,69,109,112,116,121,32,109,111,100,117,108,101,32, - 110,97,109,101,78,41,10,218,10,105,115,105,110,115,116,97, - 110,99,101,218,3,115,116,114,218,9,84,121,112,101,69,114, - 114,111,114,114,38,0,0,0,114,13,0,0,0,114,160,0, - 0,0,114,70,0,0,0,114,14,0,0,0,114,79,0,0, - 0,218,11,83,121,115,116,101,109,69,114,114,111,114,41,4, - 114,15,0,0,0,114,161,0,0,0,114,162,0,0,0,114, - 139,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,218,13,95,115,97,110,105,116,121,95,99,104,101, - 99,107,140,3,0,0,115,28,0,0,0,0,2,10,1,18, - 1,8,1,8,1,8,1,10,1,10,1,4,1,10,2,10, - 1,4,2,14,1,14,1,114,175,0,0,0,122,16,78,111, - 32,109,111,100,117,108,101,32,110,97,109,101,100,32,122,4, - 123,33,114,125,99,2,0,0,0,0,0,0,0,8,0,0, - 0,13,0,0,0,67,0,0,0,115,220,0,0,0,100,0, - 125,2,124,0,160,0,100,1,161,1,100,2,25,0,125,3, - 124,3,114,134,124,3,116,1,106,2,107,7,114,42,116,3, - 124,1,124,3,131,2,1,0,124,0,116,1,106,2,107,6, - 114,62,116,1,106,2,124,0,25,0,83,0,116,1,106,2, - 124,3,25,0,125,4,121,10,124,4,106,4,125,2,87,0, - 110,50,4,0,116,5,107,10,114,132,1,0,1,0,1,0, - 116,6,100,3,23,0,160,7,124,0,124,3,161,2,125,5, - 116,8,124,5,124,0,100,4,141,2,100,0,130,2,89,0, - 110,2,88,0,116,9,124,0,124,2,131,2,125,6,124,6, - 100,0,107,8,114,172,116,8,116,6,160,7,124,0,161,1, - 124,0,100,4,141,2,130,1,110,8,116,10,124,6,131,1, - 125,7,124,3,114,216,116,1,106,2,124,3,25,0,125,4, - 116,11,124,4,124,0,160,0,100,1,161,1,100,5,25,0, - 124,7,131,3,1,0,124,7,83,0,41,6,78,114,117,0, - 0,0,114,19,0,0,0,122,23,59,32,123,33,114,125,32, - 105,115,32,110,111,116,32,97,32,112,97,99,107,97,103,101, - 41,1,114,15,0,0,0,233,2,0,0,0,41,12,114,118, - 0,0,0,114,14,0,0,0,114,79,0,0,0,114,58,0, - 0,0,114,127,0,0,0,114,90,0,0,0,218,8,95,69, - 82,82,95,77,83,71,114,38,0,0,0,218,19,77,111,100, - 117,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, - 114,170,0,0,0,114,141,0,0,0,114,5,0,0,0,41, - 8,114,15,0,0,0,218,7,105,109,112,111,114,116,95,114, - 144,0,0,0,114,119,0,0,0,90,13,112,97,114,101,110, - 116,95,109,111,100,117,108,101,114,139,0,0,0,114,82,0, - 0,0,114,83,0,0,0,114,10,0,0,0,114,10,0,0, - 0,114,11,0,0,0,218,23,95,102,105,110,100,95,97,110, - 100,95,108,111,97,100,95,117,110,108,111,99,107,101,100,163, - 3,0,0,115,42,0,0,0,0,1,4,1,14,1,4,1, - 10,1,10,2,10,1,10,1,10,1,2,1,10,1,14,1, - 16,1,20,1,10,1,8,1,20,2,8,1,4,2,10,1, - 22,1,114,180,0,0,0,99,2,0,0,0,0,0,0,0, - 2,0,0,0,10,0,0,0,67,0,0,0,115,30,0,0, - 0,116,0,124,0,131,1,143,12,1,0,116,1,124,0,124, - 1,131,2,83,0,81,0,82,0,88,0,100,1,83,0,41, - 2,122,54,70,105,110,100,32,97,110,100,32,108,111,97,100, - 32,116,104,101,32,109,111,100,117,108,101,44,32,97,110,100, - 32,114,101,108,101,97,115,101,32,116,104,101,32,105,109,112, - 111,114,116,32,108,111,99,107,46,78,41,2,114,42,0,0, - 0,114,180,0,0,0,41,2,114,15,0,0,0,114,179,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,14,95,102,105,110,100,95,97,110,100,95,108,111,97, - 100,190,3,0,0,115,4,0,0,0,0,2,10,1,114,181, - 0,0,0,114,19,0,0,0,99,3,0,0,0,0,0,0, - 0,5,0,0,0,4,0,0,0,67,0,0,0,115,120,0, - 0,0,116,0,124,0,124,1,124,2,131,3,1,0,124,2, - 100,1,107,4,114,32,116,1,124,0,124,1,124,2,131,3, - 125,0,116,2,160,3,161,0,1,0,124,0,116,4,106,5, - 107,7,114,60,116,6,124,0,116,7,131,2,83,0,116,4, - 106,5,124,0,25,0,125,3,124,3,100,2,107,8,114,108, - 116,2,160,8,161,0,1,0,100,3,160,9,124,0,161,1, - 125,4,116,10,124,4,124,0,100,4,141,2,130,1,116,11, - 124,0,131,1,1,0,124,3,83,0,41,5,97,50,1,0, - 0,73,109,112,111,114,116,32,97,110,100,32,114,101,116,117, - 114,110,32,116,104,101,32,109,111,100,117,108,101,32,98,97, - 115,101,100,32,111,110,32,105,116,115,32,110,97,109,101,44, - 32,116,104,101,32,112,97,99,107,97,103,101,32,116,104,101, - 32,99,97,108,108,32,105,115,10,32,32,32,32,98,101,105, - 110,103,32,109,97,100,101,32,102,114,111,109,44,32,97,110, - 100,32,116,104,101,32,108,101,118,101,108,32,97,100,106,117, - 115,116,109,101,110,116,46,10,10,32,32,32,32,84,104,105, - 115,32,102,117,110,99,116,105,111,110,32,114,101,112,114,101, - 115,101,110,116,115,32,116,104,101,32,103,114,101,97,116,101, - 115,116,32,99,111,109,109,111,110,32,100,101,110,111,109,105, - 110,97,116,111,114,32,111,102,32,102,117,110,99,116,105,111, - 110,97,108,105,116,121,10,32,32,32,32,98,101,116,119,101, - 101,110,32,105,109,112,111,114,116,95,109,111,100,117,108,101, - 32,97,110,100,32,95,95,105,109,112,111,114,116,95,95,46, - 32,84,104,105,115,32,105,110,99,108,117,100,101,115,32,115, - 101,116,116,105,110,103,32,95,95,112,97,99,107,97,103,101, - 95,95,32,105,102,10,32,32,32,32,116,104,101,32,108,111, - 97,100,101,114,32,100,105,100,32,110,111,116,46,10,10,32, - 32,32,32,114,19,0,0,0,78,122,40,105,109,112,111,114, - 116,32,111,102,32,123,125,32,104,97,108,116,101,100,59,32, - 78,111,110,101,32,105,110,32,115,121,115,46,109,111,100,117, - 108,101,115,41,1,114,15,0,0,0,41,12,114,175,0,0, - 0,114,163,0,0,0,114,46,0,0,0,114,137,0,0,0, - 114,14,0,0,0,114,79,0,0,0,114,181,0,0,0,218, - 11,95,103,99,100,95,105,109,112,111,114,116,114,47,0,0, - 0,114,38,0,0,0,114,178,0,0,0,114,56,0,0,0, - 41,5,114,15,0,0,0,114,161,0,0,0,114,162,0,0, - 0,114,83,0,0,0,114,67,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,182,0,0,0,196, - 3,0,0,115,28,0,0,0,0,9,12,1,8,1,12,1, - 8,1,10,1,10,1,10,1,8,1,8,1,4,1,6,1, - 12,1,8,1,114,182,0,0,0,99,3,0,0,0,0,0, - 0,0,6,0,0,0,17,0,0,0,67,0,0,0,115,164, - 0,0,0,116,0,124,0,100,1,131,2,114,160,100,2,124, - 1,107,6,114,58,116,1,124,1,131,1,125,1,124,1,160, - 2,100,2,161,1,1,0,116,0,124,0,100,3,131,2,114, - 58,124,1,160,3,124,0,106,4,161,1,1,0,120,100,124, - 1,68,0,93,92,125,3,116,0,124,0,124,3,131,2,115, - 64,100,4,160,5,124,0,106,6,124,3,161,2,125,4,121, - 14,116,7,124,2,124,4,131,2,1,0,87,0,113,64,4, - 0,116,8,107,10,114,154,1,0,125,5,1,0,122,20,124, - 5,106,9,124,4,107,2,114,136,119,64,130,0,87,0,89, - 0,100,5,100,5,125,5,126,5,88,0,113,64,88,0,113, - 64,87,0,124,0,83,0,41,6,122,238,70,105,103,117,114, - 101,32,111,117,116,32,119,104,97,116,32,95,95,105,109,112, - 111,114,116,95,95,32,115,104,111,117,108,100,32,114,101,116, - 117,114,110,46,10,10,32,32,32,32,84,104,101,32,105,109, - 112,111,114,116,95,32,112,97,114,97,109,101,116,101,114,32, - 105,115,32,97,32,99,97,108,108,97,98,108,101,32,119,104, - 105,99,104,32,116,97,107,101,115,32,116,104,101,32,110,97, - 109,101,32,111,102,32,109,111,100,117,108,101,32,116,111,10, - 32,32,32,32,105,109,112,111,114,116,46,32,73,116,32,105, - 115,32,114,101,113,117,105,114,101,100,32,116,111,32,100,101, - 99,111,117,112,108,101,32,116,104,101,32,102,117,110,99,116, - 105,111,110,32,102,114,111,109,32,97,115,115,117,109,105,110, - 103,32,105,109,112,111,114,116,108,105,98,39,115,10,32,32, - 32,32,105,109,112,111,114,116,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,105,115,32,100,101,115,105,114, - 101,100,46,10,10,32,32,32,32,114,127,0,0,0,250,1, - 42,218,7,95,95,97,108,108,95,95,122,5,123,125,46,123, - 125,78,41,10,114,4,0,0,0,114,126,0,0,0,218,6, - 114,101,109,111,118,101,218,6,101,120,116,101,110,100,114,184, - 0,0,0,114,38,0,0,0,114,1,0,0,0,114,58,0, - 0,0,114,178,0,0,0,114,15,0,0,0,41,6,114,83, - 0,0,0,218,8,102,114,111,109,108,105,115,116,114,179,0, - 0,0,218,1,120,90,9,102,114,111,109,95,110,97,109,101, - 90,3,101,120,99,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,16,95,104,97,110,100,108,101,95,102,114, - 111,109,108,105,115,116,221,3,0,0,115,32,0,0,0,0, - 10,10,1,8,1,8,1,10,1,10,1,12,1,10,1,10, - 1,14,1,2,1,14,1,16,4,10,1,2,1,24,1,114, - 189,0,0,0,99,1,0,0,0,0,0,0,0,3,0,0, - 0,6,0,0,0,67,0,0,0,115,146,0,0,0,124,0, - 160,0,100,1,161,1,125,1,124,0,160,0,100,2,161,1, - 125,2,124,1,100,3,107,9,114,82,124,2,100,3,107,9, - 114,78,124,1,124,2,106,1,107,3,114,78,116,2,106,3, - 100,4,124,1,155,2,100,5,124,2,106,1,155,2,100,6, - 157,5,116,4,100,7,100,8,141,3,1,0,124,1,83,0, - 124,2,100,3,107,9,114,96,124,2,106,1,83,0,116,2, - 106,3,100,9,116,4,100,7,100,8,141,3,1,0,124,0, - 100,10,25,0,125,1,100,11,124,0,107,7,114,142,124,1, - 160,5,100,12,161,1,100,13,25,0,125,1,124,1,83,0, - 41,14,122,167,67,97,108,99,117,108,97,116,101,32,119,104, - 97,116,32,95,95,112,97,99,107,97,103,101,95,95,32,115, - 104,111,117,108,100,32,98,101,46,10,10,32,32,32,32,95, - 95,112,97,99,107,97,103,101,95,95,32,105,115,32,110,111, - 116,32,103,117,97,114,97,110,116,101,101,100,32,116,111,32, - 98,101,32,100,101,102,105,110,101,100,32,111,114,32,99,111, - 117,108,100,32,98,101,32,115,101,116,32,116,111,32,78,111, - 110,101,10,32,32,32,32,116,111,32,114,101,112,114,101,115, - 101,110,116,32,116,104,97,116,32,105,116,115,32,112,114,111, - 112,101,114,32,118,97,108,117,101,32,105,115,32,117,110,107, - 110,111,119,110,46,10,10,32,32,32,32,114,130,0,0,0, - 114,89,0,0,0,78,122,32,95,95,112,97,99,107,97,103, - 101,95,95,32,33,61,32,95,95,115,112,101,99,95,95,46, - 112,97,114,101,110,116,32,40,122,4,32,33,61,32,250,1, - 41,233,3,0,0,0,41,1,90,10,115,116,97,99,107,108, - 101,118,101,108,122,89,99,97,110,39,116,32,114,101,115,111, - 108,118,101,32,112,97,99,107,97,103,101,32,102,114,111,109, - 32,95,95,115,112,101,99,95,95,32,111,114,32,95,95,112, - 97,99,107,97,103,101,95,95,44,32,102,97,108,108,105,110, - 103,32,98,97,99,107,32,111,110,32,95,95,110,97,109,101, - 95,95,32,97,110,100,32,95,95,112,97,116,104,95,95,114, - 1,0,0,0,114,127,0,0,0,114,117,0,0,0,114,19, - 0,0,0,41,6,114,30,0,0,0,114,119,0,0,0,114, - 167,0,0,0,114,168,0,0,0,114,169,0,0,0,114,118, - 0,0,0,41,3,218,7,103,108,111,98,97,108,115,114,161, - 0,0,0,114,82,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,17,95,99,97,108,99,95,95, - 95,112,97,99,107,97,103,101,95,95,252,3,0,0,115,30, - 0,0,0,0,7,10,1,10,1,8,1,18,1,22,2,10, - 1,4,1,8,1,6,2,6,2,10,1,8,1,8,1,14, - 1,114,193,0,0,0,99,5,0,0,0,0,0,0,0,9, - 0,0,0,5,0,0,0,67,0,0,0,115,166,0,0,0, - 124,4,100,1,107,2,114,18,116,0,124,0,131,1,125,5, - 110,36,124,1,100,2,107,9,114,30,124,1,110,2,105,0, - 125,6,116,1,124,6,131,1,125,7,116,0,124,0,124,7, - 124,4,131,3,125,5,124,3,115,150,124,4,100,1,107,2, - 114,84,116,0,124,0,160,2,100,3,161,1,100,1,25,0, - 131,1,83,0,124,0,115,92,124,5,83,0,116,3,124,0, - 131,1,116,3,124,0,160,2,100,3,161,1,100,1,25,0, - 131,1,24,0,125,8,116,4,106,5,124,5,106,6,100,2, - 116,3,124,5,106,6,131,1,124,8,24,0,133,2,25,0, - 25,0,83,0,110,12,116,7,124,5,124,3,116,0,131,3, - 83,0,100,2,83,0,41,4,97,215,1,0,0,73,109,112, - 111,114,116,32,97,32,109,111,100,117,108,101,46,10,10,32, - 32,32,32,84,104,101,32,39,103,108,111,98,97,108,115,39, - 32,97,114,103,117,109,101,110,116,32,105,115,32,117,115,101, - 100,32,116,111,32,105,110,102,101,114,32,119,104,101,114,101, - 32,116,104,101,32,105,109,112,111,114,116,32,105,115,32,111, - 99,99,117,114,114,105,110,103,32,102,114,111,109,10,32,32, - 32,32,116,111,32,104,97,110,100,108,101,32,114,101,108,97, - 116,105,118,101,32,105,109,112,111,114,116,115,46,32,84,104, - 101,32,39,108,111,99,97,108,115,39,32,97,114,103,117,109, - 101,110,116,32,105,115,32,105,103,110,111,114,101,100,46,32, - 84,104,101,10,32,32,32,32,39,102,114,111,109,108,105,115, - 116,39,32,97,114,103,117,109,101,110,116,32,115,112,101,99, - 105,102,105,101,115,32,119,104,97,116,32,115,104,111,117,108, - 100,32,101,120,105,115,116,32,97,115,32,97,116,116,114,105, - 98,117,116,101,115,32,111,110,32,116,104,101,32,109,111,100, - 117,108,101,10,32,32,32,32,98,101,105,110,103,32,105,109, - 112,111,114,116,101,100,32,40,101,46,103,46,32,96,96,102, - 114,111,109,32,109,111,100,117,108,101,32,105,109,112,111,114, - 116,32,60,102,114,111,109,108,105,115,116,62,96,96,41,46, - 32,32,84,104,101,32,39,108,101,118,101,108,39,10,32,32, - 32,32,97,114,103,117,109,101,110,116,32,114,101,112,114,101, - 115,101,110,116,115,32,116,104,101,32,112,97,99,107,97,103, - 101,32,108,111,99,97,116,105,111,110,32,116,111,32,105,109, - 112,111,114,116,32,102,114,111,109,32,105,110,32,97,32,114, - 101,108,97,116,105,118,101,10,32,32,32,32,105,109,112,111, - 114,116,32,40,101,46,103,46,32,96,96,102,114,111,109,32, - 46,46,112,107,103,32,105,109,112,111,114,116,32,109,111,100, - 96,96,32,119,111,117,108,100,32,104,97,118,101,32,97,32, - 39,108,101,118,101,108,39,32,111,102,32,50,41,46,10,10, - 32,32,32,32,114,19,0,0,0,78,114,117,0,0,0,41, - 8,114,182,0,0,0,114,193,0,0,0,218,9,112,97,114, - 116,105,116,105,111,110,114,159,0,0,0,114,14,0,0,0, - 114,79,0,0,0,114,1,0,0,0,114,189,0,0,0,41, - 9,114,15,0,0,0,114,192,0,0,0,218,6,108,111,99, - 97,108,115,114,187,0,0,0,114,162,0,0,0,114,83,0, - 0,0,90,8,103,108,111,98,97,108,115,95,114,161,0,0, - 0,90,7,99,117,116,95,111,102,102,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,10,95,95,105,109,112, - 111,114,116,95,95,23,4,0,0,115,26,0,0,0,0,11, - 8,1,10,2,16,1,8,1,12,1,4,3,8,1,18,1, - 4,1,4,4,26,3,32,2,114,196,0,0,0,99,1,0, - 0,0,0,0,0,0,2,0,0,0,3,0,0,0,67,0, - 0,0,115,38,0,0,0,116,0,160,1,124,0,161,1,125, - 1,124,1,100,0,107,8,114,30,116,2,100,1,124,0,23, - 0,131,1,130,1,116,3,124,1,131,1,83,0,41,2,78, - 122,25,110,111,32,98,117,105,108,116,45,105,110,32,109,111, - 100,117,108,101,32,110,97,109,101,100,32,41,4,114,142,0, - 0,0,114,146,0,0,0,114,70,0,0,0,114,141,0,0, - 0,41,2,114,15,0,0,0,114,82,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,18,95,98, - 117,105,108,116,105,110,95,102,114,111,109,95,110,97,109,101, - 58,4,0,0,115,8,0,0,0,0,1,10,1,8,1,12, - 1,114,197,0,0,0,99,2,0,0,0,0,0,0,0,12, - 0,0,0,12,0,0,0,67,0,0,0,115,244,0,0,0, - 124,1,97,0,124,0,97,1,116,2,116,1,131,1,125,2, - 120,86,116,1,106,3,160,4,161,0,68,0,93,72,92,2, - 125,3,125,4,116,5,124,4,124,2,131,2,114,28,124,3, - 116,1,106,6,107,6,114,62,116,7,125,5,110,18,116,0, - 160,8,124,3,161,1,114,28,116,9,125,5,110,2,113,28, - 116,10,124,4,124,5,131,2,125,6,116,11,124,6,124,4, - 131,2,1,0,113,28,87,0,116,1,106,3,116,12,25,0, - 125,7,120,54,100,5,68,0,93,46,125,8,124,8,116,1, - 106,3,107,7,114,144,116,13,124,8,131,1,125,9,110,10, - 116,1,106,3,124,8,25,0,125,9,116,14,124,7,124,8, - 124,9,131,3,1,0,113,120,87,0,121,12,116,13,100,2, - 131,1,125,10,87,0,110,24,4,0,116,15,107,10,114,206, - 1,0,1,0,1,0,100,3,125,10,89,0,110,2,88,0, - 116,14,124,7,100,2,124,10,131,3,1,0,116,13,100,4, - 131,1,125,11,116,14,124,7,100,4,124,11,131,3,1,0, - 100,3,83,0,41,6,122,250,83,101,116,117,112,32,105,109, - 112,111,114,116,108,105,98,32,98,121,32,105,109,112,111,114, - 116,105,110,103,32,110,101,101,100,101,100,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,115,32,97,110,100, - 32,105,110,106,101,99,116,105,110,103,32,116,104,101,109,10, - 32,32,32,32,105,110,116,111,32,116,104,101,32,103,108,111, - 98,97,108,32,110,97,109,101,115,112,97,99,101,46,10,10, - 32,32,32,32,65,115,32,115,121,115,32,105,115,32,110,101, - 101,100,101,100,32,102,111,114,32,115,121,115,46,109,111,100, - 117,108,101,115,32,97,99,99,101,115,115,32,97,110,100,32, - 95,105,109,112,32,105,115,32,110,101,101,100,101,100,32,116, - 111,32,108,111,97,100,32,98,117,105,108,116,45,105,110,10, - 32,32,32,32,109,111,100,117,108,101,115,44,32,116,104,111, - 115,101,32,116,119,111,32,109,111,100,117,108,101,115,32,109, - 117,115,116,32,98,101,32,101,120,112,108,105,99,105,116,108, - 121,32,112,97,115,115,101,100,32,105,110,46,10,10,32,32, - 32,32,114,167,0,0,0,114,20,0,0,0,78,114,55,0, - 0,0,41,1,114,167,0,0,0,41,16,114,46,0,0,0, - 114,14,0,0,0,114,13,0,0,0,114,79,0,0,0,218, - 5,105,116,101,109,115,114,171,0,0,0,114,69,0,0,0, - 114,142,0,0,0,114,75,0,0,0,114,152,0,0,0,114, - 128,0,0,0,114,133,0,0,0,114,1,0,0,0,114,197, - 0,0,0,114,5,0,0,0,114,70,0,0,0,41,12,218, - 10,115,121,115,95,109,111,100,117,108,101,218,11,95,105,109, - 112,95,109,111,100,117,108,101,90,11,109,111,100,117,108,101, - 95,116,121,112,101,114,15,0,0,0,114,83,0,0,0,114, - 93,0,0,0,114,82,0,0,0,90,11,115,101,108,102,95, - 109,111,100,117,108,101,90,12,98,117,105,108,116,105,110,95, - 110,97,109,101,90,14,98,117,105,108,116,105,110,95,109,111, - 100,117,108,101,90,13,116,104,114,101,97,100,95,109,111,100, - 117,108,101,90,14,119,101,97,107,114,101,102,95,109,111,100, - 117,108,101,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,6,95,115,101,116,117,112,65,4,0,0,115,50, - 0,0,0,0,9,4,1,4,3,8,1,20,1,10,1,10, - 1,6,1,10,1,6,2,2,1,10,1,14,3,10,1,10, - 1,10,1,10,2,10,1,16,3,2,1,12,1,14,2,10, - 1,12,3,8,1,114,201,0,0,0,99,2,0,0,0,0, - 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, - 38,0,0,0,116,0,124,0,124,1,131,2,1,0,116,1, - 106,2,160,3,116,4,161,1,1,0,116,1,106,2,160,3, - 116,5,161,1,1,0,100,1,83,0,41,2,122,48,73,110, - 115,116,97,108,108,32,105,109,112,111,114,116,101,114,115,32, - 102,111,114,32,98,117,105,108,116,105,110,32,97,110,100,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,115,78,41, - 6,114,201,0,0,0,114,14,0,0,0,114,166,0,0,0, - 114,109,0,0,0,114,142,0,0,0,114,152,0,0,0,41, - 2,114,199,0,0,0,114,200,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,218,8,95,105,110,115, - 116,97,108,108,112,4,0,0,115,6,0,0,0,0,2,10, - 2,12,1,114,202,0,0,0,99,0,0,0,0,0,0,0, - 0,1,0,0,0,4,0,0,0,67,0,0,0,115,32,0, - 0,0,100,1,100,2,108,0,125,0,124,0,97,1,124,0, - 160,2,116,3,106,4,116,5,25,0,161,1,1,0,100,2, - 83,0,41,3,122,57,73,110,115,116,97,108,108,32,105,109, - 112,111,114,116,101,114,115,32,116,104,97,116,32,114,101,113, - 117,105,114,101,32,101,120,116,101,114,110,97,108,32,102,105, - 108,101,115,121,115,116,101,109,32,97,99,99,101,115,115,114, - 19,0,0,0,78,41,6,218,26,95,102,114,111,122,101,110, - 95,105,109,112,111,114,116,108,105,98,95,101,120,116,101,114, - 110,97,108,114,115,0,0,0,114,202,0,0,0,114,14,0, - 0,0,114,79,0,0,0,114,1,0,0,0,41,1,114,203, + 100,1,107,9,114,54,124,4,115,224,124,0,116,0,106,6, + 107,6,114,224,116,0,106,6,124,0,25,0,125,8,121,10, + 124,8,106,11,125,9,87,0,110,20,4,0,116,9,107,10, + 114,204,1,0,1,0,1,0,124,7,83,0,88,0,124,9, + 100,1,107,8,114,218,124,7,83,0,124,9,83,0,113,54, + 124,7,83,0,113,54,87,0,100,1,83,0,100,1,83,0, + 41,4,122,21,70,105,110,100,32,97,32,109,111,100,117,108, + 101,39,115,32,115,112,101,99,46,78,122,53,115,121,115,46, + 109,101,116,97,95,112,97,116,104,32,105,115,32,78,111,110, + 101,44,32,80,121,116,104,111,110,32,105,115,32,108,105,107, + 101,108,121,32,115,104,117,116,116,105,110,103,32,100,111,119, + 110,122,22,115,121,115,46,109,101,116,97,95,112,97,116,104, + 32,105,115,32,101,109,112,116,121,41,12,114,14,0,0,0, + 218,9,109,101,116,97,95,112,97,116,104,114,70,0,0,0, + 218,9,95,119,97,114,110,105,110,103,115,218,4,119,97,114, + 110,218,13,73,109,112,111,114,116,87,97,114,110,105,110,103, + 114,79,0,0,0,114,157,0,0,0,114,146,0,0,0,114, + 90,0,0,0,114,165,0,0,0,114,89,0,0,0,41,10, + 114,15,0,0,0,114,144,0,0,0,114,145,0,0,0,114, + 166,0,0,0,90,9,105,115,95,114,101,108,111,97,100,114, + 164,0,0,0,114,146,0,0,0,114,82,0,0,0,114,83, + 0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,218,10,95,102,105,110,100,95,115, + 112,101,99,93,3,0,0,115,54,0,0,0,0,2,6,1, + 8,2,8,3,4,1,12,5,10,1,10,1,8,1,2,1, + 10,1,14,1,12,1,8,1,8,2,22,1,8,2,14,1, + 10,1,2,1,10,1,14,4,6,2,8,1,4,2,6,2, + 8,2,114,170,0,0,0,99,3,0,0,0,0,0,0,0, + 4,0,0,0,5,0,0,0,67,0,0,0,115,138,0,0, + 0,116,0,124,0,116,1,131,2,115,28,116,2,100,1,160, + 3,116,4,124,0,131,1,161,1,131,1,130,1,124,2,100, + 2,107,0,114,44,116,5,100,3,131,1,130,1,124,2,100, + 2,107,4,114,114,116,0,124,1,116,1,131,2,115,72,116, + 2,100,4,131,1,130,1,110,42,124,1,115,86,116,6,100, + 5,131,1,130,1,110,28,124,1,116,7,106,8,107,7,114, + 114,100,6,125,3,116,9,124,3,160,3,124,1,161,1,131, + 1,130,1,124,0,115,134,124,2,100,2,107,2,114,134,116, + 5,100,7,131,1,130,1,100,8,83,0,41,9,122,28,86, + 101,114,105,102,121,32,97,114,103,117,109,101,110,116,115,32, + 97,114,101,32,34,115,97,110,101,34,46,122,31,109,111,100, + 117,108,101,32,110,97,109,101,32,109,117,115,116,32,98,101, + 32,115,116,114,44,32,110,111,116,32,123,125,114,19,0,0, + 0,122,18,108,101,118,101,108,32,109,117,115,116,32,98,101, + 32,62,61,32,48,122,31,95,95,112,97,99,107,97,103,101, + 95,95,32,110,111,116,32,115,101,116,32,116,111,32,97,32, + 115,116,114,105,110,103,122,54,97,116,116,101,109,112,116,101, + 100,32,114,101,108,97,116,105,118,101,32,105,109,112,111,114, + 116,32,119,105,116,104,32,110,111,32,107,110,111,119,110,32, + 112,97,114,101,110,116,32,112,97,99,107,97,103,101,122,61, + 80,97,114,101,110,116,32,109,111,100,117,108,101,32,123,33, + 114,125,32,110,111,116,32,108,111,97,100,101,100,44,32,99, + 97,110,110,111,116,32,112,101,114,102,111,114,109,32,114,101, + 108,97,116,105,118,101,32,105,109,112,111,114,116,122,17,69, + 109,112,116,121,32,109,111,100,117,108,101,32,110,97,109,101, + 78,41,10,218,10,105,115,105,110,115,116,97,110,99,101,218, + 3,115,116,114,218,9,84,121,112,101,69,114,114,111,114,114, + 38,0,0,0,114,13,0,0,0,114,160,0,0,0,114,70, + 0,0,0,114,14,0,0,0,114,79,0,0,0,218,11,83, + 121,115,116,101,109,69,114,114,111,114,41,4,114,15,0,0, + 0,114,161,0,0,0,114,162,0,0,0,114,139,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 13,95,115,97,110,105,116,121,95,99,104,101,99,107,140,3, + 0,0,115,28,0,0,0,0,2,10,1,18,1,8,1,8, + 1,8,1,10,1,10,1,4,1,10,2,10,1,4,2,14, + 1,12,1,114,175,0,0,0,122,16,78,111,32,109,111,100, + 117,108,101,32,110,97,109,101,100,32,122,4,123,33,114,125, + 99,2,0,0,0,0,0,0,0,8,0,0,0,13,0,0, + 0,67,0,0,0,115,220,0,0,0,100,0,125,2,124,0, + 160,0,100,1,161,1,100,2,25,0,125,3,124,3,114,134, + 124,3,116,1,106,2,107,7,114,42,116,3,124,1,124,3, + 131,2,1,0,124,0,116,1,106,2,107,6,114,62,116,1, + 106,2,124,0,25,0,83,0,116,1,106,2,124,3,25,0, + 125,4,121,10,124,4,106,4,125,2,87,0,110,50,4,0, + 116,5,107,10,114,132,1,0,1,0,1,0,116,6,100,3, + 23,0,160,7,124,0,124,3,161,2,125,5,116,8,124,5, + 124,0,100,4,141,2,100,0,130,2,89,0,110,2,88,0, + 116,9,124,0,124,2,131,2,125,6,124,6,100,0,107,8, + 114,172,116,8,116,6,160,7,124,0,161,1,124,0,100,4, + 141,2,130,1,110,8,116,10,124,6,131,1,125,7,124,3, + 114,216,116,1,106,2,124,3,25,0,125,4,116,11,124,4, + 124,0,160,0,100,1,161,1,100,5,25,0,124,7,131,3, + 1,0,124,7,83,0,41,6,78,114,117,0,0,0,114,19, + 0,0,0,122,23,59,32,123,33,114,125,32,105,115,32,110, + 111,116,32,97,32,112,97,99,107,97,103,101,41,1,114,15, + 0,0,0,233,2,0,0,0,41,12,114,118,0,0,0,114, + 14,0,0,0,114,79,0,0,0,114,58,0,0,0,114,127, + 0,0,0,114,90,0,0,0,218,8,95,69,82,82,95,77, + 83,71,114,38,0,0,0,218,19,77,111,100,117,108,101,78, + 111,116,70,111,117,110,100,69,114,114,111,114,114,170,0,0, + 0,114,141,0,0,0,114,5,0,0,0,41,8,114,15,0, + 0,0,218,7,105,109,112,111,114,116,95,114,144,0,0,0, + 114,119,0,0,0,90,13,112,97,114,101,110,116,95,109,111, + 100,117,108,101,114,139,0,0,0,114,82,0,0,0,114,83, 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,218,27,95,105,110,115,116,97,108,108,95,101,120,116, - 101,114,110,97,108,95,105,109,112,111,114,116,101,114,115,120, - 4,0,0,115,6,0,0,0,0,3,8,1,4,1,114,204, - 0,0,0,41,2,78,78,41,1,78,41,2,78,114,19,0, - 0,0,41,51,114,3,0,0,0,114,115,0,0,0,114,12, - 0,0,0,114,16,0,0,0,114,51,0,0,0,114,29,0, - 0,0,114,36,0,0,0,114,17,0,0,0,114,18,0,0, - 0,114,41,0,0,0,114,42,0,0,0,114,45,0,0,0, - 114,56,0,0,0,114,58,0,0,0,114,68,0,0,0,114, - 74,0,0,0,114,77,0,0,0,114,84,0,0,0,114,95, - 0,0,0,114,96,0,0,0,114,102,0,0,0,114,78,0, - 0,0,218,6,111,98,106,101,99,116,90,9,95,80,79,80, - 85,76,65,84,69,114,128,0,0,0,114,133,0,0,0,114, - 136,0,0,0,114,91,0,0,0,114,80,0,0,0,114,140, - 0,0,0,114,141,0,0,0,114,81,0,0,0,114,142,0, - 0,0,114,152,0,0,0,114,157,0,0,0,114,163,0,0, - 0,114,165,0,0,0,114,170,0,0,0,114,175,0,0,0, - 90,15,95,69,82,82,95,77,83,71,95,80,82,69,70,73, - 88,114,177,0,0,0,114,180,0,0,0,114,181,0,0,0, - 114,182,0,0,0,114,189,0,0,0,114,193,0,0,0,114, - 196,0,0,0,114,197,0,0,0,114,201,0,0,0,114,202, - 0,0,0,114,204,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,218,8,60,109, - 111,100,117,108,101,62,25,0,0,0,115,96,0,0,0,4, - 0,4,2,8,8,8,7,4,2,4,3,16,4,14,68,14, - 21,14,19,8,19,8,19,8,11,14,8,8,11,8,12,8, - 16,8,36,14,27,14,101,16,26,6,3,10,45,14,60,8, - 17,8,17,8,25,8,29,8,23,8,16,14,73,14,77,14, - 13,8,9,8,9,10,47,8,20,4,1,8,2,8,27,8, - 6,10,25,8,31,8,27,18,35,8,7,8,47,8,8, + 0,0,218,23,95,102,105,110,100,95,97,110,100,95,108,111, + 97,100,95,117,110,108,111,99,107,101,100,163,3,0,0,115, + 42,0,0,0,0,1,4,1,14,1,4,1,10,1,10,2, + 10,1,10,1,10,1,2,1,10,1,14,1,16,1,20,1, + 10,1,8,1,20,2,8,1,4,2,10,1,22,1,114,180, + 0,0,0,99,2,0,0,0,0,0,0,0,2,0,0,0, + 10,0,0,0,67,0,0,0,115,30,0,0,0,116,0,124, + 0,131,1,143,12,1,0,116,1,124,0,124,1,131,2,83, + 0,81,0,82,0,88,0,100,1,83,0,41,2,122,54,70, + 105,110,100,32,97,110,100,32,108,111,97,100,32,116,104,101, + 32,109,111,100,117,108,101,44,32,97,110,100,32,114,101,108, + 101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,46,78,41,2,114,42,0,0,0,114,180,0, + 0,0,41,2,114,15,0,0,0,114,179,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,218,14,95, + 102,105,110,100,95,97,110,100,95,108,111,97,100,190,3,0, + 0,115,4,0,0,0,0,2,10,1,114,181,0,0,0,114, + 19,0,0,0,99,3,0,0,0,0,0,0,0,5,0,0, + 0,4,0,0,0,67,0,0,0,115,120,0,0,0,116,0, + 124,0,124,1,124,2,131,3,1,0,124,2,100,1,107,4, + 114,32,116,1,124,0,124,1,124,2,131,3,125,0,116,2, + 160,3,161,0,1,0,124,0,116,4,106,5,107,7,114,60, + 116,6,124,0,116,7,131,2,83,0,116,4,106,5,124,0, + 25,0,125,3,124,3,100,2,107,8,114,108,116,2,160,8, + 161,0,1,0,100,3,160,9,124,0,161,1,125,4,116,10, + 124,4,124,0,100,4,141,2,130,1,116,11,124,0,131,1, + 1,0,124,3,83,0,41,5,97,50,1,0,0,73,109,112, + 111,114,116,32,97,110,100,32,114,101,116,117,114,110,32,116, + 104,101,32,109,111,100,117,108,101,32,98,97,115,101,100,32, + 111,110,32,105,116,115,32,110,97,109,101,44,32,116,104,101, + 32,112,97,99,107,97,103,101,32,116,104,101,32,99,97,108, + 108,32,105,115,10,32,32,32,32,98,101,105,110,103,32,109, + 97,100,101,32,102,114,111,109,44,32,97,110,100,32,116,104, + 101,32,108,101,118,101,108,32,97,100,106,117,115,116,109,101, + 110,116,46,10,10,32,32,32,32,84,104,105,115,32,102,117, + 110,99,116,105,111,110,32,114,101,112,114,101,115,101,110,116, + 115,32,116,104,101,32,103,114,101,97,116,101,115,116,32,99, + 111,109,109,111,110,32,100,101,110,111,109,105,110,97,116,111, + 114,32,111,102,32,102,117,110,99,116,105,111,110,97,108,105, + 116,121,10,32,32,32,32,98,101,116,119,101,101,110,32,105, + 109,112,111,114,116,95,109,111,100,117,108,101,32,97,110,100, + 32,95,95,105,109,112,111,114,116,95,95,46,32,84,104,105, + 115,32,105,110,99,108,117,100,101,115,32,115,101,116,116,105, + 110,103,32,95,95,112,97,99,107,97,103,101,95,95,32,105, + 102,10,32,32,32,32,116,104,101,32,108,111,97,100,101,114, + 32,100,105,100,32,110,111,116,46,10,10,32,32,32,32,114, + 19,0,0,0,78,122,40,105,109,112,111,114,116,32,111,102, + 32,123,125,32,104,97,108,116,101,100,59,32,78,111,110,101, + 32,105,110,32,115,121,115,46,109,111,100,117,108,101,115,41, + 1,114,15,0,0,0,41,12,114,175,0,0,0,114,163,0, + 0,0,114,46,0,0,0,114,137,0,0,0,114,14,0,0, + 0,114,79,0,0,0,114,181,0,0,0,218,11,95,103,99, + 100,95,105,109,112,111,114,116,114,47,0,0,0,114,38,0, + 0,0,114,178,0,0,0,114,56,0,0,0,41,5,114,15, + 0,0,0,114,161,0,0,0,114,162,0,0,0,114,83,0, + 0,0,114,67,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,182,0,0,0,196,3,0,0,115, + 28,0,0,0,0,9,12,1,8,1,12,1,8,1,10,1, + 10,1,10,1,8,1,8,1,4,1,6,1,12,1,8,1, + 114,182,0,0,0,99,3,0,0,0,0,0,0,0,6,0, + 0,0,17,0,0,0,67,0,0,0,115,164,0,0,0,116, + 0,124,0,100,1,131,2,114,160,100,2,124,1,107,6,114, + 58,116,1,124,1,131,1,125,1,124,1,160,2,100,2,161, + 1,1,0,116,0,124,0,100,3,131,2,114,58,124,1,160, + 3,124,0,106,4,161,1,1,0,120,100,124,1,68,0,93, + 92,125,3,116,0,124,0,124,3,131,2,115,64,100,4,160, + 5,124,0,106,6,124,3,161,2,125,4,121,14,116,7,124, + 2,124,4,131,2,1,0,87,0,113,64,4,0,116,8,107, + 10,114,154,1,0,125,5,1,0,122,20,124,5,106,9,124, + 4,107,2,114,136,119,64,130,0,87,0,89,0,100,5,100, + 5,125,5,126,5,88,0,113,64,88,0,113,64,87,0,124, + 0,83,0,41,6,122,238,70,105,103,117,114,101,32,111,117, + 116,32,119,104,97,116,32,95,95,105,109,112,111,114,116,95, + 95,32,115,104,111,117,108,100,32,114,101,116,117,114,110,46, + 10,10,32,32,32,32,84,104,101,32,105,109,112,111,114,116, + 95,32,112,97,114,97,109,101,116,101,114,32,105,115,32,97, + 32,99,97,108,108,97,98,108,101,32,119,104,105,99,104,32, + 116,97,107,101,115,32,116,104,101,32,110,97,109,101,32,111, + 102,32,109,111,100,117,108,101,32,116,111,10,32,32,32,32, + 105,109,112,111,114,116,46,32,73,116,32,105,115,32,114,101, + 113,117,105,114,101,100,32,116,111,32,100,101,99,111,117,112, + 108,101,32,116,104,101,32,102,117,110,99,116,105,111,110,32, + 102,114,111,109,32,97,115,115,117,109,105,110,103,32,105,109, + 112,111,114,116,108,105,98,39,115,10,32,32,32,32,105,109, + 112,111,114,116,32,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,32,105,115,32,100,101,115,105,114,101,100,46,10, + 10,32,32,32,32,114,127,0,0,0,250,1,42,218,7,95, + 95,97,108,108,95,95,122,5,123,125,46,123,125,78,41,10, + 114,4,0,0,0,114,126,0,0,0,218,6,114,101,109,111, + 118,101,218,6,101,120,116,101,110,100,114,184,0,0,0,114, + 38,0,0,0,114,1,0,0,0,114,58,0,0,0,114,178, + 0,0,0,114,15,0,0,0,41,6,114,83,0,0,0,218, + 8,102,114,111,109,108,105,115,116,114,179,0,0,0,218,1, + 120,90,9,102,114,111,109,95,110,97,109,101,90,3,101,120, + 99,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,16,95,104,97,110,100,108,101,95,102,114,111,109,108,105, + 115,116,221,3,0,0,115,32,0,0,0,0,10,10,1,8, + 1,8,1,10,1,10,1,12,1,10,1,10,1,14,1,2, + 1,14,1,16,4,10,1,2,1,24,1,114,189,0,0,0, + 99,1,0,0,0,0,0,0,0,3,0,0,0,6,0,0, + 0,67,0,0,0,115,146,0,0,0,124,0,160,0,100,1, + 161,1,125,1,124,0,160,0,100,2,161,1,125,2,124,1, + 100,3,107,9,114,82,124,2,100,3,107,9,114,78,124,1, + 124,2,106,1,107,3,114,78,116,2,106,3,100,4,124,1, + 155,2,100,5,124,2,106,1,155,2,100,6,157,5,116,4, + 100,7,100,8,141,3,1,0,124,1,83,0,124,2,100,3, + 107,9,114,96,124,2,106,1,83,0,116,2,106,3,100,9, + 116,4,100,7,100,8,141,3,1,0,124,0,100,10,25,0, + 125,1,100,11,124,0,107,7,114,142,124,1,160,5,100,12, + 161,1,100,13,25,0,125,1,124,1,83,0,41,14,122,167, + 67,97,108,99,117,108,97,116,101,32,119,104,97,116,32,95, + 95,112,97,99,107,97,103,101,95,95,32,115,104,111,117,108, + 100,32,98,101,46,10,10,32,32,32,32,95,95,112,97,99, + 107,97,103,101,95,95,32,105,115,32,110,111,116,32,103,117, + 97,114,97,110,116,101,101,100,32,116,111,32,98,101,32,100, + 101,102,105,110,101,100,32,111,114,32,99,111,117,108,100,32, + 98,101,32,115,101,116,32,116,111,32,78,111,110,101,10,32, + 32,32,32,116,111,32,114,101,112,114,101,115,101,110,116,32, + 116,104,97,116,32,105,116,115,32,112,114,111,112,101,114,32, + 118,97,108,117,101,32,105,115,32,117,110,107,110,111,119,110, + 46,10,10,32,32,32,32,114,130,0,0,0,114,89,0,0, + 0,78,122,32,95,95,112,97,99,107,97,103,101,95,95,32, + 33,61,32,95,95,115,112,101,99,95,95,46,112,97,114,101, + 110,116,32,40,122,4,32,33,61,32,250,1,41,233,3,0, + 0,0,41,1,90,10,115,116,97,99,107,108,101,118,101,108, + 122,89,99,97,110,39,116,32,114,101,115,111,108,118,101,32, + 112,97,99,107,97,103,101,32,102,114,111,109,32,95,95,115, + 112,101,99,95,95,32,111,114,32,95,95,112,97,99,107,97, + 103,101,95,95,44,32,102,97,108,108,105,110,103,32,98,97, + 99,107,32,111,110,32,95,95,110,97,109,101,95,95,32,97, + 110,100,32,95,95,112,97,116,104,95,95,114,1,0,0,0, + 114,127,0,0,0,114,117,0,0,0,114,19,0,0,0,41, + 6,114,30,0,0,0,114,119,0,0,0,114,167,0,0,0, + 114,168,0,0,0,114,169,0,0,0,114,118,0,0,0,41, + 3,218,7,103,108,111,98,97,108,115,114,161,0,0,0,114, + 82,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,17,95,99,97,108,99,95,95,95,112,97,99, + 107,97,103,101,95,95,252,3,0,0,115,30,0,0,0,0, + 7,10,1,10,1,8,1,18,1,22,2,10,1,4,1,8, + 1,6,2,6,2,10,1,8,1,8,1,14,1,114,193,0, + 0,0,99,5,0,0,0,0,0,0,0,9,0,0,0,5, + 0,0,0,67,0,0,0,115,166,0,0,0,124,4,100,1, + 107,2,114,18,116,0,124,0,131,1,125,5,110,36,124,1, + 100,2,107,9,114,30,124,1,110,2,105,0,125,6,116,1, + 124,6,131,1,125,7,116,0,124,0,124,7,124,4,131,3, + 125,5,124,3,115,150,124,4,100,1,107,2,114,84,116,0, + 124,0,160,2,100,3,161,1,100,1,25,0,131,1,83,0, + 124,0,115,92,124,5,83,0,116,3,124,0,131,1,116,3, + 124,0,160,2,100,3,161,1,100,1,25,0,131,1,24,0, + 125,8,116,4,106,5,124,5,106,6,100,2,116,3,124,5, + 106,6,131,1,124,8,24,0,133,2,25,0,25,0,83,0, + 110,12,116,7,124,5,124,3,116,0,131,3,83,0,100,2, + 83,0,41,4,97,215,1,0,0,73,109,112,111,114,116,32, + 97,32,109,111,100,117,108,101,46,10,10,32,32,32,32,84, + 104,101,32,39,103,108,111,98,97,108,115,39,32,97,114,103, + 117,109,101,110,116,32,105,115,32,117,115,101,100,32,116,111, + 32,105,110,102,101,114,32,119,104,101,114,101,32,116,104,101, + 32,105,109,112,111,114,116,32,105,115,32,111,99,99,117,114, + 114,105,110,103,32,102,114,111,109,10,32,32,32,32,116,111, + 32,104,97,110,100,108,101,32,114,101,108,97,116,105,118,101, + 32,105,109,112,111,114,116,115,46,32,84,104,101,32,39,108, + 111,99,97,108,115,39,32,97,114,103,117,109,101,110,116,32, + 105,115,32,105,103,110,111,114,101,100,46,32,84,104,101,10, + 32,32,32,32,39,102,114,111,109,108,105,115,116,39,32,97, + 114,103,117,109,101,110,116,32,115,112,101,99,105,102,105,101, + 115,32,119,104,97,116,32,115,104,111,117,108,100,32,101,120, + 105,115,116,32,97,115,32,97,116,116,114,105,98,117,116,101, + 115,32,111,110,32,116,104,101,32,109,111,100,117,108,101,10, + 32,32,32,32,98,101,105,110,103,32,105,109,112,111,114,116, + 101,100,32,40,101,46,103,46,32,96,96,102,114,111,109,32, + 109,111,100,117,108,101,32,105,109,112,111,114,116,32,60,102, + 114,111,109,108,105,115,116,62,96,96,41,46,32,32,84,104, + 101,32,39,108,101,118,101,108,39,10,32,32,32,32,97,114, + 103,117,109,101,110,116,32,114,101,112,114,101,115,101,110,116, + 115,32,116,104,101,32,112,97,99,107,97,103,101,32,108,111, + 99,97,116,105,111,110,32,116,111,32,105,109,112,111,114,116, + 32,102,114,111,109,32,105,110,32,97,32,114,101,108,97,116, + 105,118,101,10,32,32,32,32,105,109,112,111,114,116,32,40, + 101,46,103,46,32,96,96,102,114,111,109,32,46,46,112,107, + 103,32,105,109,112,111,114,116,32,109,111,100,96,96,32,119, + 111,117,108,100,32,104,97,118,101,32,97,32,39,108,101,118, + 101,108,39,32,111,102,32,50,41,46,10,10,32,32,32,32, + 114,19,0,0,0,78,114,117,0,0,0,41,8,114,182,0, + 0,0,114,193,0,0,0,218,9,112,97,114,116,105,116,105, + 111,110,114,159,0,0,0,114,14,0,0,0,114,79,0,0, + 0,114,1,0,0,0,114,189,0,0,0,41,9,114,15,0, + 0,0,114,192,0,0,0,218,6,108,111,99,97,108,115,114, + 187,0,0,0,114,162,0,0,0,114,83,0,0,0,90,8, + 103,108,111,98,97,108,115,95,114,161,0,0,0,90,7,99, + 117,116,95,111,102,102,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,10,95,95,105,109,112,111,114,116,95, + 95,23,4,0,0,115,26,0,0,0,0,11,8,1,10,2, + 16,1,8,1,12,1,4,3,8,1,18,1,4,1,4,4, + 26,3,32,2,114,196,0,0,0,99,1,0,0,0,0,0, + 0,0,2,0,0,0,3,0,0,0,67,0,0,0,115,38, + 0,0,0,116,0,160,1,124,0,161,1,125,1,124,1,100, + 0,107,8,114,30,116,2,100,1,124,0,23,0,131,1,130, + 1,116,3,124,1,131,1,83,0,41,2,78,122,25,110,111, + 32,98,117,105,108,116,45,105,110,32,109,111,100,117,108,101, + 32,110,97,109,101,100,32,41,4,114,142,0,0,0,114,146, + 0,0,0,114,70,0,0,0,114,141,0,0,0,41,2,114, + 15,0,0,0,114,82,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,18,95,98,117,105,108,116, + 105,110,95,102,114,111,109,95,110,97,109,101,58,4,0,0, + 115,8,0,0,0,0,1,10,1,8,1,12,1,114,197,0, + 0,0,99,2,0,0,0,0,0,0,0,12,0,0,0,12, + 0,0,0,67,0,0,0,115,244,0,0,0,124,1,97,0, + 124,0,97,1,116,2,116,1,131,1,125,2,120,86,116,1, + 106,3,160,4,161,0,68,0,93,72,92,2,125,3,125,4, + 116,5,124,4,124,2,131,2,114,28,124,3,116,1,106,6, + 107,6,114,62,116,7,125,5,110,18,116,0,160,8,124,3, + 161,1,114,28,116,9,125,5,110,2,113,28,116,10,124,4, + 124,5,131,2,125,6,116,11,124,6,124,4,131,2,1,0, + 113,28,87,0,116,1,106,3,116,12,25,0,125,7,120,54, + 100,5,68,0,93,46,125,8,124,8,116,1,106,3,107,7, + 114,144,116,13,124,8,131,1,125,9,110,10,116,1,106,3, + 124,8,25,0,125,9,116,14,124,7,124,8,124,9,131,3, + 1,0,113,120,87,0,121,12,116,13,100,2,131,1,125,10, + 87,0,110,24,4,0,116,15,107,10,114,206,1,0,1,0, + 1,0,100,3,125,10,89,0,110,2,88,0,116,14,124,7, + 100,2,124,10,131,3,1,0,116,13,100,4,131,1,125,11, + 116,14,124,7,100,4,124,11,131,3,1,0,100,3,83,0, + 41,6,122,250,83,101,116,117,112,32,105,109,112,111,114,116, + 108,105,98,32,98,121,32,105,109,112,111,114,116,105,110,103, + 32,110,101,101,100,101,100,32,98,117,105,108,116,45,105,110, + 32,109,111,100,117,108,101,115,32,97,110,100,32,105,110,106, + 101,99,116,105,110,103,32,116,104,101,109,10,32,32,32,32, + 105,110,116,111,32,116,104,101,32,103,108,111,98,97,108,32, + 110,97,109,101,115,112,97,99,101,46,10,10,32,32,32,32, + 65,115,32,115,121,115,32,105,115,32,110,101,101,100,101,100, + 32,102,111,114,32,115,121,115,46,109,111,100,117,108,101,115, + 32,97,99,99,101,115,115,32,97,110,100,32,95,105,109,112, + 32,105,115,32,110,101,101,100,101,100,32,116,111,32,108,111, + 97,100,32,98,117,105,108,116,45,105,110,10,32,32,32,32, + 109,111,100,117,108,101,115,44,32,116,104,111,115,101,32,116, + 119,111,32,109,111,100,117,108,101,115,32,109,117,115,116,32, + 98,101,32,101,120,112,108,105,99,105,116,108,121,32,112,97, + 115,115,101,100,32,105,110,46,10,10,32,32,32,32,114,167, + 0,0,0,114,20,0,0,0,78,114,55,0,0,0,41,1, + 114,167,0,0,0,41,16,114,46,0,0,0,114,14,0,0, + 0,114,13,0,0,0,114,79,0,0,0,218,5,105,116,101, + 109,115,114,171,0,0,0,114,69,0,0,0,114,142,0,0, + 0,114,75,0,0,0,114,152,0,0,0,114,128,0,0,0, + 114,133,0,0,0,114,1,0,0,0,114,197,0,0,0,114, + 5,0,0,0,114,70,0,0,0,41,12,218,10,115,121,115, + 95,109,111,100,117,108,101,218,11,95,105,109,112,95,109,111, + 100,117,108,101,90,11,109,111,100,117,108,101,95,116,121,112, + 101,114,15,0,0,0,114,83,0,0,0,114,93,0,0,0, + 114,82,0,0,0,90,11,115,101,108,102,95,109,111,100,117, + 108,101,90,12,98,117,105,108,116,105,110,95,110,97,109,101, + 90,14,98,117,105,108,116,105,110,95,109,111,100,117,108,101, + 90,13,116,104,114,101,97,100,95,109,111,100,117,108,101,90, + 14,119,101,97,107,114,101,102,95,109,111,100,117,108,101,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,6, + 95,115,101,116,117,112,65,4,0,0,115,50,0,0,0,0, + 9,4,1,4,3,8,1,20,1,10,1,10,1,6,1,10, + 1,6,2,2,1,10,1,14,3,10,1,10,1,10,1,10, + 2,10,1,16,3,2,1,12,1,14,2,10,1,12,3,8, + 1,114,201,0,0,0,99,2,0,0,0,0,0,0,0,2, + 0,0,0,3,0,0,0,67,0,0,0,115,38,0,0,0, + 116,0,124,0,124,1,131,2,1,0,116,1,106,2,160,3, + 116,4,161,1,1,0,116,1,106,2,160,3,116,5,161,1, + 1,0,100,1,83,0,41,2,122,48,73,110,115,116,97,108, + 108,32,105,109,112,111,114,116,101,114,115,32,102,111,114,32, + 98,117,105,108,116,105,110,32,97,110,100,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,115,78,41,6,114,201,0, + 0,0,114,14,0,0,0,114,166,0,0,0,114,109,0,0, + 0,114,142,0,0,0,114,152,0,0,0,41,2,114,199,0, + 0,0,114,200,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,8,95,105,110,115,116,97,108,108, + 112,4,0,0,115,6,0,0,0,0,2,10,2,12,1,114, + 202,0,0,0,99,0,0,0,0,0,0,0,0,1,0,0, + 0,4,0,0,0,67,0,0,0,115,32,0,0,0,100,1, + 100,2,108,0,125,0,124,0,97,1,124,0,160,2,116,3, + 106,4,116,5,25,0,161,1,1,0,100,2,83,0,41,3, + 122,57,73,110,115,116,97,108,108,32,105,109,112,111,114,116, + 101,114,115,32,116,104,97,116,32,114,101,113,117,105,114,101, + 32,101,120,116,101,114,110,97,108,32,102,105,108,101,115,121, + 115,116,101,109,32,97,99,99,101,115,115,114,19,0,0,0, + 78,41,6,218,26,95,102,114,111,122,101,110,95,105,109,112, + 111,114,116,108,105,98,95,101,120,116,101,114,110,97,108,114, + 115,0,0,0,114,202,0,0,0,114,14,0,0,0,114,79, + 0,0,0,114,1,0,0,0,41,1,114,203,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,27, + 95,105,110,115,116,97,108,108,95,101,120,116,101,114,110,97, + 108,95,105,109,112,111,114,116,101,114,115,120,4,0,0,115, + 6,0,0,0,0,3,8,1,4,1,114,204,0,0,0,41, + 2,78,78,41,1,78,41,2,78,114,19,0,0,0,41,51, + 114,3,0,0,0,114,115,0,0,0,114,12,0,0,0,114, + 16,0,0,0,114,51,0,0,0,114,29,0,0,0,114,36, + 0,0,0,114,17,0,0,0,114,18,0,0,0,114,41,0, + 0,0,114,42,0,0,0,114,45,0,0,0,114,56,0,0, + 0,114,58,0,0,0,114,68,0,0,0,114,74,0,0,0, + 114,77,0,0,0,114,84,0,0,0,114,95,0,0,0,114, + 96,0,0,0,114,102,0,0,0,114,78,0,0,0,218,6, + 111,98,106,101,99,116,90,9,95,80,79,80,85,76,65,84, + 69,114,128,0,0,0,114,133,0,0,0,114,136,0,0,0, + 114,91,0,0,0,114,80,0,0,0,114,140,0,0,0,114, + 141,0,0,0,114,81,0,0,0,114,142,0,0,0,114,152, + 0,0,0,114,157,0,0,0,114,163,0,0,0,114,165,0, + 0,0,114,170,0,0,0,114,175,0,0,0,90,15,95,69, + 82,82,95,77,83,71,95,80,82,69,70,73,88,114,177,0, + 0,0,114,180,0,0,0,114,181,0,0,0,114,182,0,0, + 0,114,189,0,0,0,114,193,0,0,0,114,196,0,0,0, + 114,197,0,0,0,114,201,0,0,0,114,202,0,0,0,114, + 204,0,0,0,114,10,0,0,0,114,10,0,0,0,114,10, + 0,0,0,114,11,0,0,0,218,8,60,109,111,100,117,108, + 101,62,25,0,0,0,115,96,0,0,0,4,0,4,2,8, + 8,8,7,4,2,4,3,16,4,14,68,14,21,14,19,8, + 19,8,19,8,11,14,8,8,11,8,12,8,16,8,36,14, + 27,14,101,16,26,6,3,10,45,14,60,8,17,8,17,8, + 25,8,29,8,23,8,16,14,73,14,77,14,13,8,9,8, + 9,10,47,8,20,4,1,8,2,8,27,8,6,10,25,8, + 31,8,27,18,35,8,7,8,47,8,8, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index 6b6b473460e332..1216a2c94d577d 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -425,2008 +425,2007 @@ const unsigned char _Py_M__importlib_external[] = { 6,1,10,1,10,1,8,1,6,1,10,1,8,1,16,1, 10,1,6,1,8,1,16,1,8,1,6,1,8,1,14,1, 114,89,0,0,0,99,1,0,0,0,0,0,0,0,5,0, - 0,0,12,0,0,0,67,0,0,0,115,128,0,0,0,116, + 0,0,12,0,0,0,67,0,0,0,115,126,0,0,0,116, 0,124,0,131,1,100,1,107,2,114,16,100,2,83,0,124, 0,160,1,100,3,161,1,92,3,125,1,125,2,125,3,124, - 1,12,0,115,58,124,3,160,2,161,0,100,7,100,8,133, - 2,25,0,100,6,107,3,114,62,124,0,83,0,121,12,116, - 3,124,0,131,1,125,4,87,0,110,36,4,0,116,4,116, - 5,102,2,107,10,114,110,1,0,1,0,1,0,124,0,100, - 2,100,9,133,2,25,0,125,4,89,0,110,2,88,0,116, - 6,124,4,131,1,114,124,124,4,83,0,124,0,83,0,41, - 10,122,188,67,111,110,118,101,114,116,32,97,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,32,112,97,116,104,32, - 116,111,32,97,32,115,111,117,114,99,101,32,112,97,116,104, - 32,40,105,102,32,112,111,115,115,105,98,108,101,41,46,10, - 10,32,32,32,32,84,104,105,115,32,102,117,110,99,116,105, - 111,110,32,101,120,105,115,116,115,32,112,117,114,101,108,121, - 32,102,111,114,32,98,97,99,107,119,97,114,100,115,45,99, - 111,109,112,97,116,105,98,105,108,105,116,121,32,102,111,114, - 10,32,32,32,32,80,121,73,109,112,111,114,116,95,69,120, - 101,99,67,111,100,101,77,111,100,117,108,101,87,105,116,104, - 70,105,108,101,110,97,109,101,115,40,41,32,105,110,32,116, - 104,101,32,67,32,65,80,73,46,10,10,32,32,32,32,114, - 62,0,0,0,78,114,61,0,0,0,114,84,0,0,0,114, - 31,0,0,0,90,2,112,121,233,253,255,255,255,233,255,255, - 255,255,114,91,0,0,0,41,7,114,33,0,0,0,114,34, - 0,0,0,218,5,108,111,119,101,114,114,89,0,0,0,114, - 70,0,0,0,114,75,0,0,0,114,46,0,0,0,41,5, - 218,13,98,121,116,101,99,111,100,101,95,112,97,116,104,114, - 82,0,0,0,114,38,0,0,0,90,9,101,120,116,101,110, - 115,105,111,110,218,11,115,111,117,114,99,101,95,112,97,116, - 104,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 218,15,95,103,101,116,95,115,111,117,114,99,101,102,105,108, - 101,87,1,0,0,115,20,0,0,0,0,7,12,1,4,1, - 16,1,26,1,4,1,2,1,12,1,18,1,18,1,114,95, - 0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0, - 11,0,0,0,67,0,0,0,115,72,0,0,0,124,0,160, - 0,116,1,116,2,131,1,161,1,114,46,121,8,116,3,124, - 0,131,1,83,0,4,0,116,4,107,10,114,42,1,0,1, - 0,1,0,89,0,113,68,88,0,110,22,124,0,160,0,116, - 1,116,5,131,1,161,1,114,64,124,0,83,0,100,0,83, - 0,100,0,83,0,41,1,78,41,6,218,8,101,110,100,115, - 119,105,116,104,218,5,116,117,112,108,101,114,88,0,0,0, - 114,83,0,0,0,114,70,0,0,0,114,78,0,0,0,41, - 1,218,8,102,105,108,101,110,97,109,101,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,11,95,103,101,116, - 95,99,97,99,104,101,100,106,1,0,0,115,16,0,0,0, - 0,1,14,1,2,1,8,1,14,1,8,1,14,1,4,2, - 114,99,0,0,0,99,1,0,0,0,0,0,0,0,2,0, - 0,0,11,0,0,0,67,0,0,0,115,52,0,0,0,121, - 14,116,0,124,0,131,1,106,1,125,1,87,0,110,24,4, - 0,116,2,107,10,114,38,1,0,1,0,1,0,100,1,125, - 1,89,0,110,2,88,0,124,1,100,2,79,0,125,1,124, - 1,83,0,41,3,122,51,67,97,108,99,117,108,97,116,101, - 32,116,104,101,32,109,111,100,101,32,112,101,114,109,105,115, - 115,105,111,110,115,32,102,111,114,32,97,32,98,121,116,101, - 99,111,100,101,32,102,105,108,101,46,105,182,1,0,0,233, - 128,0,0,0,41,3,114,41,0,0,0,114,43,0,0,0, - 114,42,0,0,0,41,2,114,37,0,0,0,114,44,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 218,10,95,99,97,108,99,95,109,111,100,101,118,1,0,0, - 115,12,0,0,0,0,2,2,1,14,1,14,1,10,3,8, - 1,114,101,0,0,0,99,1,0,0,0,0,0,0,0,3, - 0,0,0,11,0,0,0,3,0,0,0,115,68,0,0,0, - 100,6,135,0,102,1,100,2,100,3,132,9,125,1,121,10, - 116,0,106,1,125,2,87,0,110,28,4,0,116,2,107,10, - 114,52,1,0,1,0,1,0,100,4,100,5,132,0,125,2, - 89,0,110,2,88,0,124,2,124,1,136,0,131,2,1,0, - 124,1,83,0,41,7,122,252,68,101,99,111,114,97,116,111, - 114,32,116,111,32,118,101,114,105,102,121,32,116,104,97,116, - 32,116,104,101,32,109,111,100,117,108,101,32,98,101,105,110, - 103,32,114,101,113,117,101,115,116,101,100,32,109,97,116,99, - 104,101,115,32,116,104,101,32,111,110,101,32,116,104,101,10, - 32,32,32,32,108,111,97,100,101,114,32,99,97,110,32,104, - 97,110,100,108,101,46,10,10,32,32,32,32,84,104,101,32, - 102,105,114,115,116,32,97,114,103,117,109,101,110,116,32,40, - 115,101,108,102,41,32,109,117,115,116,32,100,101,102,105,110, - 101,32,95,110,97,109,101,32,119,104,105,99,104,32,116,104, - 101,32,115,101,99,111,110,100,32,97,114,103,117,109,101,110, - 116,32,105,115,10,32,32,32,32,99,111,109,112,97,114,101, - 100,32,97,103,97,105,110,115,116,46,32,73,102,32,116,104, - 101,32,99,111,109,112,97,114,105,115,111,110,32,102,97,105, - 108,115,32,116,104,101,110,32,73,109,112,111,114,116,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,10, - 32,32,32,32,78,99,2,0,0,0,0,0,0,0,4,0, - 0,0,4,0,0,0,31,0,0,0,115,66,0,0,0,124, - 1,100,0,107,8,114,16,124,0,106,0,125,1,110,32,124, - 0,106,0,124,1,107,3,114,48,116,1,100,1,124,0,106, - 0,124,1,102,2,22,0,124,1,100,2,141,2,130,1,136, - 0,124,0,124,1,102,2,124,2,158,2,124,3,142,1,83, - 0,41,3,78,122,30,108,111,97,100,101,114,32,102,111,114, - 32,37,115,32,99,97,110,110,111,116,32,104,97,110,100,108, - 101,32,37,115,41,1,218,4,110,97,109,101,41,2,114,102, - 0,0,0,218,11,73,109,112,111,114,116,69,114,114,111,114, - 41,4,218,4,115,101,108,102,114,102,0,0,0,218,4,97, - 114,103,115,90,6,107,119,97,114,103,115,41,1,218,6,109, - 101,116,104,111,100,114,4,0,0,0,114,6,0,0,0,218, - 19,95,99,104,101,99,107,95,110,97,109,101,95,119,114,97, - 112,112,101,114,138,1,0,0,115,12,0,0,0,0,1,8, - 1,8,1,10,1,4,1,18,1,122,40,95,99,104,101,99, - 107,95,110,97,109,101,46,60,108,111,99,97,108,115,62,46, - 95,99,104,101,99,107,95,110,97,109,101,95,119,114,97,112, - 112,101,114,99,2,0,0,0,0,0,0,0,3,0,0,0, - 7,0,0,0,83,0,0,0,115,60,0,0,0,120,40,100, - 5,68,0,93,32,125,2,116,0,124,1,124,2,131,2,114, - 6,116,1,124,0,124,2,116,2,124,1,124,2,131,2,131, - 3,1,0,113,6,87,0,124,0,106,3,160,4,124,1,106, - 3,161,1,1,0,100,0,83,0,41,6,78,218,10,95,95, - 109,111,100,117,108,101,95,95,218,8,95,95,110,97,109,101, - 95,95,218,12,95,95,113,117,97,108,110,97,109,101,95,95, - 218,7,95,95,100,111,99,95,95,41,4,114,108,0,0,0, - 114,109,0,0,0,114,110,0,0,0,114,111,0,0,0,41, - 5,218,7,104,97,115,97,116,116,114,218,7,115,101,116,97, - 116,116,114,218,7,103,101,116,97,116,116,114,218,8,95,95, - 100,105,99,116,95,95,218,6,117,112,100,97,116,101,41,3, - 90,3,110,101,119,90,3,111,108,100,114,55,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,5, - 95,119,114,97,112,149,1,0,0,115,8,0,0,0,0,1, - 10,1,10,1,22,1,122,26,95,99,104,101,99,107,95,110, - 97,109,101,46,60,108,111,99,97,108,115,62,46,95,119,114, - 97,112,41,1,78,41,3,218,10,95,98,111,111,116,115,116, - 114,97,112,114,117,0,0,0,218,9,78,97,109,101,69,114, - 114,111,114,41,3,114,106,0,0,0,114,107,0,0,0,114, - 117,0,0,0,114,4,0,0,0,41,1,114,106,0,0,0, - 114,6,0,0,0,218,11,95,99,104,101,99,107,95,110,97, - 109,101,130,1,0,0,115,14,0,0,0,0,8,14,7,2, - 1,10,1,14,2,14,5,10,1,114,120,0,0,0,99,2, - 0,0,0,0,0,0,0,5,0,0,0,6,0,0,0,67, - 0,0,0,115,60,0,0,0,124,0,160,0,124,1,161,1, - 92,2,125,2,125,3,124,2,100,1,107,8,114,56,116,1, - 124,3,131,1,114,56,100,2,125,4,116,2,160,3,124,4, - 160,4,124,3,100,3,25,0,161,1,116,5,161,2,1,0, - 124,2,83,0,41,4,122,155,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,108,111,97,100,101,114,32,102,111,114, - 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,109, - 111,100,117,108,101,32,98,121,32,100,101,108,101,103,97,116, - 105,110,103,32,116,111,10,32,32,32,32,115,101,108,102,46, - 102,105,110,100,95,108,111,97,100,101,114,40,41,46,10,10, - 32,32,32,32,84,104,105,115,32,109,101,116,104,111,100,32, - 105,115,32,100,101,112,114,101,99,97,116,101,100,32,105,110, - 32,102,97,118,111,114,32,111,102,32,102,105,110,100,101,114, - 46,102,105,110,100,95,115,112,101,99,40,41,46,10,10,32, - 32,32,32,78,122,44,78,111,116,32,105,109,112,111,114,116, - 105,110,103,32,100,105,114,101,99,116,111,114,121,32,123,125, - 58,32,109,105,115,115,105,110,103,32,95,95,105,110,105,116, - 95,95,114,62,0,0,0,41,6,218,11,102,105,110,100,95, - 108,111,97,100,101,114,114,33,0,0,0,114,63,0,0,0, - 114,64,0,0,0,114,50,0,0,0,218,13,73,109,112,111, - 114,116,87,97,114,110,105,110,103,41,5,114,104,0,0,0, - 218,8,102,117,108,108,110,97,109,101,218,6,108,111,97,100, - 101,114,218,8,112,111,114,116,105,111,110,115,218,3,109,115, - 103,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 218,17,95,102,105,110,100,95,109,111,100,117,108,101,95,115, - 104,105,109,158,1,0,0,115,10,0,0,0,0,10,14,1, - 16,1,4,1,22,1,114,127,0,0,0,99,4,0,0,0, - 0,0,0,0,11,0,0,0,20,0,0,0,67,0,0,0, - 115,136,1,0,0,105,0,125,4,124,2,100,1,107,9,114, - 22,124,2,124,4,100,2,60,0,110,4,100,3,125,2,124, - 3,100,1,107,9,114,42,124,3,124,4,100,4,60,0,124, - 0,100,1,100,5,133,2,25,0,125,5,124,0,100,5,100, - 6,133,2,25,0,125,6,124,0,100,6,100,7,133,2,25, - 0,125,7,124,5,116,0,107,3,114,124,100,8,160,1,124, - 2,124,5,161,2,125,8,116,2,160,3,100,9,124,8,161, - 2,1,0,116,4,124,8,102,1,124,4,142,1,130,1,110, - 86,116,5,124,6,131,1,100,5,107,3,114,168,100,10,160, - 1,124,2,161,1,125,8,116,2,160,3,100,9,124,8,161, - 2,1,0,116,6,124,8,131,1,130,1,110,42,116,5,124, - 7,131,1,100,5,107,3,114,210,100,11,160,1,124,2,161, - 1,125,8,116,2,160,3,100,9,124,8,161,2,1,0,116, - 6,124,8,131,1,130,1,124,1,100,1,107,9,144,1,114, - 124,121,16,116,7,124,1,100,12,25,0,131,1,125,9,87, - 0,110,22,4,0,116,8,107,10,144,1,114,2,1,0,1, - 0,1,0,89,0,110,50,88,0,116,9,124,6,131,1,124, - 9,107,3,144,1,114,52,100,13,160,1,124,2,161,1,125, - 8,116,2,160,3,100,9,124,8,161,2,1,0,116,4,124, - 8,102,1,124,4,142,1,130,1,121,16,124,1,100,14,25, - 0,100,15,64,0,125,10,87,0,110,22,4,0,116,8,107, - 10,144,1,114,90,1,0,1,0,1,0,89,0,110,34,88, - 0,116,9,124,7,131,1,124,10,107,3,144,1,114,124,116, - 4,100,13,160,1,124,2,161,1,102,1,124,4,142,1,130, - 1,124,0,100,7,100,1,133,2,25,0,83,0,41,16,97, - 122,1,0,0,86,97,108,105,100,97,116,101,32,116,104,101, - 32,104,101,97,100,101,114,32,111,102,32,116,104,101,32,112, - 97,115,115,101,100,45,105,110,32,98,121,116,101,99,111,100, - 101,32,97,103,97,105,110,115,116,32,115,111,117,114,99,101, - 95,115,116,97,116,115,32,40,105,102,10,32,32,32,32,103, - 105,118,101,110,41,32,97,110,100,32,114,101,116,117,114,110, - 105,110,103,32,116,104,101,32,98,121,116,101,99,111,100,101, - 32,116,104,97,116,32,99,97,110,32,98,101,32,99,111,109, - 112,105,108,101,100,32,98,121,32,99,111,109,112,105,108,101, - 40,41,46,10,10,32,32,32,32,65,108,108,32,111,116,104, - 101,114,32,97,114,103,117,109,101,110,116,115,32,97,114,101, - 32,117,115,101,100,32,116,111,32,101,110,104,97,110,99,101, - 32,101,114,114,111,114,32,114,101,112,111,114,116,105,110,103, - 46,10,10,32,32,32,32,73,109,112,111,114,116,69,114,114, - 111,114,32,105,115,32,114,97,105,115,101,100,32,119,104,101, - 110,32,116,104,101,32,109,97,103,105,99,32,110,117,109,98, - 101,114,32,105,115,32,105,110,99,111,114,114,101,99,116,32, - 111,114,32,116,104,101,32,98,121,116,101,99,111,100,101,32, - 105,115,10,32,32,32,32,102,111,117,110,100,32,116,111,32, - 98,101,32,115,116,97,108,101,46,32,69,79,70,69,114,114, - 111,114,32,105,115,32,114,97,105,115,101,100,32,119,104,101, - 110,32,116,104,101,32,100,97,116,97,32,105,115,32,102,111, - 117,110,100,32,116,111,32,98,101,10,32,32,32,32,116,114, - 117,110,99,97,116,101,100,46,10,10,32,32,32,32,78,114, - 102,0,0,0,122,10,60,98,121,116,101,99,111,100,101,62, - 114,37,0,0,0,114,14,0,0,0,233,8,0,0,0,233, - 12,0,0,0,122,30,98,97,100,32,109,97,103,105,99,32, - 110,117,109,98,101,114,32,105,110,32,123,33,114,125,58,32, - 123,33,114,125,122,2,123,125,122,43,114,101,97,99,104,101, - 100,32,69,79,70,32,119,104,105,108,101,32,114,101,97,100, - 105,110,103,32,116,105,109,101,115,116,97,109,112,32,105,110, - 32,123,33,114,125,122,48,114,101,97,99,104,101,100,32,69, - 79,70,32,119,104,105,108,101,32,114,101,97,100,105,110,103, - 32,115,105,122,101,32,111,102,32,115,111,117,114,99,101,32, - 105,110,32,123,33,114,125,218,5,109,116,105,109,101,122,26, - 98,121,116,101,99,111,100,101,32,105,115,32,115,116,97,108, - 101,32,102,111,114,32,123,33,114,125,218,4,115,105,122,101, - 108,3,0,0,0,255,127,255,127,3,0,41,10,218,12,77, - 65,71,73,67,95,78,85,77,66,69,82,114,50,0,0,0, - 114,118,0,0,0,218,16,95,118,101,114,98,111,115,101,95, - 109,101,115,115,97,103,101,114,103,0,0,0,114,33,0,0, - 0,218,8,69,79,70,69,114,114,111,114,114,16,0,0,0, - 218,8,75,101,121,69,114,114,111,114,114,21,0,0,0,41, - 11,114,56,0,0,0,218,12,115,111,117,114,99,101,95,115, - 116,97,116,115,114,102,0,0,0,114,37,0,0,0,90,11, - 101,120,99,95,100,101,116,97,105,108,115,90,5,109,97,103, - 105,99,90,13,114,97,119,95,116,105,109,101,115,116,97,109, - 112,90,8,114,97,119,95,115,105,122,101,114,79,0,0,0, - 218,12,115,111,117,114,99,101,95,109,116,105,109,101,218,11, - 115,111,117,114,99,101,95,115,105,122,101,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,25,95,118,97,108, - 105,100,97,116,101,95,98,121,116,101,99,111,100,101,95,104, - 101,97,100,101,114,175,1,0,0,115,76,0,0,0,0,11, - 4,1,8,1,10,3,4,1,8,1,8,1,12,1,12,1, - 12,1,8,1,12,1,12,1,14,1,12,1,10,1,12,1, - 10,1,12,1,10,1,12,1,8,1,10,1,2,1,16,1, - 16,1,6,2,14,1,10,1,12,1,12,1,2,1,16,1, - 16,1,6,2,14,1,12,1,6,1,114,139,0,0,0,99, - 4,0,0,0,0,0,0,0,5,0,0,0,5,0,0,0, - 67,0,0,0,115,80,0,0,0,116,0,160,1,124,0,161, - 1,125,4,116,2,124,4,116,3,131,2,114,56,116,4,160, - 5,100,1,124,2,161,2,1,0,124,3,100,2,107,9,114, - 52,116,6,160,7,124,4,124,3,161,2,1,0,124,4,83, - 0,116,8,100,3,160,9,124,2,161,1,124,1,124,2,100, - 4,141,3,130,1,100,2,83,0,41,5,122,60,67,111,109, - 112,105,108,101,32,98,121,116,101,99,111,100,101,32,97,115, - 32,114,101,116,117,114,110,101,100,32,98,121,32,95,118,97, - 108,105,100,97,116,101,95,98,121,116,101,99,111,100,101,95, - 104,101,97,100,101,114,40,41,46,122,21,99,111,100,101,32, - 111,98,106,101,99,116,32,102,114,111,109,32,123,33,114,125, - 78,122,23,78,111,110,45,99,111,100,101,32,111,98,106,101, - 99,116,32,105,110,32,123,33,114,125,41,2,114,102,0,0, - 0,114,37,0,0,0,41,10,218,7,109,97,114,115,104,97, - 108,90,5,108,111,97,100,115,218,10,105,115,105,110,115,116, - 97,110,99,101,218,10,95,99,111,100,101,95,116,121,112,101, - 114,118,0,0,0,114,133,0,0,0,218,4,95,105,109,112, - 90,16,95,102,105,120,95,99,111,95,102,105,108,101,110,97, - 109,101,114,103,0,0,0,114,50,0,0,0,41,5,114,56, - 0,0,0,114,102,0,0,0,114,93,0,0,0,114,94,0, - 0,0,218,4,99,111,100,101,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,218,17,95,99,111,109,112,105,108, - 101,95,98,121,116,101,99,111,100,101,230,1,0,0,115,16, - 0,0,0,0,2,10,1,10,1,12,1,8,1,12,1,4, - 2,10,1,114,145,0,0,0,114,62,0,0,0,99,3,0, - 0,0,0,0,0,0,4,0,0,0,5,0,0,0,67,0, - 0,0,115,56,0,0,0,116,0,116,1,131,1,125,3,124, - 3,160,2,116,3,124,1,131,1,161,1,1,0,124,3,160, - 2,116,3,124,2,131,1,161,1,1,0,124,3,160,2,116, - 4,160,5,124,0,161,1,161,1,1,0,124,3,83,0,41, - 1,122,80,67,111,109,112,105,108,101,32,97,32,99,111,100, - 101,32,111,98,106,101,99,116,32,105,110,116,111,32,98,121, - 116,101,99,111,100,101,32,102,111,114,32,119,114,105,116,105, - 110,103,32,111,117,116,32,116,111,32,97,32,98,121,116,101, - 45,99,111,109,112,105,108,101,100,10,32,32,32,32,102,105, - 108,101,46,41,6,218,9,98,121,116,101,97,114,114,97,121, - 114,132,0,0,0,218,6,101,120,116,101,110,100,114,19,0, - 0,0,114,140,0,0,0,90,5,100,117,109,112,115,41,4, - 114,144,0,0,0,114,130,0,0,0,114,138,0,0,0,114, - 56,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,218,17,95,99,111,100,101,95,116,111,95,98,121, - 116,101,99,111,100,101,242,1,0,0,115,10,0,0,0,0, - 3,8,1,14,1,14,1,16,1,114,148,0,0,0,99,1, - 0,0,0,0,0,0,0,5,0,0,0,6,0,0,0,67, - 0,0,0,115,62,0,0,0,100,1,100,2,108,0,125,1, - 116,1,160,2,124,0,161,1,106,3,125,2,124,1,160,4, - 124,2,161,1,125,3,116,1,160,5,100,2,100,3,161,2, - 125,4,124,4,160,6,124,0,160,6,124,3,100,1,25,0, - 161,1,161,1,83,0,41,4,122,121,68,101,99,111,100,101, - 32,98,121,116,101,115,32,114,101,112,114,101,115,101,110,116, - 105,110,103,32,115,111,117,114,99,101,32,99,111,100,101,32, - 97,110,100,32,114,101,116,117,114,110,32,116,104,101,32,115, - 116,114,105,110,103,46,10,10,32,32,32,32,85,110,105,118, - 101,114,115,97,108,32,110,101,119,108,105,110,101,32,115,117, - 112,112,111,114,116,32,105,115,32,117,115,101,100,32,105,110, - 32,116,104,101,32,100,101,99,111,100,105,110,103,46,10,32, - 32,32,32,114,62,0,0,0,78,84,41,7,218,8,116,111, - 107,101,110,105,122,101,114,52,0,0,0,90,7,66,121,116, - 101,115,73,79,90,8,114,101,97,100,108,105,110,101,90,15, - 100,101,116,101,99,116,95,101,110,99,111,100,105,110,103,90, - 25,73,110,99,114,101,109,101,110,116,97,108,78,101,119,108, - 105,110,101,68,101,99,111,100,101,114,218,6,100,101,99,111, - 100,101,41,5,218,12,115,111,117,114,99,101,95,98,121,116, - 101,115,114,149,0,0,0,90,21,115,111,117,114,99,101,95, - 98,121,116,101,115,95,114,101,97,100,108,105,110,101,218,8, - 101,110,99,111,100,105,110,103,90,15,110,101,119,108,105,110, - 101,95,100,101,99,111,100,101,114,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,218,13,100,101,99,111,100,101, - 95,115,111,117,114,99,101,252,1,0,0,115,10,0,0,0, - 0,5,8,1,12,1,10,1,12,1,114,153,0,0,0,41, - 2,114,124,0,0,0,218,26,115,117,98,109,111,100,117,108, - 101,95,115,101,97,114,99,104,95,108,111,99,97,116,105,111, - 110,115,99,2,0,0,0,2,0,0,0,9,0,0,0,19, - 0,0,0,67,0,0,0,115,18,1,0,0,124,1,100,1, - 107,8,114,60,100,2,125,1,116,0,124,2,100,3,131,2, - 114,70,121,14,124,2,160,1,124,0,161,1,125,1,87,0, - 113,70,4,0,116,2,107,10,114,56,1,0,1,0,1,0, - 89,0,113,70,88,0,110,10,116,3,160,4,124,1,161,1, - 125,1,116,5,106,6,124,0,124,2,124,1,100,4,141,3, - 125,4,100,5,124,4,95,7,124,2,100,1,107,8,114,156, - 120,54,116,8,131,0,68,0,93,40,92,2,125,5,125,6, - 124,1,160,9,116,10,124,6,131,1,161,1,114,108,124,5, - 124,0,124,1,131,2,125,2,124,2,124,4,95,11,80,0, - 113,108,87,0,100,1,83,0,124,3,116,12,107,8,114,222, - 116,0,124,2,100,6,131,2,114,228,121,14,124,2,160,13, - 124,0,161,1,125,7,87,0,110,20,4,0,116,2,107,10, - 114,208,1,0,1,0,1,0,89,0,113,228,88,0,124,7, - 114,228,103,0,124,4,95,14,110,6,124,3,124,4,95,14, - 124,4,106,14,103,0,107,2,144,1,114,14,124,1,144,1, - 114,14,116,15,124,1,131,1,100,7,25,0,125,8,124,4, - 106,14,160,16,124,8,161,1,1,0,124,4,83,0,41,8, - 97,61,1,0,0,82,101,116,117,114,110,32,97,32,109,111, - 100,117,108,101,32,115,112,101,99,32,98,97,115,101,100,32, - 111,110,32,97,32,102,105,108,101,32,108,111,99,97,116,105, - 111,110,46,10,10,32,32,32,32,84,111,32,105,110,100,105, - 99,97,116,101,32,116,104,97,116,32,116,104,101,32,109,111, - 100,117,108,101,32,105,115,32,97,32,112,97,99,107,97,103, - 101,44,32,115,101,116,10,32,32,32,32,115,117,98,109,111, - 100,117,108,101,95,115,101,97,114,99,104,95,108,111,99,97, - 116,105,111,110,115,32,116,111,32,97,32,108,105,115,116,32, - 111,102,32,100,105,114,101,99,116,111,114,121,32,112,97,116, - 104,115,46,32,32,65,110,10,32,32,32,32,101,109,112,116, - 121,32,108,105,115,116,32,105,115,32,115,117,102,102,105,99, - 105,101,110,116,44,32,116,104,111,117,103,104,32,105,116,115, - 32,110,111,116,32,111,116,104,101,114,119,105,115,101,32,117, - 115,101,102,117,108,32,116,111,32,116,104,101,10,32,32,32, - 32,105,109,112,111,114,116,32,115,121,115,116,101,109,46,10, - 10,32,32,32,32,84,104,101,32,108,111,97,100,101,114,32, - 109,117,115,116,32,116,97,107,101,32,97,32,115,112,101,99, - 32,97,115,32,105,116,115,32,111,110,108,121,32,95,95,105, - 110,105,116,95,95,40,41,32,97,114,103,46,10,10,32,32, - 32,32,78,122,9,60,117,110,107,110,111,119,110,62,218,12, - 103,101,116,95,102,105,108,101,110,97,109,101,41,1,218,6, - 111,114,105,103,105,110,84,218,10,105,115,95,112,97,99,107, - 97,103,101,114,62,0,0,0,41,17,114,112,0,0,0,114, - 155,0,0,0,114,103,0,0,0,114,3,0,0,0,114,67, - 0,0,0,114,118,0,0,0,218,10,77,111,100,117,108,101, - 83,112,101,99,90,13,95,115,101,116,95,102,105,108,101,97, - 116,116,114,218,27,95,103,101,116,95,115,117,112,112,111,114, - 116,101,100,95,102,105,108,101,95,108,111,97,100,101,114,115, - 114,96,0,0,0,114,97,0,0,0,114,124,0,0,0,218, - 9,95,80,79,80,85,76,65,84,69,114,157,0,0,0,114, - 154,0,0,0,114,40,0,0,0,218,6,97,112,112,101,110, - 100,41,9,114,102,0,0,0,90,8,108,111,99,97,116,105, - 111,110,114,124,0,0,0,114,154,0,0,0,218,4,115,112, - 101,99,218,12,108,111,97,100,101,114,95,99,108,97,115,115, - 218,8,115,117,102,102,105,120,101,115,114,157,0,0,0,90, - 7,100,105,114,110,97,109,101,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,218,23,115,112,101,99,95,102,114, - 111,109,95,102,105,108,101,95,108,111,99,97,116,105,111,110, - 13,2,0,0,115,62,0,0,0,0,12,8,4,4,1,10, - 2,2,1,14,1,14,1,8,2,10,8,16,1,6,3,8, - 1,16,1,14,1,10,1,6,1,6,2,4,3,8,2,10, - 1,2,1,14,1,14,1,6,2,4,1,8,2,6,1,12, - 1,6,1,12,1,12,2,114,165,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, - 0,115,80,0,0,0,101,0,90,1,100,0,90,2,100,1, - 90,3,100,2,90,4,100,3,90,5,100,4,90,6,101,7, - 100,5,100,6,132,0,131,1,90,8,101,7,100,7,100,8, - 132,0,131,1,90,9,101,7,100,14,100,10,100,11,132,1, - 131,1,90,10,101,7,100,15,100,12,100,13,132,1,131,1, - 90,11,100,9,83,0,41,16,218,21,87,105,110,100,111,119, - 115,82,101,103,105,115,116,114,121,70,105,110,100,101,114,122, - 62,77,101,116,97,32,112,97,116,104,32,102,105,110,100,101, - 114,32,102,111,114,32,109,111,100,117,108,101,115,32,100,101, - 99,108,97,114,101,100,32,105,110,32,116,104,101,32,87,105, - 110,100,111,119,115,32,114,101,103,105,115,116,114,121,46,122, - 59,83,111,102,116,119,97,114,101,92,80,121,116,104,111,110, - 92,80,121,116,104,111,110,67,111,114,101,92,123,115,121,115, - 95,118,101,114,115,105,111,110,125,92,77,111,100,117,108,101, - 115,92,123,102,117,108,108,110,97,109,101,125,122,65,83,111, - 102,116,119,97,114,101,92,80,121,116,104,111,110,92,80,121, - 116,104,111,110,67,111,114,101,92,123,115,121,115,95,118,101, - 114,115,105,111,110,125,92,77,111,100,117,108,101,115,92,123, - 102,117,108,108,110,97,109,101,125,92,68,101,98,117,103,70, - 99,2,0,0,0,0,0,0,0,2,0,0,0,11,0,0, - 0,67,0,0,0,115,50,0,0,0,121,14,116,0,160,1, - 116,0,106,2,124,1,161,2,83,0,4,0,116,3,107,10, - 114,44,1,0,1,0,1,0,116,0,160,1,116,0,106,4, - 124,1,161,2,83,0,88,0,100,0,83,0,41,1,78,41, - 5,218,7,95,119,105,110,114,101,103,90,7,79,112,101,110, - 75,101,121,90,17,72,75,69,89,95,67,85,82,82,69,78, - 84,95,85,83,69,82,114,42,0,0,0,90,18,72,75,69, - 89,95,76,79,67,65,76,95,77,65,67,72,73,78,69,41, - 2,218,3,99,108,115,114,5,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,14,95,111,112,101, - 110,95,114,101,103,105,115,116,114,121,93,2,0,0,115,8, - 0,0,0,0,2,2,1,14,1,14,1,122,36,87,105,110, - 100,111,119,115,82,101,103,105,115,116,114,121,70,105,110,100, - 101,114,46,95,111,112,101,110,95,114,101,103,105,115,116,114, - 121,99,2,0,0,0,0,0,0,0,6,0,0,0,17,0, - 0,0,67,0,0,0,115,112,0,0,0,124,0,106,0,114, - 14,124,0,106,1,125,2,110,6,124,0,106,2,125,2,124, - 2,106,3,124,1,100,1,116,4,106,5,100,0,100,2,133, - 2,25,0,22,0,100,3,141,2,125,3,121,38,124,0,160, - 6,124,3,161,1,143,18,125,4,116,7,160,8,124,4,100, - 4,161,2,125,5,87,0,100,0,81,0,82,0,88,0,87, - 0,110,20,4,0,116,9,107,10,114,106,1,0,1,0,1, - 0,100,0,83,0,88,0,124,5,83,0,41,5,78,122,5, - 37,100,46,37,100,114,59,0,0,0,41,2,114,123,0,0, - 0,90,11,115,121,115,95,118,101,114,115,105,111,110,114,32, - 0,0,0,41,10,218,11,68,69,66,85,71,95,66,85,73, - 76,68,218,18,82,69,71,73,83,84,82,89,95,75,69,89, - 95,68,69,66,85,71,218,12,82,69,71,73,83,84,82,89, - 95,75,69,89,114,50,0,0,0,114,8,0,0,0,218,12, - 118,101,114,115,105,111,110,95,105,110,102,111,114,169,0,0, - 0,114,167,0,0,0,90,10,81,117,101,114,121,86,97,108, - 117,101,114,42,0,0,0,41,6,114,168,0,0,0,114,123, - 0,0,0,90,12,114,101,103,105,115,116,114,121,95,107,101, - 121,114,5,0,0,0,90,4,104,107,101,121,218,8,102,105, - 108,101,112,97,116,104,114,4,0,0,0,114,4,0,0,0, - 114,6,0,0,0,218,16,95,115,101,97,114,99,104,95,114, - 101,103,105,115,116,114,121,100,2,0,0,115,22,0,0,0, - 0,2,6,1,8,2,6,1,6,1,22,1,2,1,12,1, - 26,1,14,1,6,1,122,38,87,105,110,100,111,119,115,82, - 101,103,105,115,116,114,121,70,105,110,100,101,114,46,95,115, - 101,97,114,99,104,95,114,101,103,105,115,116,114,121,78,99, - 4,0,0,0,0,0,0,0,8,0,0,0,14,0,0,0, - 67,0,0,0,115,120,0,0,0,124,0,160,0,124,1,161, - 1,125,4,124,4,100,0,107,8,114,22,100,0,83,0,121, - 12,116,1,124,4,131,1,1,0,87,0,110,20,4,0,116, - 2,107,10,114,54,1,0,1,0,1,0,100,0,83,0,88, - 0,120,58,116,3,131,0,68,0,93,48,92,2,125,5,125, - 6,124,4,160,4,116,5,124,6,131,1,161,1,114,64,116, - 6,106,7,124,1,124,5,124,1,124,4,131,2,124,4,100, - 1,141,3,125,7,124,7,83,0,113,64,87,0,100,0,83, - 0,41,2,78,41,1,114,156,0,0,0,41,8,114,175,0, - 0,0,114,41,0,0,0,114,42,0,0,0,114,159,0,0, - 0,114,96,0,0,0,114,97,0,0,0,114,118,0,0,0, - 218,16,115,112,101,99,95,102,114,111,109,95,108,111,97,100, - 101,114,41,8,114,168,0,0,0,114,123,0,0,0,114,37, - 0,0,0,218,6,116,97,114,103,101,116,114,174,0,0,0, - 114,124,0,0,0,114,164,0,0,0,114,162,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,9, - 102,105,110,100,95,115,112,101,99,115,2,0,0,115,26,0, - 0,0,0,2,10,1,8,1,4,1,2,1,12,1,14,1, - 6,1,16,1,14,1,6,1,8,1,8,1,122,31,87,105, - 110,100,111,119,115,82,101,103,105,115,116,114,121,70,105,110, - 100,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, - 0,0,0,0,0,0,4,0,0,0,4,0,0,0,67,0, - 0,0,115,34,0,0,0,124,0,160,0,124,1,124,2,161, - 2,125,3,124,3,100,1,107,9,114,26,124,3,106,1,83, - 0,100,1,83,0,100,1,83,0,41,2,122,108,70,105,110, - 100,32,109,111,100,117,108,101,32,110,97,109,101,100,32,105, - 110,32,116,104,101,32,114,101,103,105,115,116,114,121,46,10, - 10,32,32,32,32,32,32,32,32,84,104,105,115,32,109,101, - 116,104,111,100,32,105,115,32,100,101,112,114,101,99,97,116, - 101,100,46,32,32,85,115,101,32,101,120,101,99,95,109,111, - 100,117,108,101,40,41,32,105,110,115,116,101,97,100,46,10, - 10,32,32,32,32,32,32,32,32,78,41,2,114,178,0,0, - 0,114,124,0,0,0,41,4,114,168,0,0,0,114,123,0, - 0,0,114,37,0,0,0,114,162,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,6,0,0,0,218,11,102,105,110, - 100,95,109,111,100,117,108,101,131,2,0,0,115,8,0,0, - 0,0,7,12,1,8,1,6,2,122,33,87,105,110,100,111, - 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,41,2,78,78, - 41,1,78,41,12,114,109,0,0,0,114,108,0,0,0,114, - 110,0,0,0,114,111,0,0,0,114,172,0,0,0,114,171, - 0,0,0,114,170,0,0,0,218,11,99,108,97,115,115,109, - 101,116,104,111,100,114,169,0,0,0,114,175,0,0,0,114, - 178,0,0,0,114,179,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,6,0,0,0,114,166,0, - 0,0,81,2,0,0,115,18,0,0,0,12,5,4,3,4, - 2,4,2,12,7,12,15,2,1,12,15,2,1,114,166,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,2, - 0,0,0,64,0,0,0,115,48,0,0,0,101,0,90,1, - 100,0,90,2,100,1,90,3,100,2,100,3,132,0,90,4, - 100,4,100,5,132,0,90,5,100,6,100,7,132,0,90,6, - 100,8,100,9,132,0,90,7,100,10,83,0,41,11,218,13, - 95,76,111,97,100,101,114,66,97,115,105,99,115,122,83,66, - 97,115,101,32,99,108,97,115,115,32,111,102,32,99,111,109, - 109,111,110,32,99,111,100,101,32,110,101,101,100,101,100,32, - 98,121,32,98,111,116,104,32,83,111,117,114,99,101,76,111, - 97,100,101,114,32,97,110,100,10,32,32,32,32,83,111,117, - 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, - 114,46,99,2,0,0,0,0,0,0,0,5,0,0,0,4, - 0,0,0,67,0,0,0,115,64,0,0,0,116,0,124,0, - 160,1,124,1,161,1,131,1,100,1,25,0,125,2,124,2, - 160,2,100,2,100,1,161,2,100,3,25,0,125,3,124,1, - 160,3,100,2,161,1,100,4,25,0,125,4,124,3,100,5, - 107,2,111,62,124,4,100,5,107,3,83,0,41,6,122,141, - 67,111,110,99,114,101,116,101,32,105,109,112,108,101,109,101, - 110,116,97,116,105,111,110,32,111,102,32,73,110,115,112,101, - 99,116,76,111,97,100,101,114,46,105,115,95,112,97,99,107, - 97,103,101,32,98,121,32,99,104,101,99,107,105,110,103,32, - 105,102,10,32,32,32,32,32,32,32,32,116,104,101,32,112, - 97,116,104,32,114,101,116,117,114,110,101,100,32,98,121,32, - 103,101,116,95,102,105,108,101,110,97,109,101,32,104,97,115, - 32,97,32,102,105,108,101,110,97,109,101,32,111,102,32,39, - 95,95,105,110,105,116,95,95,46,112,121,39,46,114,31,0, - 0,0,114,61,0,0,0,114,62,0,0,0,114,59,0,0, - 0,218,8,95,95,105,110,105,116,95,95,41,4,114,40,0, - 0,0,114,155,0,0,0,114,36,0,0,0,114,34,0,0, - 0,41,5,114,104,0,0,0,114,123,0,0,0,114,98,0, - 0,0,90,13,102,105,108,101,110,97,109,101,95,98,97,115, - 101,90,9,116,97,105,108,95,110,97,109,101,114,4,0,0, - 0,114,4,0,0,0,114,6,0,0,0,114,157,0,0,0, - 150,2,0,0,115,8,0,0,0,0,3,18,1,16,1,14, - 1,122,24,95,76,111,97,100,101,114,66,97,115,105,99,115, - 46,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0, - 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,4,0,0,0,100,1,83,0,41,2,122,42,85,115,101, - 32,100,101,102,97,117,108,116,32,115,101,109,97,110,116,105, - 99,115,32,102,111,114,32,109,111,100,117,108,101,32,99,114, - 101,97,116,105,111,110,46,78,114,4,0,0,0,41,2,114, - 104,0,0,0,114,162,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,218,13,99,114,101,97,116,101, - 95,109,111,100,117,108,101,158,2,0,0,115,0,0,0,0, - 122,27,95,76,111,97,100,101,114,66,97,115,105,99,115,46, - 99,114,101,97,116,101,95,109,111,100,117,108,101,99,2,0, - 0,0,0,0,0,0,3,0,0,0,5,0,0,0,67,0, - 0,0,115,56,0,0,0,124,0,160,0,124,1,106,1,161, - 1,125,2,124,2,100,1,107,8,114,36,116,2,100,2,160, - 3,124,1,106,1,161,1,131,1,130,1,116,4,160,5,116, - 6,124,2,124,1,106,7,161,3,1,0,100,1,83,0,41, - 3,122,19,69,120,101,99,117,116,101,32,116,104,101,32,109, - 111,100,117,108,101,46,78,122,52,99,97,110,110,111,116,32, - 108,111,97,100,32,109,111,100,117,108,101,32,123,33,114,125, - 32,119,104,101,110,32,103,101,116,95,99,111,100,101,40,41, - 32,114,101,116,117,114,110,115,32,78,111,110,101,41,8,218, - 8,103,101,116,95,99,111,100,101,114,109,0,0,0,114,103, - 0,0,0,114,50,0,0,0,114,118,0,0,0,218,25,95, - 99,97,108,108,95,119,105,116,104,95,102,114,97,109,101,115, - 95,114,101,109,111,118,101,100,218,4,101,120,101,99,114,115, - 0,0,0,41,3,114,104,0,0,0,218,6,109,111,100,117, - 108,101,114,144,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,6,0,0,0,218,11,101,120,101,99,95,109,111,100, - 117,108,101,161,2,0,0,115,10,0,0,0,0,2,12,1, - 8,1,6,1,10,1,122,25,95,76,111,97,100,101,114,66, - 97,115,105,99,115,46,101,120,101,99,95,109,111,100,117,108, - 101,99,2,0,0,0,0,0,0,0,2,0,0,0,4,0, - 0,0,67,0,0,0,115,12,0,0,0,116,0,160,1,124, - 0,124,1,161,2,83,0,41,1,122,26,84,104,105,115,32, - 109,111,100,117,108,101,32,105,115,32,100,101,112,114,101,99, - 97,116,101,100,46,41,2,114,118,0,0,0,218,17,95,108, - 111,97,100,95,109,111,100,117,108,101,95,115,104,105,109,41, - 2,114,104,0,0,0,114,123,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,11,108,111,97,100, - 95,109,111,100,117,108,101,169,2,0,0,115,2,0,0,0, - 0,2,122,25,95,76,111,97,100,101,114,66,97,115,105,99, - 115,46,108,111,97,100,95,109,111,100,117,108,101,78,41,8, - 114,109,0,0,0,114,108,0,0,0,114,110,0,0,0,114, - 111,0,0,0,114,157,0,0,0,114,183,0,0,0,114,188, - 0,0,0,114,190,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,114,181,0,0, - 0,145,2,0,0,115,8,0,0,0,12,5,8,8,8,3, - 8,8,114,181,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,64,0,0,0,115,74,0,0, - 0,101,0,90,1,100,0,90,2,100,1,100,2,132,0,90, - 3,100,3,100,4,132,0,90,4,100,5,100,6,132,0,90, - 5,100,7,100,8,132,0,90,6,100,9,100,10,132,0,90, - 7,100,18,100,12,156,1,100,13,100,14,132,2,90,8,100, - 15,100,16,132,0,90,9,100,17,83,0,41,19,218,12,83, - 111,117,114,99,101,76,111,97,100,101,114,99,2,0,0,0, - 0,0,0,0,2,0,0,0,1,0,0,0,67,0,0,0, - 115,8,0,0,0,116,0,130,1,100,1,83,0,41,2,122, - 178,79,112,116,105,111,110,97,108,32,109,101,116,104,111,100, - 32,116,104,97,116,32,114,101,116,117,114,110,115,32,116,104, - 101,32,109,111,100,105,102,105,99,97,116,105,111,110,32,116, - 105,109,101,32,40,97,110,32,105,110,116,41,32,102,111,114, - 32,116,104,101,10,32,32,32,32,32,32,32,32,115,112,101, - 99,105,102,105,101,100,32,112,97,116,104,44,32,119,104,101, - 114,101,32,112,97,116,104,32,105,115,32,97,32,115,116,114, - 46,10,10,32,32,32,32,32,32,32,32,82,97,105,115,101, - 115,32,79,83,69,114,114,111,114,32,119,104,101,110,32,116, - 104,101,32,112,97,116,104,32,99,97,110,110,111,116,32,98, - 101,32,104,97,110,100,108,101,100,46,10,32,32,32,32,32, - 32,32,32,78,41,1,114,42,0,0,0,41,2,114,104,0, - 0,0,114,37,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,6,0,0,0,218,10,112,97,116,104,95,109,116,105, - 109,101,176,2,0,0,115,2,0,0,0,0,6,122,23,83, - 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, - 95,109,116,105,109,101,99,2,0,0,0,0,0,0,0,2, - 0,0,0,4,0,0,0,67,0,0,0,115,14,0,0,0, - 100,1,124,0,160,0,124,1,161,1,105,1,83,0,41,2, - 97,170,1,0,0,79,112,116,105,111,110,97,108,32,109,101, - 116,104,111,100,32,114,101,116,117,114,110,105,110,103,32,97, - 32,109,101,116,97,100,97,116,97,32,100,105,99,116,32,102, - 111,114,32,116,104,101,32,115,112,101,99,105,102,105,101,100, - 32,112,97,116,104,10,32,32,32,32,32,32,32,32,116,111, - 32,98,121,32,116,104,101,32,112,97,116,104,32,40,115,116, - 114,41,46,10,32,32,32,32,32,32,32,32,80,111,115,115, - 105,98,108,101,32,107,101,121,115,58,10,32,32,32,32,32, - 32,32,32,45,32,39,109,116,105,109,101,39,32,40,109,97, - 110,100,97,116,111,114,121,41,32,105,115,32,116,104,101,32, - 110,117,109,101,114,105,99,32,116,105,109,101,115,116,97,109, - 112,32,111,102,32,108,97,115,116,32,115,111,117,114,99,101, - 10,32,32,32,32,32,32,32,32,32,32,99,111,100,101,32, - 109,111,100,105,102,105,99,97,116,105,111,110,59,10,32,32, - 32,32,32,32,32,32,45,32,39,115,105,122,101,39,32,40, - 111,112,116,105,111,110,97,108,41,32,105,115,32,116,104,101, - 32,115,105,122,101,32,105,110,32,98,121,116,101,115,32,111, - 102,32,116,104,101,32,115,111,117,114,99,101,32,99,111,100, - 101,46,10,10,32,32,32,32,32,32,32,32,73,109,112,108, - 101,109,101,110,116,105,110,103,32,116,104,105,115,32,109,101, - 116,104,111,100,32,97,108,108,111,119,115,32,116,104,101,32, - 108,111,97,100,101,114,32,116,111,32,114,101,97,100,32,98, - 121,116,101,99,111,100,101,32,102,105,108,101,115,46,10,32, - 32,32,32,32,32,32,32,82,97,105,115,101,115,32,79,83, - 69,114,114,111,114,32,119,104,101,110,32,116,104,101,32,112, - 97,116,104,32,99,97,110,110,111,116,32,98,101,32,104,97, - 110,100,108,101,100,46,10,32,32,32,32,32,32,32,32,114, - 130,0,0,0,41,1,114,192,0,0,0,41,2,114,104,0, - 0,0,114,37,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,6,0,0,0,218,10,112,97,116,104,95,115,116,97, - 116,115,184,2,0,0,115,2,0,0,0,0,11,122,23,83, - 111,117,114,99,101,76,111,97,100,101,114,46,112,97,116,104, - 95,115,116,97,116,115,99,4,0,0,0,0,0,0,0,4, - 0,0,0,4,0,0,0,67,0,0,0,115,12,0,0,0, - 124,0,160,0,124,2,124,3,161,2,83,0,41,1,122,228, - 79,112,116,105,111,110,97,108,32,109,101,116,104,111,100,32, - 119,104,105,99,104,32,119,114,105,116,101,115,32,100,97,116, - 97,32,40,98,121,116,101,115,41,32,116,111,32,97,32,102, - 105,108,101,32,112,97,116,104,32,40,97,32,115,116,114,41, - 46,10,10,32,32,32,32,32,32,32,32,73,109,112,108,101, - 109,101,110,116,105,110,103,32,116,104,105,115,32,109,101,116, - 104,111,100,32,97,108,108,111,119,115,32,102,111,114,32,116, - 104,101,32,119,114,105,116,105,110,103,32,111,102,32,98,121, - 116,101,99,111,100,101,32,102,105,108,101,115,46,10,10,32, - 32,32,32,32,32,32,32,84,104,101,32,115,111,117,114,99, - 101,32,112,97,116,104,32,105,115,32,110,101,101,100,101,100, - 32,105,110,32,111,114,100,101,114,32,116,111,32,99,111,114, - 114,101,99,116,108,121,32,116,114,97,110,115,102,101,114,32, - 112,101,114,109,105,115,115,105,111,110,115,10,32,32,32,32, - 32,32,32,32,41,1,218,8,115,101,116,95,100,97,116,97, - 41,4,114,104,0,0,0,114,94,0,0,0,90,10,99,97, - 99,104,101,95,112,97,116,104,114,56,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,218,15,95,99, - 97,99,104,101,95,98,121,116,101,99,111,100,101,197,2,0, - 0,115,2,0,0,0,0,8,122,28,83,111,117,114,99,101, - 76,111,97,100,101,114,46,95,99,97,99,104,101,95,98,121, - 116,101,99,111,100,101,99,3,0,0,0,0,0,0,0,3, - 0,0,0,1,0,0,0,67,0,0,0,115,4,0,0,0, - 100,1,83,0,41,2,122,150,79,112,116,105,111,110,97,108, - 32,109,101,116,104,111,100,32,119,104,105,99,104,32,119,114, - 105,116,101,115,32,100,97,116,97,32,40,98,121,116,101,115, - 41,32,116,111,32,97,32,102,105,108,101,32,112,97,116,104, - 32,40,97,32,115,116,114,41,46,10,10,32,32,32,32,32, - 32,32,32,73,109,112,108,101,109,101,110,116,105,110,103,32, - 116,104,105,115,32,109,101,116,104,111,100,32,97,108,108,111, - 119,115,32,102,111,114,32,116,104,101,32,119,114,105,116,105, - 110,103,32,111,102,32,98,121,116,101,99,111,100,101,32,102, - 105,108,101,115,46,10,32,32,32,32,32,32,32,32,78,114, - 4,0,0,0,41,3,114,104,0,0,0,114,37,0,0,0, - 114,56,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 6,0,0,0,114,194,0,0,0,207,2,0,0,115,0,0, - 0,0,122,21,83,111,117,114,99,101,76,111,97,100,101,114, - 46,115,101,116,95,100,97,116,97,99,2,0,0,0,0,0, - 0,0,5,0,0,0,16,0,0,0,67,0,0,0,115,82, - 0,0,0,124,0,160,0,124,1,161,1,125,2,121,14,124, - 0,160,1,124,2,161,1,125,3,87,0,110,48,4,0,116, - 2,107,10,114,72,1,0,125,4,1,0,122,20,116,3,100, - 1,124,1,100,2,141,2,124,4,130,2,87,0,89,0,100, - 3,100,3,125,4,126,4,88,0,110,2,88,0,116,4,124, - 3,131,1,83,0,41,4,122,52,67,111,110,99,114,101,116, - 101,32,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 32,111,102,32,73,110,115,112,101,99,116,76,111,97,100,101, - 114,46,103,101,116,95,115,111,117,114,99,101,46,122,39,115, - 111,117,114,99,101,32,110,111,116,32,97,118,97,105,108,97, - 98,108,101,32,116,104,114,111,117,103,104,32,103,101,116,95, - 100,97,116,97,40,41,41,1,114,102,0,0,0,78,41,5, - 114,155,0,0,0,218,8,103,101,116,95,100,97,116,97,114, - 42,0,0,0,114,103,0,0,0,114,153,0,0,0,41,5, - 114,104,0,0,0,114,123,0,0,0,114,37,0,0,0,114, - 151,0,0,0,218,3,101,120,99,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,218,10,103,101,116,95,115,111, - 117,114,99,101,214,2,0,0,115,14,0,0,0,0,2,10, - 1,2,1,14,1,16,1,4,1,28,1,122,23,83,111,117, - 114,99,101,76,111,97,100,101,114,46,103,101,116,95,115,111, - 117,114,99,101,114,31,0,0,0,41,1,218,9,95,111,112, - 116,105,109,105,122,101,99,3,0,0,0,1,0,0,0,4, - 0,0,0,8,0,0,0,67,0,0,0,115,22,0,0,0, - 116,0,106,1,116,2,124,1,124,2,100,1,100,2,124,3, - 100,3,141,6,83,0,41,4,122,130,82,101,116,117,114,110, - 32,116,104,101,32,99,111,100,101,32,111,98,106,101,99,116, - 32,99,111,109,112,105,108,101,100,32,102,114,111,109,32,115, - 111,117,114,99,101,46,10,10,32,32,32,32,32,32,32,32, - 84,104,101,32,39,100,97,116,97,39,32,97,114,103,117,109, - 101,110,116,32,99,97,110,32,98,101,32,97,110,121,32,111, - 98,106,101,99,116,32,116,121,112,101,32,116,104,97,116,32, - 99,111,109,112,105,108,101,40,41,32,115,117,112,112,111,114, - 116,115,46,10,32,32,32,32,32,32,32,32,114,186,0,0, - 0,84,41,2,218,12,100,111,110,116,95,105,110,104,101,114, - 105,116,114,72,0,0,0,41,3,114,118,0,0,0,114,185, - 0,0,0,218,7,99,111,109,112,105,108,101,41,4,114,104, - 0,0,0,114,56,0,0,0,114,37,0,0,0,114,199,0, + 1,114,56,124,3,160,2,161,0,100,7,100,8,133,2,25, + 0,100,6,107,3,114,60,124,0,83,0,121,12,116,3,124, + 0,131,1,125,4,87,0,110,36,4,0,116,4,116,5,102, + 2,107,10,114,108,1,0,1,0,1,0,124,0,100,2,100, + 9,133,2,25,0,125,4,89,0,110,2,88,0,116,6,124, + 4,131,1,114,122,124,4,83,0,124,0,83,0,41,10,122, + 188,67,111,110,118,101,114,116,32,97,32,98,121,116,101,99, + 111,100,101,32,102,105,108,101,32,112,97,116,104,32,116,111, + 32,97,32,115,111,117,114,99,101,32,112,97,116,104,32,40, + 105,102,32,112,111,115,115,105,98,108,101,41,46,10,10,32, + 32,32,32,84,104,105,115,32,102,117,110,99,116,105,111,110, + 32,101,120,105,115,116,115,32,112,117,114,101,108,121,32,102, + 111,114,32,98,97,99,107,119,97,114,100,115,45,99,111,109, + 112,97,116,105,98,105,108,105,116,121,32,102,111,114,10,32, + 32,32,32,80,121,73,109,112,111,114,116,95,69,120,101,99, + 67,111,100,101,77,111,100,117,108,101,87,105,116,104,70,105, + 108,101,110,97,109,101,115,40,41,32,105,110,32,116,104,101, + 32,67,32,65,80,73,46,10,10,32,32,32,32,114,62,0, + 0,0,78,114,61,0,0,0,114,84,0,0,0,114,31,0, + 0,0,90,2,112,121,233,253,255,255,255,233,255,255,255,255, + 114,91,0,0,0,41,7,114,33,0,0,0,114,34,0,0, + 0,218,5,108,111,119,101,114,114,89,0,0,0,114,70,0, + 0,0,114,75,0,0,0,114,46,0,0,0,41,5,218,13, + 98,121,116,101,99,111,100,101,95,112,97,116,104,114,82,0, + 0,0,114,38,0,0,0,90,9,101,120,116,101,110,115,105, + 111,110,218,11,115,111,117,114,99,101,95,112,97,116,104,114, + 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,87, + 1,0,0,115,20,0,0,0,0,7,12,1,4,1,16,1, + 24,1,4,1,2,1,12,1,18,1,18,1,114,95,0,0, + 0,99,1,0,0,0,0,0,0,0,1,0,0,0,11,0, + 0,0,67,0,0,0,115,72,0,0,0,124,0,160,0,116, + 1,116,2,131,1,161,1,114,46,121,8,116,3,124,0,131, + 1,83,0,4,0,116,4,107,10,114,42,1,0,1,0,1, + 0,89,0,113,68,88,0,110,22,124,0,160,0,116,1,116, + 5,131,1,161,1,114,64,124,0,83,0,100,0,83,0,100, + 0,83,0,41,1,78,41,6,218,8,101,110,100,115,119,105, + 116,104,218,5,116,117,112,108,101,114,88,0,0,0,114,83, + 0,0,0,114,70,0,0,0,114,78,0,0,0,41,1,218, + 8,102,105,108,101,110,97,109,101,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,218,11,95,103,101,116,95,99, + 97,99,104,101,100,106,1,0,0,115,16,0,0,0,0,1, + 14,1,2,1,8,1,14,1,8,1,14,1,4,2,114,99, + 0,0,0,99,1,0,0,0,0,0,0,0,2,0,0,0, + 11,0,0,0,67,0,0,0,115,52,0,0,0,121,14,116, + 0,124,0,131,1,106,1,125,1,87,0,110,24,4,0,116, + 2,107,10,114,38,1,0,1,0,1,0,100,1,125,1,89, + 0,110,2,88,0,124,1,100,2,79,0,125,1,124,1,83, + 0,41,3,122,51,67,97,108,99,117,108,97,116,101,32,116, + 104,101,32,109,111,100,101,32,112,101,114,109,105,115,115,105, + 111,110,115,32,102,111,114,32,97,32,98,121,116,101,99,111, + 100,101,32,102,105,108,101,46,105,182,1,0,0,233,128,0, + 0,0,41,3,114,41,0,0,0,114,43,0,0,0,114,42, + 0,0,0,41,2,114,37,0,0,0,114,44,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,10, + 95,99,97,108,99,95,109,111,100,101,118,1,0,0,115,12, + 0,0,0,0,2,2,1,14,1,14,1,10,3,8,1,114, + 101,0,0,0,99,1,0,0,0,0,0,0,0,3,0,0, + 0,11,0,0,0,3,0,0,0,115,68,0,0,0,100,6, + 135,0,102,1,100,2,100,3,132,9,125,1,121,10,116,0, + 106,1,125,2,87,0,110,28,4,0,116,2,107,10,114,52, + 1,0,1,0,1,0,100,4,100,5,132,0,125,2,89,0, + 110,2,88,0,124,2,124,1,136,0,131,2,1,0,124,1, + 83,0,41,7,122,252,68,101,99,111,114,97,116,111,114,32, + 116,111,32,118,101,114,105,102,121,32,116,104,97,116,32,116, + 104,101,32,109,111,100,117,108,101,32,98,101,105,110,103,32, + 114,101,113,117,101,115,116,101,100,32,109,97,116,99,104,101, + 115,32,116,104,101,32,111,110,101,32,116,104,101,10,32,32, + 32,32,108,111,97,100,101,114,32,99,97,110,32,104,97,110, + 100,108,101,46,10,10,32,32,32,32,84,104,101,32,102,105, + 114,115,116,32,97,114,103,117,109,101,110,116,32,40,115,101, + 108,102,41,32,109,117,115,116,32,100,101,102,105,110,101,32, + 95,110,97,109,101,32,119,104,105,99,104,32,116,104,101,32, + 115,101,99,111,110,100,32,97,114,103,117,109,101,110,116,32, + 105,115,10,32,32,32,32,99,111,109,112,97,114,101,100,32, + 97,103,97,105,110,115,116,46,32,73,102,32,116,104,101,32, + 99,111,109,112,97,114,105,115,111,110,32,102,97,105,108,115, + 32,116,104,101,110,32,73,109,112,111,114,116,69,114,114,111, + 114,32,105,115,32,114,97,105,115,101,100,46,10,10,32,32, + 32,32,78,99,2,0,0,0,0,0,0,0,4,0,0,0, + 4,0,0,0,31,0,0,0,115,66,0,0,0,124,1,100, + 0,107,8,114,16,124,0,106,0,125,1,110,32,124,0,106, + 0,124,1,107,3,114,48,116,1,100,1,124,0,106,0,124, + 1,102,2,22,0,124,1,100,2,141,2,130,1,136,0,124, + 0,124,1,102,2,124,2,158,2,124,3,142,1,83,0,41, + 3,78,122,30,108,111,97,100,101,114,32,102,111,114,32,37, + 115,32,99,97,110,110,111,116,32,104,97,110,100,108,101,32, + 37,115,41,1,218,4,110,97,109,101,41,2,114,102,0,0, + 0,218,11,73,109,112,111,114,116,69,114,114,111,114,41,4, + 218,4,115,101,108,102,114,102,0,0,0,218,4,97,114,103, + 115,90,6,107,119,97,114,103,115,41,1,218,6,109,101,116, + 104,111,100,114,4,0,0,0,114,6,0,0,0,218,19,95, + 99,104,101,99,107,95,110,97,109,101,95,119,114,97,112,112, + 101,114,138,1,0,0,115,12,0,0,0,0,1,8,1,8, + 1,10,1,4,1,18,1,122,40,95,99,104,101,99,107,95, + 110,97,109,101,46,60,108,111,99,97,108,115,62,46,95,99, + 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, + 114,99,2,0,0,0,0,0,0,0,3,0,0,0,7,0, + 0,0,83,0,0,0,115,60,0,0,0,120,40,100,5,68, + 0,93,32,125,2,116,0,124,1,124,2,131,2,114,6,116, + 1,124,0,124,2,116,2,124,1,124,2,131,2,131,3,1, + 0,113,6,87,0,124,0,106,3,160,4,124,1,106,3,161, + 1,1,0,100,0,83,0,41,6,78,218,10,95,95,109,111, + 100,117,108,101,95,95,218,8,95,95,110,97,109,101,95,95, + 218,12,95,95,113,117,97,108,110,97,109,101,95,95,218,7, + 95,95,100,111,99,95,95,41,4,114,108,0,0,0,114,109, + 0,0,0,114,110,0,0,0,114,111,0,0,0,41,5,218, + 7,104,97,115,97,116,116,114,218,7,115,101,116,97,116,116, + 114,218,7,103,101,116,97,116,116,114,218,8,95,95,100,105, + 99,116,95,95,218,6,117,112,100,97,116,101,41,3,90,3, + 110,101,119,90,3,111,108,100,114,55,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,218,5,95,119, + 114,97,112,149,1,0,0,115,8,0,0,0,0,1,10,1, + 10,1,22,1,122,26,95,99,104,101,99,107,95,110,97,109, + 101,46,60,108,111,99,97,108,115,62,46,95,119,114,97,112, + 41,1,78,41,3,218,10,95,98,111,111,116,115,116,114,97, + 112,114,117,0,0,0,218,9,78,97,109,101,69,114,114,111, + 114,41,3,114,106,0,0,0,114,107,0,0,0,114,117,0, + 0,0,114,4,0,0,0,41,1,114,106,0,0,0,114,6, + 0,0,0,218,11,95,99,104,101,99,107,95,110,97,109,101, + 130,1,0,0,115,14,0,0,0,0,8,14,7,2,1,10, + 1,14,2,14,5,10,1,114,120,0,0,0,99,2,0,0, + 0,0,0,0,0,5,0,0,0,6,0,0,0,67,0,0, + 0,115,60,0,0,0,124,0,160,0,124,1,161,1,92,2, + 125,2,125,3,124,2,100,1,107,8,114,56,116,1,124,3, + 131,1,114,56,100,2,125,4,116,2,160,3,124,4,160,4, + 124,3,100,3,25,0,161,1,116,5,161,2,1,0,124,2, + 83,0,41,4,122,155,84,114,121,32,116,111,32,102,105,110, + 100,32,97,32,108,111,97,100,101,114,32,102,111,114,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,32,98,121,32,100,101,108,101,103,97,116,105,110, + 103,32,116,111,10,32,32,32,32,115,101,108,102,46,102,105, + 110,100,95,108,111,97,100,101,114,40,41,46,10,10,32,32, + 32,32,84,104,105,115,32,109,101,116,104,111,100,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,32,105,110,32,102, + 97,118,111,114,32,111,102,32,102,105,110,100,101,114,46,102, + 105,110,100,95,115,112,101,99,40,41,46,10,10,32,32,32, + 32,78,122,44,78,111,116,32,105,109,112,111,114,116,105,110, + 103,32,100,105,114,101,99,116,111,114,121,32,123,125,58,32, + 109,105,115,115,105,110,103,32,95,95,105,110,105,116,95,95, + 114,62,0,0,0,41,6,218,11,102,105,110,100,95,108,111, + 97,100,101,114,114,33,0,0,0,114,63,0,0,0,114,64, + 0,0,0,114,50,0,0,0,218,13,73,109,112,111,114,116, + 87,97,114,110,105,110,103,41,5,114,104,0,0,0,218,8, + 102,117,108,108,110,97,109,101,218,6,108,111,97,100,101,114, + 218,8,112,111,114,116,105,111,110,115,218,3,109,115,103,114, + 4,0,0,0,114,4,0,0,0,114,6,0,0,0,218,17, + 95,102,105,110,100,95,109,111,100,117,108,101,95,115,104,105, + 109,158,1,0,0,115,10,0,0,0,0,10,14,1,16,1, + 4,1,22,1,114,127,0,0,0,99,4,0,0,0,0,0, + 0,0,11,0,0,0,20,0,0,0,67,0,0,0,115,136, + 1,0,0,105,0,125,4,124,2,100,1,107,9,114,22,124, + 2,124,4,100,2,60,0,110,4,100,3,125,2,124,3,100, + 1,107,9,114,42,124,3,124,4,100,4,60,0,124,0,100, + 1,100,5,133,2,25,0,125,5,124,0,100,5,100,6,133, + 2,25,0,125,6,124,0,100,6,100,7,133,2,25,0,125, + 7,124,5,116,0,107,3,114,124,100,8,160,1,124,2,124, + 5,161,2,125,8,116,2,160,3,100,9,124,8,161,2,1, + 0,116,4,124,8,102,1,124,4,142,1,130,1,110,86,116, + 5,124,6,131,1,100,5,107,3,114,168,100,10,160,1,124, + 2,161,1,125,8,116,2,160,3,100,9,124,8,161,2,1, + 0,116,6,124,8,131,1,130,1,110,42,116,5,124,7,131, + 1,100,5,107,3,114,210,100,11,160,1,124,2,161,1,125, + 8,116,2,160,3,100,9,124,8,161,2,1,0,116,6,124, + 8,131,1,130,1,124,1,100,1,107,9,144,1,114,124,121, + 16,116,7,124,1,100,12,25,0,131,1,125,9,87,0,110, + 22,4,0,116,8,107,10,144,1,114,2,1,0,1,0,1, + 0,89,0,110,50,88,0,116,9,124,6,131,1,124,9,107, + 3,144,1,114,52,100,13,160,1,124,2,161,1,125,8,116, + 2,160,3,100,9,124,8,161,2,1,0,116,4,124,8,102, + 1,124,4,142,1,130,1,121,16,124,1,100,14,25,0,100, + 15,64,0,125,10,87,0,110,22,4,0,116,8,107,10,144, + 1,114,90,1,0,1,0,1,0,89,0,110,34,88,0,116, + 9,124,7,131,1,124,10,107,3,144,1,114,124,116,4,100, + 13,160,1,124,2,161,1,102,1,124,4,142,1,130,1,124, + 0,100,7,100,1,133,2,25,0,83,0,41,16,97,122,1, + 0,0,86,97,108,105,100,97,116,101,32,116,104,101,32,104, + 101,97,100,101,114,32,111,102,32,116,104,101,32,112,97,115, + 115,101,100,45,105,110,32,98,121,116,101,99,111,100,101,32, + 97,103,97,105,110,115,116,32,115,111,117,114,99,101,95,115, + 116,97,116,115,32,40,105,102,10,32,32,32,32,103,105,118, + 101,110,41,32,97,110,100,32,114,101,116,117,114,110,105,110, + 103,32,116,104,101,32,98,121,116,101,99,111,100,101,32,116, + 104,97,116,32,99,97,110,32,98,101,32,99,111,109,112,105, + 108,101,100,32,98,121,32,99,111,109,112,105,108,101,40,41, + 46,10,10,32,32,32,32,65,108,108,32,111,116,104,101,114, + 32,97,114,103,117,109,101,110,116,115,32,97,114,101,32,117, + 115,101,100,32,116,111,32,101,110,104,97,110,99,101,32,101, + 114,114,111,114,32,114,101,112,111,114,116,105,110,103,46,10, + 10,32,32,32,32,73,109,112,111,114,116,69,114,114,111,114, + 32,105,115,32,114,97,105,115,101,100,32,119,104,101,110,32, + 116,104,101,32,109,97,103,105,99,32,110,117,109,98,101,114, + 32,105,115,32,105,110,99,111,114,114,101,99,116,32,111,114, + 32,116,104,101,32,98,121,116,101,99,111,100,101,32,105,115, + 10,32,32,32,32,102,111,117,110,100,32,116,111,32,98,101, + 32,115,116,97,108,101,46,32,69,79,70,69,114,114,111,114, + 32,105,115,32,114,97,105,115,101,100,32,119,104,101,110,32, + 116,104,101,32,100,97,116,97,32,105,115,32,102,111,117,110, + 100,32,116,111,32,98,101,10,32,32,32,32,116,114,117,110, + 99,97,116,101,100,46,10,10,32,32,32,32,78,114,102,0, + 0,0,122,10,60,98,121,116,101,99,111,100,101,62,114,37, + 0,0,0,114,14,0,0,0,233,8,0,0,0,233,12,0, + 0,0,122,30,98,97,100,32,109,97,103,105,99,32,110,117, + 109,98,101,114,32,105,110,32,123,33,114,125,58,32,123,33, + 114,125,122,2,123,125,122,43,114,101,97,99,104,101,100,32, + 69,79,70,32,119,104,105,108,101,32,114,101,97,100,105,110, + 103,32,116,105,109,101,115,116,97,109,112,32,105,110,32,123, + 33,114,125,122,48,114,101,97,99,104,101,100,32,69,79,70, + 32,119,104,105,108,101,32,114,101,97,100,105,110,103,32,115, + 105,122,101,32,111,102,32,115,111,117,114,99,101,32,105,110, + 32,123,33,114,125,218,5,109,116,105,109,101,122,26,98,121, + 116,101,99,111,100,101,32,105,115,32,115,116,97,108,101,32, + 102,111,114,32,123,33,114,125,218,4,115,105,122,101,108,3, + 0,0,0,255,127,255,127,3,0,41,10,218,12,77,65,71, + 73,67,95,78,85,77,66,69,82,114,50,0,0,0,114,118, + 0,0,0,218,16,95,118,101,114,98,111,115,101,95,109,101, + 115,115,97,103,101,114,103,0,0,0,114,33,0,0,0,218, + 8,69,79,70,69,114,114,111,114,114,16,0,0,0,218,8, + 75,101,121,69,114,114,111,114,114,21,0,0,0,41,11,114, + 56,0,0,0,218,12,115,111,117,114,99,101,95,115,116,97, + 116,115,114,102,0,0,0,114,37,0,0,0,90,11,101,120, + 99,95,100,101,116,97,105,108,115,90,5,109,97,103,105,99, + 90,13,114,97,119,95,116,105,109,101,115,116,97,109,112,90, + 8,114,97,119,95,115,105,122,101,114,79,0,0,0,218,12, + 115,111,117,114,99,101,95,109,116,105,109,101,218,11,115,111, + 117,114,99,101,95,115,105,122,101,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,218,25,95,118,97,108,105,100, + 97,116,101,95,98,121,116,101,99,111,100,101,95,104,101,97, + 100,101,114,175,1,0,0,115,76,0,0,0,0,11,4,1, + 8,1,10,3,4,1,8,1,8,1,12,1,12,1,12,1, + 8,1,12,1,12,1,14,1,12,1,10,1,12,1,10,1, + 12,1,10,1,12,1,8,1,10,1,2,1,16,1,16,1, + 6,2,14,1,10,1,12,1,12,1,2,1,16,1,16,1, + 6,2,14,1,12,1,6,1,114,139,0,0,0,99,4,0, + 0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,0, + 0,0,115,80,0,0,0,116,0,160,1,124,0,161,1,125, + 4,116,2,124,4,116,3,131,2,114,56,116,4,160,5,100, + 1,124,2,161,2,1,0,124,3,100,2,107,9,114,52,116, + 6,160,7,124,4,124,3,161,2,1,0,124,4,83,0,116, + 8,100,3,160,9,124,2,161,1,124,1,124,2,100,4,141, + 3,130,1,100,2,83,0,41,5,122,60,67,111,109,112,105, + 108,101,32,98,121,116,101,99,111,100,101,32,97,115,32,114, + 101,116,117,114,110,101,100,32,98,121,32,95,118,97,108,105, + 100,97,116,101,95,98,121,116,101,99,111,100,101,95,104,101, + 97,100,101,114,40,41,46,122,21,99,111,100,101,32,111,98, + 106,101,99,116,32,102,114,111,109,32,123,33,114,125,78,122, + 23,78,111,110,45,99,111,100,101,32,111,98,106,101,99,116, + 32,105,110,32,123,33,114,125,41,2,114,102,0,0,0,114, + 37,0,0,0,41,10,218,7,109,97,114,115,104,97,108,90, + 5,108,111,97,100,115,218,10,105,115,105,110,115,116,97,110, + 99,101,218,10,95,99,111,100,101,95,116,121,112,101,114,118, + 0,0,0,114,133,0,0,0,218,4,95,105,109,112,90,16, + 95,102,105,120,95,99,111,95,102,105,108,101,110,97,109,101, + 114,103,0,0,0,114,50,0,0,0,41,5,114,56,0,0, + 0,114,102,0,0,0,114,93,0,0,0,114,94,0,0,0, + 218,4,99,111,100,101,114,4,0,0,0,114,4,0,0,0, + 114,6,0,0,0,218,17,95,99,111,109,112,105,108,101,95, + 98,121,116,101,99,111,100,101,230,1,0,0,115,16,0,0, + 0,0,2,10,1,10,1,12,1,8,1,12,1,4,2,10, + 1,114,145,0,0,0,114,62,0,0,0,99,3,0,0,0, + 0,0,0,0,4,0,0,0,5,0,0,0,67,0,0,0, + 115,56,0,0,0,116,0,116,1,131,1,125,3,124,3,160, + 2,116,3,124,1,131,1,161,1,1,0,124,3,160,2,116, + 3,124,2,131,1,161,1,1,0,124,3,160,2,116,4,160, + 5,124,0,161,1,161,1,1,0,124,3,83,0,41,1,122, + 80,67,111,109,112,105,108,101,32,97,32,99,111,100,101,32, + 111,98,106,101,99,116,32,105,110,116,111,32,98,121,116,101, + 99,111,100,101,32,102,111,114,32,119,114,105,116,105,110,103, + 32,111,117,116,32,116,111,32,97,32,98,121,116,101,45,99, + 111,109,112,105,108,101,100,10,32,32,32,32,102,105,108,101, + 46,41,6,218,9,98,121,116,101,97,114,114,97,121,114,132, + 0,0,0,218,6,101,120,116,101,110,100,114,19,0,0,0, + 114,140,0,0,0,90,5,100,117,109,112,115,41,4,114,144, + 0,0,0,114,130,0,0,0,114,138,0,0,0,114,56,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0, - 0,218,14,115,111,117,114,99,101,95,116,111,95,99,111,100, - 101,224,2,0,0,115,4,0,0,0,0,5,12,1,122,27, - 83,111,117,114,99,101,76,111,97,100,101,114,46,115,111,117, - 114,99,101,95,116,111,95,99,111,100,101,99,2,0,0,0, - 0,0,0,0,10,0,0,0,43,0,0,0,67,0,0,0, - 115,94,1,0,0,124,0,160,0,124,1,161,1,125,2,100, - 1,125,3,121,12,116,1,124,2,131,1,125,4,87,0,110, - 24,4,0,116,2,107,10,114,50,1,0,1,0,1,0,100, - 1,125,4,89,0,110,162,88,0,121,14,124,0,160,3,124, - 2,161,1,125,5,87,0,110,20,4,0,116,4,107,10,114, - 86,1,0,1,0,1,0,89,0,110,126,88,0,116,5,124, - 5,100,2,25,0,131,1,125,3,121,14,124,0,160,6,124, - 4,161,1,125,6,87,0,110,20,4,0,116,4,107,10,114, - 134,1,0,1,0,1,0,89,0,110,78,88,0,121,20,116, - 7,124,6,124,5,124,1,124,4,100,3,141,4,125,7,87, - 0,110,24,4,0,116,8,116,9,102,2,107,10,114,180,1, - 0,1,0,1,0,89,0,110,32,88,0,116,10,160,11,100, - 4,124,4,124,2,161,3,1,0,116,12,124,7,124,1,124, - 4,124,2,100,5,141,4,83,0,124,0,160,6,124,2,161, - 1,125,8,124,0,160,13,124,8,124,2,161,2,125,9,116, - 10,160,11,100,6,124,2,161,2,1,0,116,14,106,15,12, - 0,144,1,114,90,124,4,100,1,107,9,144,1,114,90,124, - 3,100,1,107,9,144,1,114,90,116,16,124,9,124,3,116, - 17,124,8,131,1,131,3,125,6,121,30,124,0,160,18,124, - 2,124,4,124,6,161,3,1,0,116,10,160,11,100,7,124, - 4,161,2,1,0,87,0,110,22,4,0,116,2,107,10,144, - 1,114,88,1,0,1,0,1,0,89,0,110,2,88,0,124, - 9,83,0,41,8,122,190,67,111,110,99,114,101,116,101,32, + 0,218,17,95,99,111,100,101,95,116,111,95,98,121,116,101, + 99,111,100,101,242,1,0,0,115,10,0,0,0,0,3,8, + 1,14,1,14,1,16,1,114,148,0,0,0,99,1,0,0, + 0,0,0,0,0,5,0,0,0,6,0,0,0,67,0,0, + 0,115,62,0,0,0,100,1,100,2,108,0,125,1,116,1, + 160,2,124,0,161,1,106,3,125,2,124,1,160,4,124,2, + 161,1,125,3,116,1,160,5,100,2,100,3,161,2,125,4, + 124,4,160,6,124,0,160,6,124,3,100,1,25,0,161,1, + 161,1,83,0,41,4,122,121,68,101,99,111,100,101,32,98, + 121,116,101,115,32,114,101,112,114,101,115,101,110,116,105,110, + 103,32,115,111,117,114,99,101,32,99,111,100,101,32,97,110, + 100,32,114,101,116,117,114,110,32,116,104,101,32,115,116,114, + 105,110,103,46,10,10,32,32,32,32,85,110,105,118,101,114, + 115,97,108,32,110,101,119,108,105,110,101,32,115,117,112,112, + 111,114,116,32,105,115,32,117,115,101,100,32,105,110,32,116, + 104,101,32,100,101,99,111,100,105,110,103,46,10,32,32,32, + 32,114,62,0,0,0,78,84,41,7,218,8,116,111,107,101, + 110,105,122,101,114,52,0,0,0,90,7,66,121,116,101,115, + 73,79,90,8,114,101,97,100,108,105,110,101,90,15,100,101, + 116,101,99,116,95,101,110,99,111,100,105,110,103,90,25,73, + 110,99,114,101,109,101,110,116,97,108,78,101,119,108,105,110, + 101,68,101,99,111,100,101,114,218,6,100,101,99,111,100,101, + 41,5,218,12,115,111,117,114,99,101,95,98,121,116,101,115, + 114,149,0,0,0,90,21,115,111,117,114,99,101,95,98,121, + 116,101,115,95,114,101,97,100,108,105,110,101,218,8,101,110, + 99,111,100,105,110,103,90,15,110,101,119,108,105,110,101,95, + 100,101,99,111,100,101,114,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,218,13,100,101,99,111,100,101,95,115, + 111,117,114,99,101,252,1,0,0,115,10,0,0,0,0,5, + 8,1,12,1,10,1,12,1,114,153,0,0,0,41,2,114, + 124,0,0,0,218,26,115,117,98,109,111,100,117,108,101,95, + 115,101,97,114,99,104,95,108,111,99,97,116,105,111,110,115, + 99,2,0,0,0,2,0,0,0,9,0,0,0,19,0,0, + 0,67,0,0,0,115,18,1,0,0,124,1,100,1,107,8, + 114,60,100,2,125,1,116,0,124,2,100,3,131,2,114,70, + 121,14,124,2,160,1,124,0,161,1,125,1,87,0,113,70, + 4,0,116,2,107,10,114,56,1,0,1,0,1,0,89,0, + 113,70,88,0,110,10,116,3,160,4,124,1,161,1,125,1, + 116,5,106,6,124,0,124,2,124,1,100,4,141,3,125,4, + 100,5,124,4,95,7,124,2,100,1,107,8,114,156,120,54, + 116,8,131,0,68,0,93,40,92,2,125,5,125,6,124,1, + 160,9,116,10,124,6,131,1,161,1,114,108,124,5,124,0, + 124,1,131,2,125,2,124,2,124,4,95,11,80,0,113,108, + 87,0,100,1,83,0,124,3,116,12,107,8,114,222,116,0, + 124,2,100,6,131,2,114,228,121,14,124,2,160,13,124,0, + 161,1,125,7,87,0,110,20,4,0,116,2,107,10,114,208, + 1,0,1,0,1,0,89,0,113,228,88,0,124,7,114,228, + 103,0,124,4,95,14,110,6,124,3,124,4,95,14,124,4, + 106,14,103,0,107,2,144,1,114,14,124,1,144,1,114,14, + 116,15,124,1,131,1,100,7,25,0,125,8,124,4,106,14, + 160,16,124,8,161,1,1,0,124,4,83,0,41,8,97,61, + 1,0,0,82,101,116,117,114,110,32,97,32,109,111,100,117, + 108,101,32,115,112,101,99,32,98,97,115,101,100,32,111,110, + 32,97,32,102,105,108,101,32,108,111,99,97,116,105,111,110, + 46,10,10,32,32,32,32,84,111,32,105,110,100,105,99,97, + 116,101,32,116,104,97,116,32,116,104,101,32,109,111,100,117, + 108,101,32,105,115,32,97,32,112,97,99,107,97,103,101,44, + 32,115,101,116,10,32,32,32,32,115,117,98,109,111,100,117, + 108,101,95,115,101,97,114,99,104,95,108,111,99,97,116,105, + 111,110,115,32,116,111,32,97,32,108,105,115,116,32,111,102, + 32,100,105,114,101,99,116,111,114,121,32,112,97,116,104,115, + 46,32,32,65,110,10,32,32,32,32,101,109,112,116,121,32, + 108,105,115,116,32,105,115,32,115,117,102,102,105,99,105,101, + 110,116,44,32,116,104,111,117,103,104,32,105,116,115,32,110, + 111,116,32,111,116,104,101,114,119,105,115,101,32,117,115,101, + 102,117,108,32,116,111,32,116,104,101,10,32,32,32,32,105, + 109,112,111,114,116,32,115,121,115,116,101,109,46,10,10,32, + 32,32,32,84,104,101,32,108,111,97,100,101,114,32,109,117, + 115,116,32,116,97,107,101,32,97,32,115,112,101,99,32,97, + 115,32,105,116,115,32,111,110,108,121,32,95,95,105,110,105, + 116,95,95,40,41,32,97,114,103,46,10,10,32,32,32,32, + 78,122,9,60,117,110,107,110,111,119,110,62,218,12,103,101, + 116,95,102,105,108,101,110,97,109,101,41,1,218,6,111,114, + 105,103,105,110,84,218,10,105,115,95,112,97,99,107,97,103, + 101,114,62,0,0,0,41,17,114,112,0,0,0,114,155,0, + 0,0,114,103,0,0,0,114,3,0,0,0,114,67,0,0, + 0,114,118,0,0,0,218,10,77,111,100,117,108,101,83,112, + 101,99,90,13,95,115,101,116,95,102,105,108,101,97,116,116, + 114,218,27,95,103,101,116,95,115,117,112,112,111,114,116,101, + 100,95,102,105,108,101,95,108,111,97,100,101,114,115,114,96, + 0,0,0,114,97,0,0,0,114,124,0,0,0,218,9,95, + 80,79,80,85,76,65,84,69,114,157,0,0,0,114,154,0, + 0,0,114,40,0,0,0,218,6,97,112,112,101,110,100,41, + 9,114,102,0,0,0,90,8,108,111,99,97,116,105,111,110, + 114,124,0,0,0,114,154,0,0,0,218,4,115,112,101,99, + 218,12,108,111,97,100,101,114,95,99,108,97,115,115,218,8, + 115,117,102,102,105,120,101,115,114,157,0,0,0,90,7,100, + 105,114,110,97,109,101,114,4,0,0,0,114,4,0,0,0, + 114,6,0,0,0,218,23,115,112,101,99,95,102,114,111,109, + 95,102,105,108,101,95,108,111,99,97,116,105,111,110,13,2, + 0,0,115,62,0,0,0,0,12,8,4,4,1,10,2,2, + 1,14,1,14,1,8,2,10,8,16,1,6,3,8,1,16, + 1,14,1,10,1,6,1,6,2,4,3,8,2,10,1,2, + 1,14,1,14,1,6,2,4,1,8,2,6,1,12,1,6, + 1,12,1,12,2,114,165,0,0,0,99,0,0,0,0,0, + 0,0,0,0,0,0,0,4,0,0,0,64,0,0,0,115, + 80,0,0,0,101,0,90,1,100,0,90,2,100,1,90,3, + 100,2,90,4,100,3,90,5,100,4,90,6,101,7,100,5, + 100,6,132,0,131,1,90,8,101,7,100,7,100,8,132,0, + 131,1,90,9,101,7,100,14,100,10,100,11,132,1,131,1, + 90,10,101,7,100,15,100,12,100,13,132,1,131,1,90,11, + 100,9,83,0,41,16,218,21,87,105,110,100,111,119,115,82, + 101,103,105,115,116,114,121,70,105,110,100,101,114,122,62,77, + 101,116,97,32,112,97,116,104,32,102,105,110,100,101,114,32, + 102,111,114,32,109,111,100,117,108,101,115,32,100,101,99,108, + 97,114,101,100,32,105,110,32,116,104,101,32,87,105,110,100, + 111,119,115,32,114,101,103,105,115,116,114,121,46,122,59,83, + 111,102,116,119,97,114,101,92,80,121,116,104,111,110,92,80, + 121,116,104,111,110,67,111,114,101,92,123,115,121,115,95,118, + 101,114,115,105,111,110,125,92,77,111,100,117,108,101,115,92, + 123,102,117,108,108,110,97,109,101,125,122,65,83,111,102,116, + 119,97,114,101,92,80,121,116,104,111,110,92,80,121,116,104, + 111,110,67,111,114,101,92,123,115,121,115,95,118,101,114,115, + 105,111,110,125,92,77,111,100,117,108,101,115,92,123,102,117, + 108,108,110,97,109,101,125,92,68,101,98,117,103,70,99,2, + 0,0,0,0,0,0,0,2,0,0,0,11,0,0,0,67, + 0,0,0,115,50,0,0,0,121,14,116,0,160,1,116,0, + 106,2,124,1,161,2,83,0,4,0,116,3,107,10,114,44, + 1,0,1,0,1,0,116,0,160,1,116,0,106,4,124,1, + 161,2,83,0,88,0,100,0,83,0,41,1,78,41,5,218, + 7,95,119,105,110,114,101,103,90,7,79,112,101,110,75,101, + 121,90,17,72,75,69,89,95,67,85,82,82,69,78,84,95, + 85,83,69,82,114,42,0,0,0,90,18,72,75,69,89,95, + 76,79,67,65,76,95,77,65,67,72,73,78,69,41,2,218, + 3,99,108,115,114,5,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,218,14,95,111,112,101,110,95, + 114,101,103,105,115,116,114,121,93,2,0,0,115,8,0,0, + 0,0,2,2,1,14,1,14,1,122,36,87,105,110,100,111, + 119,115,82,101,103,105,115,116,114,121,70,105,110,100,101,114, + 46,95,111,112,101,110,95,114,101,103,105,115,116,114,121,99, + 2,0,0,0,0,0,0,0,6,0,0,0,17,0,0,0, + 67,0,0,0,115,112,0,0,0,124,0,106,0,114,14,124, + 0,106,1,125,2,110,6,124,0,106,2,125,2,124,2,106, + 3,124,1,100,1,116,4,106,5,100,0,100,2,133,2,25, + 0,22,0,100,3,141,2,125,3,121,38,124,0,160,6,124, + 3,161,1,143,18,125,4,116,7,160,8,124,4,100,4,161, + 2,125,5,87,0,100,0,81,0,82,0,88,0,87,0,110, + 20,4,0,116,9,107,10,114,106,1,0,1,0,1,0,100, + 0,83,0,88,0,124,5,83,0,41,5,78,122,5,37,100, + 46,37,100,114,59,0,0,0,41,2,114,123,0,0,0,90, + 11,115,121,115,95,118,101,114,115,105,111,110,114,32,0,0, + 0,41,10,218,11,68,69,66,85,71,95,66,85,73,76,68, + 218,18,82,69,71,73,83,84,82,89,95,75,69,89,95,68, + 69,66,85,71,218,12,82,69,71,73,83,84,82,89,95,75, + 69,89,114,50,0,0,0,114,8,0,0,0,218,12,118,101, + 114,115,105,111,110,95,105,110,102,111,114,169,0,0,0,114, + 167,0,0,0,90,10,81,117,101,114,121,86,97,108,117,101, + 114,42,0,0,0,41,6,114,168,0,0,0,114,123,0,0, + 0,90,12,114,101,103,105,115,116,114,121,95,107,101,121,114, + 5,0,0,0,90,4,104,107,101,121,218,8,102,105,108,101, + 112,97,116,104,114,4,0,0,0,114,4,0,0,0,114,6, + 0,0,0,218,16,95,115,101,97,114,99,104,95,114,101,103, + 105,115,116,114,121,100,2,0,0,115,22,0,0,0,0,2, + 6,1,8,2,6,1,6,1,22,1,2,1,12,1,26,1, + 14,1,6,1,122,38,87,105,110,100,111,119,115,82,101,103, + 105,115,116,114,121,70,105,110,100,101,114,46,95,115,101,97, + 114,99,104,95,114,101,103,105,115,116,114,121,78,99,4,0, + 0,0,0,0,0,0,8,0,0,0,14,0,0,0,67,0, + 0,0,115,120,0,0,0,124,0,160,0,124,1,161,1,125, + 4,124,4,100,0,107,8,114,22,100,0,83,0,121,12,116, + 1,124,4,131,1,1,0,87,0,110,20,4,0,116,2,107, + 10,114,54,1,0,1,0,1,0,100,0,83,0,88,0,120, + 58,116,3,131,0,68,0,93,48,92,2,125,5,125,6,124, + 4,160,4,116,5,124,6,131,1,161,1,114,64,116,6,106, + 7,124,1,124,5,124,1,124,4,131,2,124,4,100,1,141, + 3,125,7,124,7,83,0,113,64,87,0,100,0,83,0,41, + 2,78,41,1,114,156,0,0,0,41,8,114,175,0,0,0, + 114,41,0,0,0,114,42,0,0,0,114,159,0,0,0,114, + 96,0,0,0,114,97,0,0,0,114,118,0,0,0,218,16, + 115,112,101,99,95,102,114,111,109,95,108,111,97,100,101,114, + 41,8,114,168,0,0,0,114,123,0,0,0,114,37,0,0, + 0,218,6,116,97,114,103,101,116,114,174,0,0,0,114,124, + 0,0,0,114,164,0,0,0,114,162,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,115,2,0,0,115,26,0,0,0, + 0,2,10,1,8,1,4,1,2,1,12,1,14,1,6,1, + 16,1,14,1,6,1,8,1,8,1,122,31,87,105,110,100, + 111,119,115,82,101,103,105,115,116,114,121,70,105,110,100,101, + 114,46,102,105,110,100,95,115,112,101,99,99,3,0,0,0, + 0,0,0,0,4,0,0,0,4,0,0,0,67,0,0,0, + 115,34,0,0,0,124,0,160,0,124,1,124,2,161,2,125, + 3,124,3,100,1,107,9,114,26,124,3,106,1,83,0,100, + 1,83,0,100,1,83,0,41,2,122,108,70,105,110,100,32, + 109,111,100,117,108,101,32,110,97,109,101,100,32,105,110,32, + 116,104,101,32,114,101,103,105,115,116,114,121,46,10,10,32, + 32,32,32,32,32,32,32,84,104,105,115,32,109,101,116,104, + 111,100,32,105,115,32,100,101,112,114,101,99,97,116,101,100, + 46,32,32,85,115,101,32,101,120,101,99,95,109,111,100,117, + 108,101,40,41,32,105,110,115,116,101,97,100,46,10,10,32, + 32,32,32,32,32,32,32,78,41,2,114,178,0,0,0,114, + 124,0,0,0,41,4,114,168,0,0,0,114,123,0,0,0, + 114,37,0,0,0,114,162,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,6,0,0,0,218,11,102,105,110,100,95, + 109,111,100,117,108,101,131,2,0,0,115,8,0,0,0,0, + 7,12,1,8,1,6,2,122,33,87,105,110,100,111,119,115, + 82,101,103,105,115,116,114,121,70,105,110,100,101,114,46,102, + 105,110,100,95,109,111,100,117,108,101,41,2,78,78,41,1, + 78,41,12,114,109,0,0,0,114,108,0,0,0,114,110,0, + 0,0,114,111,0,0,0,114,172,0,0,0,114,171,0,0, + 0,114,170,0,0,0,218,11,99,108,97,115,115,109,101,116, + 104,111,100,114,169,0,0,0,114,175,0,0,0,114,178,0, + 0,0,114,179,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,6,0,0,0,114,166,0,0,0, + 81,2,0,0,115,18,0,0,0,12,5,4,3,4,2,4, + 2,12,7,12,15,2,1,12,15,2,1,114,166,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, + 0,64,0,0,0,115,48,0,0,0,101,0,90,1,100,0, + 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, + 100,5,132,0,90,5,100,6,100,7,132,0,90,6,100,8, + 100,9,132,0,90,7,100,10,83,0,41,11,218,13,95,76, + 111,97,100,101,114,66,97,115,105,99,115,122,83,66,97,115, + 101,32,99,108,97,115,115,32,111,102,32,99,111,109,109,111, + 110,32,99,111,100,101,32,110,101,101,100,101,100,32,98,121, + 32,98,111,116,104,32,83,111,117,114,99,101,76,111,97,100, + 101,114,32,97,110,100,10,32,32,32,32,83,111,117,114,99, + 101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,46, + 99,2,0,0,0,0,0,0,0,5,0,0,0,4,0,0, + 0,67,0,0,0,115,64,0,0,0,116,0,124,0,160,1, + 124,1,161,1,131,1,100,1,25,0,125,2,124,2,160,2, + 100,2,100,1,161,2,100,3,25,0,125,3,124,1,160,3, + 100,2,161,1,100,4,25,0,125,4,124,3,100,5,107,2, + 111,62,124,4,100,5,107,3,83,0,41,6,122,141,67,111, + 110,99,114,101,116,101,32,105,109,112,108,101,109,101,110,116, + 97,116,105,111,110,32,111,102,32,73,110,115,112,101,99,116, + 76,111,97,100,101,114,46,105,115,95,112,97,99,107,97,103, + 101,32,98,121,32,99,104,101,99,107,105,110,103,32,105,102, + 10,32,32,32,32,32,32,32,32,116,104,101,32,112,97,116, + 104,32,114,101,116,117,114,110,101,100,32,98,121,32,103,101, + 116,95,102,105,108,101,110,97,109,101,32,104,97,115,32,97, + 32,102,105,108,101,110,97,109,101,32,111,102,32,39,95,95, + 105,110,105,116,95,95,46,112,121,39,46,114,31,0,0,0, + 114,61,0,0,0,114,62,0,0,0,114,59,0,0,0,218, + 8,95,95,105,110,105,116,95,95,41,4,114,40,0,0,0, + 114,155,0,0,0,114,36,0,0,0,114,34,0,0,0,41, + 5,114,104,0,0,0,114,123,0,0,0,114,98,0,0,0, + 90,13,102,105,108,101,110,97,109,101,95,98,97,115,101,90, + 9,116,97,105,108,95,110,97,109,101,114,4,0,0,0,114, + 4,0,0,0,114,6,0,0,0,114,157,0,0,0,150,2, + 0,0,115,8,0,0,0,0,3,18,1,16,1,14,1,122, + 24,95,76,111,97,100,101,114,66,97,115,105,99,115,46,105, + 115,95,112,97,99,107,97,103,101,99,2,0,0,0,0,0, + 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,4, + 0,0,0,100,1,83,0,41,2,122,42,85,115,101,32,100, + 101,102,97,117,108,116,32,115,101,109,97,110,116,105,99,115, + 32,102,111,114,32,109,111,100,117,108,101,32,99,114,101,97, + 116,105,111,110,46,78,114,4,0,0,0,41,2,114,104,0, + 0,0,114,162,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,218,13,99,114,101,97,116,101,95,109, + 111,100,117,108,101,158,2,0,0,115,0,0,0,0,122,27, + 95,76,111,97,100,101,114,66,97,115,105,99,115,46,99,114, + 101,97,116,101,95,109,111,100,117,108,101,99,2,0,0,0, + 0,0,0,0,3,0,0,0,5,0,0,0,67,0,0,0, + 115,56,0,0,0,124,0,160,0,124,1,106,1,161,1,125, + 2,124,2,100,1,107,8,114,36,116,2,100,2,160,3,124, + 1,106,1,161,1,131,1,130,1,116,4,160,5,116,6,124, + 2,124,1,106,7,161,3,1,0,100,1,83,0,41,3,122, + 19,69,120,101,99,117,116,101,32,116,104,101,32,109,111,100, + 117,108,101,46,78,122,52,99,97,110,110,111,116,32,108,111, + 97,100,32,109,111,100,117,108,101,32,123,33,114,125,32,119, + 104,101,110,32,103,101,116,95,99,111,100,101,40,41,32,114, + 101,116,117,114,110,115,32,78,111,110,101,41,8,218,8,103, + 101,116,95,99,111,100,101,114,109,0,0,0,114,103,0,0, + 0,114,50,0,0,0,114,118,0,0,0,218,25,95,99,97, + 108,108,95,119,105,116,104,95,102,114,97,109,101,115,95,114, + 101,109,111,118,101,100,218,4,101,120,101,99,114,115,0,0, + 0,41,3,114,104,0,0,0,218,6,109,111,100,117,108,101, + 114,144,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,11,101,120,101,99,95,109,111,100,117,108, + 101,161,2,0,0,115,10,0,0,0,0,2,12,1,8,1, + 6,1,10,1,122,25,95,76,111,97,100,101,114,66,97,115, + 105,99,115,46,101,120,101,99,95,109,111,100,117,108,101,99, + 2,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,12,0,0,0,116,0,160,1,124,0,124, + 1,161,2,83,0,41,1,122,26,84,104,105,115,32,109,111, + 100,117,108,101,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,46,41,2,114,118,0,0,0,218,17,95,108,111,97, + 100,95,109,111,100,117,108,101,95,115,104,105,109,41,2,114, + 104,0,0,0,114,123,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,218,11,108,111,97,100,95,109, + 111,100,117,108,101,169,2,0,0,115,2,0,0,0,0,2, + 122,25,95,76,111,97,100,101,114,66,97,115,105,99,115,46, + 108,111,97,100,95,109,111,100,117,108,101,78,41,8,114,109, + 0,0,0,114,108,0,0,0,114,110,0,0,0,114,111,0, + 0,0,114,157,0,0,0,114,183,0,0,0,114,188,0,0, + 0,114,190,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,6,0,0,0,114,181,0,0,0,145, + 2,0,0,115,8,0,0,0,12,5,8,8,8,3,8,8, + 114,181,0,0,0,99,0,0,0,0,0,0,0,0,0,0, + 0,0,3,0,0,0,64,0,0,0,115,74,0,0,0,101, + 0,90,1,100,0,90,2,100,1,100,2,132,0,90,3,100, + 3,100,4,132,0,90,4,100,5,100,6,132,0,90,5,100, + 7,100,8,132,0,90,6,100,9,100,10,132,0,90,7,100, + 18,100,12,156,1,100,13,100,14,132,2,90,8,100,15,100, + 16,132,0,90,9,100,17,83,0,41,19,218,12,83,111,117, + 114,99,101,76,111,97,100,101,114,99,2,0,0,0,0,0, + 0,0,2,0,0,0,1,0,0,0,67,0,0,0,115,8, + 0,0,0,116,0,130,1,100,1,83,0,41,2,122,178,79, + 112,116,105,111,110,97,108,32,109,101,116,104,111,100,32,116, + 104,97,116,32,114,101,116,117,114,110,115,32,116,104,101,32, + 109,111,100,105,102,105,99,97,116,105,111,110,32,116,105,109, + 101,32,40,97,110,32,105,110,116,41,32,102,111,114,32,116, + 104,101,10,32,32,32,32,32,32,32,32,115,112,101,99,105, + 102,105,101,100,32,112,97,116,104,44,32,119,104,101,114,101, + 32,112,97,116,104,32,105,115,32,97,32,115,116,114,46,10, + 10,32,32,32,32,32,32,32,32,82,97,105,115,101,115,32, + 79,83,69,114,114,111,114,32,119,104,101,110,32,116,104,101, + 32,112,97,116,104,32,99,97,110,110,111,116,32,98,101,32, + 104,97,110,100,108,101,100,46,10,32,32,32,32,32,32,32, + 32,78,41,1,114,42,0,0,0,41,2,114,104,0,0,0, + 114,37,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,10,112,97,116,104,95,109,116,105,109,101, + 176,2,0,0,115,2,0,0,0,0,6,122,23,83,111,117, + 114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,109, + 116,105,109,101,99,2,0,0,0,0,0,0,0,2,0,0, + 0,4,0,0,0,67,0,0,0,115,14,0,0,0,100,1, + 124,0,160,0,124,1,161,1,105,1,83,0,41,2,97,170, + 1,0,0,79,112,116,105,111,110,97,108,32,109,101,116,104, + 111,100,32,114,101,116,117,114,110,105,110,103,32,97,32,109, + 101,116,97,100,97,116,97,32,100,105,99,116,32,102,111,114, + 32,116,104,101,32,115,112,101,99,105,102,105,101,100,32,112, + 97,116,104,10,32,32,32,32,32,32,32,32,116,111,32,98, + 121,32,116,104,101,32,112,97,116,104,32,40,115,116,114,41, + 46,10,32,32,32,32,32,32,32,32,80,111,115,115,105,98, + 108,101,32,107,101,121,115,58,10,32,32,32,32,32,32,32, + 32,45,32,39,109,116,105,109,101,39,32,40,109,97,110,100, + 97,116,111,114,121,41,32,105,115,32,116,104,101,32,110,117, + 109,101,114,105,99,32,116,105,109,101,115,116,97,109,112,32, + 111,102,32,108,97,115,116,32,115,111,117,114,99,101,10,32, + 32,32,32,32,32,32,32,32,32,99,111,100,101,32,109,111, + 100,105,102,105,99,97,116,105,111,110,59,10,32,32,32,32, + 32,32,32,32,45,32,39,115,105,122,101,39,32,40,111,112, + 116,105,111,110,97,108,41,32,105,115,32,116,104,101,32,115, + 105,122,101,32,105,110,32,98,121,116,101,115,32,111,102,32, + 116,104,101,32,115,111,117,114,99,101,32,99,111,100,101,46, + 10,10,32,32,32,32,32,32,32,32,73,109,112,108,101,109, + 101,110,116,105,110,103,32,116,104,105,115,32,109,101,116,104, + 111,100,32,97,108,108,111,119,115,32,116,104,101,32,108,111, + 97,100,101,114,32,116,111,32,114,101,97,100,32,98,121,116, + 101,99,111,100,101,32,102,105,108,101,115,46,10,32,32,32, + 32,32,32,32,32,82,97,105,115,101,115,32,79,83,69,114, + 114,111,114,32,119,104,101,110,32,116,104,101,32,112,97,116, + 104,32,99,97,110,110,111,116,32,98,101,32,104,97,110,100, + 108,101,100,46,10,32,32,32,32,32,32,32,32,114,130,0, + 0,0,41,1,114,192,0,0,0,41,2,114,104,0,0,0, + 114,37,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,10,112,97,116,104,95,115,116,97,116,115, + 184,2,0,0,115,2,0,0,0,0,11,122,23,83,111,117, + 114,99,101,76,111,97,100,101,114,46,112,97,116,104,95,115, + 116,97,116,115,99,4,0,0,0,0,0,0,0,4,0,0, + 0,4,0,0,0,67,0,0,0,115,12,0,0,0,124,0, + 160,0,124,2,124,3,161,2,83,0,41,1,122,228,79,112, + 116,105,111,110,97,108,32,109,101,116,104,111,100,32,119,104, + 105,99,104,32,119,114,105,116,101,115,32,100,97,116,97,32, + 40,98,121,116,101,115,41,32,116,111,32,97,32,102,105,108, + 101,32,112,97,116,104,32,40,97,32,115,116,114,41,46,10, + 10,32,32,32,32,32,32,32,32,73,109,112,108,101,109,101, + 110,116,105,110,103,32,116,104,105,115,32,109,101,116,104,111, + 100,32,97,108,108,111,119,115,32,102,111,114,32,116,104,101, + 32,119,114,105,116,105,110,103,32,111,102,32,98,121,116,101, + 99,111,100,101,32,102,105,108,101,115,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,115,111,117,114,99,101,32, + 112,97,116,104,32,105,115,32,110,101,101,100,101,100,32,105, + 110,32,111,114,100,101,114,32,116,111,32,99,111,114,114,101, + 99,116,108,121,32,116,114,97,110,115,102,101,114,32,112,101, + 114,109,105,115,115,105,111,110,115,10,32,32,32,32,32,32, + 32,32,41,1,218,8,115,101,116,95,100,97,116,97,41,4, + 114,104,0,0,0,114,94,0,0,0,90,10,99,97,99,104, + 101,95,112,97,116,104,114,56,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,6,0,0,0,218,15,95,99,97,99, + 104,101,95,98,121,116,101,99,111,100,101,197,2,0,0,115, + 2,0,0,0,0,8,122,28,83,111,117,114,99,101,76,111, + 97,100,101,114,46,95,99,97,99,104,101,95,98,121,116,101, + 99,111,100,101,99,3,0,0,0,0,0,0,0,3,0,0, + 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, + 83,0,41,2,122,150,79,112,116,105,111,110,97,108,32,109, + 101,116,104,111,100,32,119,104,105,99,104,32,119,114,105,116, + 101,115,32,100,97,116,97,32,40,98,121,116,101,115,41,32, + 116,111,32,97,32,102,105,108,101,32,112,97,116,104,32,40, + 97,32,115,116,114,41,46,10,10,32,32,32,32,32,32,32, + 32,73,109,112,108,101,109,101,110,116,105,110,103,32,116,104, + 105,115,32,109,101,116,104,111,100,32,97,108,108,111,119,115, + 32,102,111,114,32,116,104,101,32,119,114,105,116,105,110,103, + 32,111,102,32,98,121,116,101,99,111,100,101,32,102,105,108, + 101,115,46,10,32,32,32,32,32,32,32,32,78,114,4,0, + 0,0,41,3,114,104,0,0,0,114,37,0,0,0,114,56, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0, + 0,0,114,194,0,0,0,207,2,0,0,115,0,0,0,0, + 122,21,83,111,117,114,99,101,76,111,97,100,101,114,46,115, + 101,116,95,100,97,116,97,99,2,0,0,0,0,0,0,0, + 5,0,0,0,16,0,0,0,67,0,0,0,115,82,0,0, + 0,124,0,160,0,124,1,161,1,125,2,121,14,124,0,160, + 1,124,2,161,1,125,3,87,0,110,48,4,0,116,2,107, + 10,114,72,1,0,125,4,1,0,122,20,116,3,100,1,124, + 1,100,2,141,2,124,4,130,2,87,0,89,0,100,3,100, + 3,125,4,126,4,88,0,110,2,88,0,116,4,124,3,131, + 1,83,0,41,4,122,52,67,111,110,99,114,101,116,101,32, 105,109,112,108,101,109,101,110,116,97,116,105,111,110,32,111, 102,32,73,110,115,112,101,99,116,76,111,97,100,101,114,46, - 103,101,116,95,99,111,100,101,46,10,10,32,32,32,32,32, - 32,32,32,82,101,97,100,105,110,103,32,111,102,32,98,121, - 116,101,99,111,100,101,32,114,101,113,117,105,114,101,115,32, - 112,97,116,104,95,115,116,97,116,115,32,116,111,32,98,101, - 32,105,109,112,108,101,109,101,110,116,101,100,46,32,84,111, - 32,119,114,105,116,101,10,32,32,32,32,32,32,32,32,98, - 121,116,101,99,111,100,101,44,32,115,101,116,95,100,97,116, - 97,32,109,117,115,116,32,97,108,115,111,32,98,101,32,105, - 109,112,108,101,109,101,110,116,101,100,46,10,10,32,32,32, - 32,32,32,32,32,78,114,130,0,0,0,41,3,114,136,0, - 0,0,114,102,0,0,0,114,37,0,0,0,122,13,123,125, - 32,109,97,116,99,104,101,115,32,123,125,41,3,114,102,0, - 0,0,114,93,0,0,0,114,94,0,0,0,122,19,99,111, - 100,101,32,111,98,106,101,99,116,32,102,114,111,109,32,123, - 125,122,10,119,114,111,116,101,32,123,33,114,125,41,19,114, - 155,0,0,0,114,83,0,0,0,114,70,0,0,0,114,193, - 0,0,0,114,42,0,0,0,114,16,0,0,0,114,196,0, - 0,0,114,139,0,0,0,114,103,0,0,0,114,134,0,0, - 0,114,118,0,0,0,114,133,0,0,0,114,145,0,0,0, - 114,202,0,0,0,114,8,0,0,0,218,19,100,111,110,116, - 95,119,114,105,116,101,95,98,121,116,101,99,111,100,101,114, - 148,0,0,0,114,33,0,0,0,114,195,0,0,0,41,10, - 114,104,0,0,0,114,123,0,0,0,114,94,0,0,0,114, - 137,0,0,0,114,93,0,0,0,218,2,115,116,114,56,0, - 0,0,218,10,98,121,116,101,115,95,100,97,116,97,114,151, - 0,0,0,90,11,99,111,100,101,95,111,98,106,101,99,116, - 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114, - 184,0,0,0,232,2,0,0,115,78,0,0,0,0,7,10, - 1,4,1,2,1,12,1,14,1,10,2,2,1,14,1,14, - 1,6,2,12,1,2,1,14,1,14,1,6,2,2,1,4, - 1,4,1,12,1,18,1,6,2,8,1,6,1,6,1,2, - 1,8,1,10,1,12,1,12,1,20,1,10,1,6,1,10, - 1,2,1,14,1,16,1,16,1,6,1,122,21,83,111,117, - 114,99,101,76,111,97,100,101,114,46,103,101,116,95,99,111, - 100,101,78,114,91,0,0,0,41,10,114,109,0,0,0,114, - 108,0,0,0,114,110,0,0,0,114,192,0,0,0,114,193, - 0,0,0,114,195,0,0,0,114,194,0,0,0,114,198,0, - 0,0,114,202,0,0,0,114,184,0,0,0,114,4,0,0, + 103,101,116,95,115,111,117,114,99,101,46,122,39,115,111,117, + 114,99,101,32,110,111,116,32,97,118,97,105,108,97,98,108, + 101,32,116,104,114,111,117,103,104,32,103,101,116,95,100,97, + 116,97,40,41,41,1,114,102,0,0,0,78,41,5,114,155, + 0,0,0,218,8,103,101,116,95,100,97,116,97,114,42,0, + 0,0,114,103,0,0,0,114,153,0,0,0,41,5,114,104, + 0,0,0,114,123,0,0,0,114,37,0,0,0,114,151,0, + 0,0,218,3,101,120,99,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,218,10,103,101,116,95,115,111,117,114, + 99,101,214,2,0,0,115,14,0,0,0,0,2,10,1,2, + 1,14,1,16,1,4,1,28,1,122,23,83,111,117,114,99, + 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, + 99,101,114,31,0,0,0,41,1,218,9,95,111,112,116,105, + 109,105,122,101,99,3,0,0,0,1,0,0,0,4,0,0, + 0,8,0,0,0,67,0,0,0,115,22,0,0,0,116,0, + 106,1,116,2,124,1,124,2,100,1,100,2,124,3,100,3, + 141,6,83,0,41,4,122,130,82,101,116,117,114,110,32,116, + 104,101,32,99,111,100,101,32,111,98,106,101,99,116,32,99, + 111,109,112,105,108,101,100,32,102,114,111,109,32,115,111,117, + 114,99,101,46,10,10,32,32,32,32,32,32,32,32,84,104, + 101,32,39,100,97,116,97,39,32,97,114,103,117,109,101,110, + 116,32,99,97,110,32,98,101,32,97,110,121,32,111,98,106, + 101,99,116,32,116,121,112,101,32,116,104,97,116,32,99,111, + 109,112,105,108,101,40,41,32,115,117,112,112,111,114,116,115, + 46,10,32,32,32,32,32,32,32,32,114,186,0,0,0,84, + 41,2,218,12,100,111,110,116,95,105,110,104,101,114,105,116, + 114,72,0,0,0,41,3,114,118,0,0,0,114,185,0,0, + 0,218,7,99,111,109,112,105,108,101,41,4,114,104,0,0, + 0,114,56,0,0,0,114,37,0,0,0,114,199,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218, + 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,224, + 2,0,0,115,4,0,0,0,0,5,12,1,122,27,83,111, + 117,114,99,101,76,111,97,100,101,114,46,115,111,117,114,99, + 101,95,116,111,95,99,111,100,101,99,2,0,0,0,0,0, + 0,0,10,0,0,0,43,0,0,0,67,0,0,0,115,92, + 1,0,0,124,0,160,0,124,1,161,1,125,2,100,1,125, + 3,121,12,116,1,124,2,131,1,125,4,87,0,110,24,4, + 0,116,2,107,10,114,50,1,0,1,0,1,0,100,1,125, + 4,89,0,110,162,88,0,121,14,124,0,160,3,124,2,161, + 1,125,5,87,0,110,20,4,0,116,4,107,10,114,86,1, + 0,1,0,1,0,89,0,110,126,88,0,116,5,124,5,100, + 2,25,0,131,1,125,3,121,14,124,0,160,6,124,4,161, + 1,125,6,87,0,110,20,4,0,116,4,107,10,114,134,1, + 0,1,0,1,0,89,0,110,78,88,0,121,20,116,7,124, + 6,124,5,124,1,124,4,100,3,141,4,125,7,87,0,110, + 24,4,0,116,8,116,9,102,2,107,10,114,180,1,0,1, + 0,1,0,89,0,110,32,88,0,116,10,160,11,100,4,124, + 4,124,2,161,3,1,0,116,12,124,7,124,1,124,4,124, + 2,100,5,141,4,83,0,124,0,160,6,124,2,161,1,125, + 8,124,0,160,13,124,8,124,2,161,2,125,9,116,10,160, + 11,100,6,124,2,161,2,1,0,116,14,106,15,144,1,115, + 88,124,4,100,1,107,9,144,1,114,88,124,3,100,1,107, + 9,144,1,114,88,116,16,124,9,124,3,116,17,124,8,131, + 1,131,3,125,6,121,30,124,0,160,18,124,2,124,4,124, + 6,161,3,1,0,116,10,160,11,100,7,124,4,161,2,1, + 0,87,0,110,22,4,0,116,2,107,10,144,1,114,86,1, + 0,1,0,1,0,89,0,110,2,88,0,124,9,83,0,41, + 8,122,190,67,111,110,99,114,101,116,101,32,105,109,112,108, + 101,109,101,110,116,97,116,105,111,110,32,111,102,32,73,110, + 115,112,101,99,116,76,111,97,100,101,114,46,103,101,116,95, + 99,111,100,101,46,10,10,32,32,32,32,32,32,32,32,82, + 101,97,100,105,110,103,32,111,102,32,98,121,116,101,99,111, + 100,101,32,114,101,113,117,105,114,101,115,32,112,97,116,104, + 95,115,116,97,116,115,32,116,111,32,98,101,32,105,109,112, + 108,101,109,101,110,116,101,100,46,32,84,111,32,119,114,105, + 116,101,10,32,32,32,32,32,32,32,32,98,121,116,101,99, + 111,100,101,44,32,115,101,116,95,100,97,116,97,32,109,117, + 115,116,32,97,108,115,111,32,98,101,32,105,109,112,108,101, + 109,101,110,116,101,100,46,10,10,32,32,32,32,32,32,32, + 32,78,114,130,0,0,0,41,3,114,136,0,0,0,114,102, + 0,0,0,114,37,0,0,0,122,13,123,125,32,109,97,116, + 99,104,101,115,32,123,125,41,3,114,102,0,0,0,114,93, + 0,0,0,114,94,0,0,0,122,19,99,111,100,101,32,111, + 98,106,101,99,116,32,102,114,111,109,32,123,125,122,10,119, + 114,111,116,101,32,123,33,114,125,41,19,114,155,0,0,0, + 114,83,0,0,0,114,70,0,0,0,114,193,0,0,0,114, + 42,0,0,0,114,16,0,0,0,114,196,0,0,0,114,139, + 0,0,0,114,103,0,0,0,114,134,0,0,0,114,118,0, + 0,0,114,133,0,0,0,114,145,0,0,0,114,202,0,0, + 0,114,8,0,0,0,218,19,100,111,110,116,95,119,114,105, + 116,101,95,98,121,116,101,99,111,100,101,114,148,0,0,0, + 114,33,0,0,0,114,195,0,0,0,41,10,114,104,0,0, + 0,114,123,0,0,0,114,94,0,0,0,114,137,0,0,0, + 114,93,0,0,0,218,2,115,116,114,56,0,0,0,218,10, + 98,121,116,101,115,95,100,97,116,97,114,151,0,0,0,90, + 11,99,111,100,101,95,111,98,106,101,99,116,114,4,0,0, + 0,114,4,0,0,0,114,6,0,0,0,114,184,0,0,0, + 232,2,0,0,115,78,0,0,0,0,7,10,1,4,1,2, + 1,12,1,14,1,10,2,2,1,14,1,14,1,6,2,12, + 1,2,1,14,1,14,1,6,2,2,1,4,1,4,1,12, + 1,18,1,6,2,8,1,6,1,6,1,2,1,8,1,10, + 1,12,1,12,1,18,1,10,1,6,1,10,1,2,1,14, + 1,16,1,16,1,6,1,122,21,83,111,117,114,99,101,76, + 111,97,100,101,114,46,103,101,116,95,99,111,100,101,78,114, + 91,0,0,0,41,10,114,109,0,0,0,114,108,0,0,0, + 114,110,0,0,0,114,192,0,0,0,114,193,0,0,0,114, + 195,0,0,0,114,194,0,0,0,114,198,0,0,0,114,202, + 0,0,0,114,184,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,191,0,0, + 0,174,2,0,0,115,14,0,0,0,8,2,8,8,8,13, + 8,10,8,7,8,10,14,8,114,191,0,0,0,99,0,0, + 0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0, + 0,0,115,80,0,0,0,101,0,90,1,100,0,90,2,100, + 1,90,3,100,2,100,3,132,0,90,4,100,4,100,5,132, + 0,90,5,100,6,100,7,132,0,90,6,101,7,135,0,102, + 1,100,8,100,9,132,8,131,1,90,8,101,7,100,10,100, + 11,132,0,131,1,90,9,100,12,100,13,132,0,90,10,135, + 0,4,0,90,11,83,0,41,14,218,10,70,105,108,101,76, + 111,97,100,101,114,122,103,66,97,115,101,32,102,105,108,101, + 32,108,111,97,100,101,114,32,99,108,97,115,115,32,119,104, + 105,99,104,32,105,109,112,108,101,109,101,110,116,115,32,116, + 104,101,32,108,111,97,100,101,114,32,112,114,111,116,111,99, + 111,108,32,109,101,116,104,111,100,115,32,116,104,97,116,10, + 32,32,32,32,114,101,113,117,105,114,101,32,102,105,108,101, + 32,115,121,115,116,101,109,32,117,115,97,103,101,46,99,3, + 0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,67, + 0,0,0,115,16,0,0,0,124,1,124,0,95,0,124,2, + 124,0,95,1,100,1,83,0,41,2,122,75,67,97,99,104, + 101,32,116,104,101,32,109,111,100,117,108,101,32,110,97,109, + 101,32,97,110,100,32,116,104,101,32,112,97,116,104,32,116, + 111,32,116,104,101,32,102,105,108,101,32,102,111,117,110,100, + 32,98,121,32,116,104,101,10,32,32,32,32,32,32,32,32, + 102,105,110,100,101,114,46,78,41,2,114,102,0,0,0,114, + 37,0,0,0,41,3,114,104,0,0,0,114,123,0,0,0, + 114,37,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,114,182,0,0,0,33,3,0,0,115,4,0, + 0,0,0,3,6,1,122,19,70,105,108,101,76,111,97,100, + 101,114,46,95,95,105,110,105,116,95,95,99,2,0,0,0, + 0,0,0,0,2,0,0,0,2,0,0,0,67,0,0,0, + 115,24,0,0,0,124,0,106,0,124,1,106,0,107,2,111, + 22,124,0,106,1,124,1,106,1,107,2,83,0,41,1,78, + 41,2,218,9,95,95,99,108,97,115,115,95,95,114,115,0, + 0,0,41,2,114,104,0,0,0,218,5,111,116,104,101,114, + 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218, + 6,95,95,101,113,95,95,39,3,0,0,115,4,0,0,0, + 0,1,12,1,122,17,70,105,108,101,76,111,97,100,101,114, + 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,20,0,0, + 0,116,0,124,0,106,1,131,1,116,0,124,0,106,2,131, + 1,65,0,83,0,41,1,78,41,3,218,4,104,97,115,104, + 114,102,0,0,0,114,37,0,0,0,41,1,114,104,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 114,191,0,0,0,174,2,0,0,115,14,0,0,0,8,2, - 8,8,8,13,8,10,8,7,8,10,14,8,114,191,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,4,0, - 0,0,0,0,0,0,115,80,0,0,0,101,0,90,1,100, - 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, - 4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,101, - 7,135,0,102,1,100,8,100,9,132,8,131,1,90,8,101, - 7,100,10,100,11,132,0,131,1,90,9,100,12,100,13,132, - 0,90,10,135,0,4,0,90,11,83,0,41,14,218,10,70, - 105,108,101,76,111,97,100,101,114,122,103,66,97,115,101,32, - 102,105,108,101,32,108,111,97,100,101,114,32,99,108,97,115, - 115,32,119,104,105,99,104,32,105,109,112,108,101,109,101,110, - 116,115,32,116,104,101,32,108,111,97,100,101,114,32,112,114, - 111,116,111,99,111,108,32,109,101,116,104,111,100,115,32,116, - 104,97,116,10,32,32,32,32,114,101,113,117,105,114,101,32, - 102,105,108,101,32,115,121,115,116,101,109,32,117,115,97,103, - 101,46,99,3,0,0,0,0,0,0,0,3,0,0,0,2, - 0,0,0,67,0,0,0,115,16,0,0,0,124,1,124,0, - 95,0,124,2,124,0,95,1,100,1,83,0,41,2,122,75, - 67,97,99,104,101,32,116,104,101,32,109,111,100,117,108,101, - 32,110,97,109,101,32,97,110,100,32,116,104,101,32,112,97, - 116,104,32,116,111,32,116,104,101,32,102,105,108,101,32,102, - 111,117,110,100,32,98,121,32,116,104,101,10,32,32,32,32, - 32,32,32,32,102,105,110,100,101,114,46,78,41,2,114,102, - 0,0,0,114,37,0,0,0,41,3,114,104,0,0,0,114, - 123,0,0,0,114,37,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,114,182,0,0,0,33,3,0, - 0,115,4,0,0,0,0,3,6,1,122,19,70,105,108,101, - 76,111,97,100,101,114,46,95,95,105,110,105,116,95,95,99, - 2,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, - 67,0,0,0,115,24,0,0,0,124,0,106,0,124,1,106, - 0,107,2,111,22,124,0,106,1,124,1,106,1,107,2,83, - 0,41,1,78,41,2,218,9,95,95,99,108,97,115,115,95, - 95,114,115,0,0,0,41,2,114,104,0,0,0,218,5,111, - 116,104,101,114,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,218,6,95,95,101,113,95,95,39,3,0,0,115, - 4,0,0,0,0,1,12,1,122,17,70,105,108,101,76,111, - 97,100,101,114,46,95,95,101,113,95,95,99,1,0,0,0, - 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, - 115,20,0,0,0,116,0,124,0,106,1,131,1,116,0,124, - 0,106,2,131,1,65,0,83,0,41,1,78,41,3,218,4, - 104,97,115,104,114,102,0,0,0,114,37,0,0,0,41,1, - 114,104,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 6,0,0,0,218,8,95,95,104,97,115,104,95,95,43,3, - 0,0,115,2,0,0,0,0,1,122,19,70,105,108,101,76, - 111,97,100,101,114,46,95,95,104,97,115,104,95,95,99,2, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3, - 0,0,0,115,16,0,0,0,116,0,116,1,124,0,131,2, - 160,2,124,1,161,1,83,0,41,1,122,100,76,111,97,100, - 32,97,32,109,111,100,117,108,101,32,102,114,111,109,32,97, - 32,102,105,108,101,46,10,10,32,32,32,32,32,32,32,32, - 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, - 101,120,101,99,95,109,111,100,117,108,101,40,41,32,105,110, - 115,116,101,97,100,46,10,10,32,32,32,32,32,32,32,32, - 41,3,218,5,115,117,112,101,114,114,206,0,0,0,114,190, - 0,0,0,41,2,114,104,0,0,0,114,123,0,0,0,41, - 1,114,207,0,0,0,114,4,0,0,0,114,6,0,0,0, - 114,190,0,0,0,46,3,0,0,115,2,0,0,0,0,10, - 122,22,70,105,108,101,76,111,97,100,101,114,46,108,111,97, - 100,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, - 0,2,0,0,0,1,0,0,0,67,0,0,0,115,6,0, - 0,0,124,0,106,0,83,0,41,1,122,58,82,101,116,117, - 114,110,32,116,104,101,32,112,97,116,104,32,116,111,32,116, - 104,101,32,115,111,117,114,99,101,32,102,105,108,101,32,97, - 115,32,102,111,117,110,100,32,98,121,32,116,104,101,32,102, - 105,110,100,101,114,46,41,1,114,37,0,0,0,41,2,114, - 104,0,0,0,114,123,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,114,155,0,0,0,58,3,0, - 0,115,2,0,0,0,0,3,122,23,70,105,108,101,76,111, - 97,100,101,114,46,103,101,116,95,102,105,108,101,110,97,109, - 101,99,2,0,0,0,0,0,0,0,3,0,0,0,9,0, - 0,0,67,0,0,0,115,32,0,0,0,116,0,160,1,124, - 1,100,1,161,2,143,10,125,2,124,2,160,2,161,0,83, - 0,81,0,82,0,88,0,100,2,83,0,41,3,122,39,82, - 101,116,117,114,110,32,116,104,101,32,100,97,116,97,32,102, - 114,111,109,32,112,97,116,104,32,97,115,32,114,97,119,32, - 98,121,116,101,115,46,218,1,114,78,41,3,114,52,0,0, - 0,114,53,0,0,0,90,4,114,101,97,100,41,3,114,104, - 0,0,0,114,37,0,0,0,114,57,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,114,196,0,0, - 0,63,3,0,0,115,4,0,0,0,0,2,14,1,122,19, - 70,105,108,101,76,111,97,100,101,114,46,103,101,116,95,100, - 97,116,97,41,12,114,109,0,0,0,114,108,0,0,0,114, - 110,0,0,0,114,111,0,0,0,114,182,0,0,0,114,209, - 0,0,0,114,211,0,0,0,114,120,0,0,0,114,190,0, - 0,0,114,155,0,0,0,114,196,0,0,0,90,13,95,95, - 99,108,97,115,115,99,101,108,108,95,95,114,4,0,0,0, - 114,4,0,0,0,41,1,114,207,0,0,0,114,6,0,0, - 0,114,206,0,0,0,28,3,0,0,115,12,0,0,0,12, - 5,8,6,8,4,8,3,16,12,12,5,114,206,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, - 0,64,0,0,0,115,46,0,0,0,101,0,90,1,100,0, - 90,2,100,1,90,3,100,2,100,3,132,0,90,4,100,4, - 100,5,132,0,90,5,100,6,100,7,156,1,100,8,100,9, - 132,2,90,6,100,10,83,0,41,11,218,16,83,111,117,114, - 99,101,70,105,108,101,76,111,97,100,101,114,122,62,67,111, - 110,99,114,101,116,101,32,105,109,112,108,101,109,101,110,116, - 97,116,105,111,110,32,111,102,32,83,111,117,114,99,101,76, - 111,97,100,101,114,32,117,115,105,110,103,32,116,104,101,32, - 102,105,108,101,32,115,121,115,116,101,109,46,99,2,0,0, - 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, - 0,115,22,0,0,0,116,0,124,1,131,1,125,2,124,2, - 106,1,124,2,106,2,100,1,156,2,83,0,41,2,122,33, - 82,101,116,117,114,110,32,116,104,101,32,109,101,116,97,100, - 97,116,97,32,102,111,114,32,116,104,101,32,112,97,116,104, - 46,41,2,114,130,0,0,0,114,131,0,0,0,41,3,114, - 41,0,0,0,218,8,115,116,95,109,116,105,109,101,90,7, - 115,116,95,115,105,122,101,41,3,114,104,0,0,0,114,37, - 0,0,0,114,204,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,114,193,0,0,0,73,3,0,0, - 115,4,0,0,0,0,2,8,1,122,27,83,111,117,114,99, - 101,70,105,108,101,76,111,97,100,101,114,46,112,97,116,104, - 95,115,116,97,116,115,99,4,0,0,0,0,0,0,0,5, - 0,0,0,5,0,0,0,67,0,0,0,115,24,0,0,0, - 116,0,124,1,131,1,125,4,124,0,106,1,124,2,124,3, - 124,4,100,1,141,3,83,0,41,2,78,41,1,218,5,95, - 109,111,100,101,41,2,114,101,0,0,0,114,194,0,0,0, - 41,5,114,104,0,0,0,114,94,0,0,0,114,93,0,0, - 0,114,56,0,0,0,114,44,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,114,195,0,0,0,78, - 3,0,0,115,4,0,0,0,0,2,8,1,122,32,83,111, - 117,114,99,101,70,105,108,101,76,111,97,100,101,114,46,95, - 99,97,99,104,101,95,98,121,116,101,99,111,100,101,105,182, - 1,0,0,41,1,114,216,0,0,0,99,3,0,0,0,1, - 0,0,0,9,0,0,0,18,0,0,0,67,0,0,0,115, - 250,0,0,0,116,0,124,1,131,1,92,2,125,4,125,5, - 103,0,125,6,120,40,124,4,114,56,116,1,124,4,131,1, - 12,0,114,56,116,0,124,4,131,1,92,2,125,4,125,7, - 124,6,160,2,124,7,161,1,1,0,113,18,87,0,120,108, - 116,3,124,6,131,1,68,0,93,96,125,7,116,4,124,4, - 124,7,131,2,125,4,121,14,116,5,160,6,124,4,161,1, - 1,0,87,0,113,68,4,0,116,7,107,10,114,118,1,0, - 1,0,1,0,119,68,89,0,113,68,4,0,116,8,107,10, - 114,162,1,0,125,8,1,0,122,18,116,9,160,10,100,1, - 124,4,124,8,161,3,1,0,100,2,83,0,100,2,125,8, - 126,8,88,0,113,68,88,0,113,68,87,0,121,28,116,11, - 124,1,124,2,124,3,131,3,1,0,116,9,160,10,100,3, - 124,1,161,2,1,0,87,0,110,48,4,0,116,8,107,10, - 114,244,1,0,125,8,1,0,122,20,116,9,160,10,100,1, - 124,1,124,8,161,3,1,0,87,0,89,0,100,2,100,2, - 125,8,126,8,88,0,110,2,88,0,100,2,83,0,41,4, - 122,27,87,114,105,116,101,32,98,121,116,101,115,32,100,97, - 116,97,32,116,111,32,97,32,102,105,108,101,46,122,27,99, - 111,117,108,100,32,110,111,116,32,99,114,101,97,116,101,32, - 123,33,114,125,58,32,123,33,114,125,78,122,12,99,114,101, - 97,116,101,100,32,123,33,114,125,41,12,114,40,0,0,0, - 114,48,0,0,0,114,161,0,0,0,114,35,0,0,0,114, - 30,0,0,0,114,3,0,0,0,90,5,109,107,100,105,114, - 218,15,70,105,108,101,69,120,105,115,116,115,69,114,114,111, - 114,114,42,0,0,0,114,118,0,0,0,114,133,0,0,0, - 114,58,0,0,0,41,9,114,104,0,0,0,114,37,0,0, - 0,114,56,0,0,0,114,216,0,0,0,218,6,112,97,114, - 101,110,116,114,98,0,0,0,114,29,0,0,0,114,25,0, - 0,0,114,197,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,6,0,0,0,114,194,0,0,0,83,3,0,0,115, - 42,0,0,0,0,2,12,1,4,2,16,1,12,1,14,2, - 14,1,10,1,2,1,14,1,14,2,6,1,16,3,6,1, - 8,1,20,1,2,1,12,1,16,1,16,2,8,1,122,25, - 83,111,117,114,99,101,70,105,108,101,76,111,97,100,101,114, - 46,115,101,116,95,100,97,116,97,78,41,7,114,109,0,0, - 0,114,108,0,0,0,114,110,0,0,0,114,111,0,0,0, - 114,193,0,0,0,114,195,0,0,0,114,194,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,114,214,0,0,0,69,3,0,0,115,6,0,0, - 0,12,4,8,5,8,5,114,214,0,0,0,99,0,0,0, - 0,0,0,0,0,0,0,0,0,2,0,0,0,64,0,0, - 0,115,32,0,0,0,101,0,90,1,100,0,90,2,100,1, + 218,8,95,95,104,97,115,104,95,95,43,3,0,0,115,2, + 0,0,0,0,1,122,19,70,105,108,101,76,111,97,100,101, + 114,46,95,95,104,97,115,104,95,95,99,2,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,3,0,0,0,115, + 16,0,0,0,116,0,116,1,124,0,131,2,160,2,124,1, + 161,1,83,0,41,1,122,100,76,111,97,100,32,97,32,109, + 111,100,117,108,101,32,102,114,111,109,32,97,32,102,105,108, + 101,46,10,10,32,32,32,32,32,32,32,32,84,104,105,115, + 32,109,101,116,104,111,100,32,105,115,32,100,101,112,114,101, + 99,97,116,101,100,46,32,32,85,115,101,32,101,120,101,99, + 95,109,111,100,117,108,101,40,41,32,105,110,115,116,101,97, + 100,46,10,10,32,32,32,32,32,32,32,32,41,3,218,5, + 115,117,112,101,114,114,206,0,0,0,114,190,0,0,0,41, + 2,114,104,0,0,0,114,123,0,0,0,41,1,114,207,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,190,0,0, + 0,46,3,0,0,115,2,0,0,0,0,10,122,22,70,105, + 108,101,76,111,97,100,101,114,46,108,111,97,100,95,109,111, + 100,117,108,101,99,2,0,0,0,0,0,0,0,2,0,0, + 0,1,0,0,0,67,0,0,0,115,6,0,0,0,124,0, + 106,0,83,0,41,1,122,58,82,101,116,117,114,110,32,116, + 104,101,32,112,97,116,104,32,116,111,32,116,104,101,32,115, + 111,117,114,99,101,32,102,105,108,101,32,97,115,32,102,111, + 117,110,100,32,98,121,32,116,104,101,32,102,105,110,100,101, + 114,46,41,1,114,37,0,0,0,41,2,114,104,0,0,0, + 114,123,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,114,155,0,0,0,58,3,0,0,115,2,0, + 0,0,0,3,122,23,70,105,108,101,76,111,97,100,101,114, + 46,103,101,116,95,102,105,108,101,110,97,109,101,99,2,0, + 0,0,0,0,0,0,3,0,0,0,9,0,0,0,67,0, + 0,0,115,32,0,0,0,116,0,160,1,124,1,100,1,161, + 2,143,10,125,2,124,2,160,2,161,0,83,0,81,0,82, + 0,88,0,100,2,83,0,41,3,122,39,82,101,116,117,114, + 110,32,116,104,101,32,100,97,116,97,32,102,114,111,109,32, + 112,97,116,104,32,97,115,32,114,97,119,32,98,121,116,101, + 115,46,218,1,114,78,41,3,114,52,0,0,0,114,53,0, + 0,0,90,4,114,101,97,100,41,3,114,104,0,0,0,114, + 37,0,0,0,114,57,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,114,196,0,0,0,63,3,0, + 0,115,4,0,0,0,0,2,14,1,122,19,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,100,97,116,97,41, + 12,114,109,0,0,0,114,108,0,0,0,114,110,0,0,0, + 114,111,0,0,0,114,182,0,0,0,114,209,0,0,0,114, + 211,0,0,0,114,120,0,0,0,114,190,0,0,0,114,155, + 0,0,0,114,196,0,0,0,90,13,95,95,99,108,97,115, + 115,99,101,108,108,95,95,114,4,0,0,0,114,4,0,0, + 0,41,1,114,207,0,0,0,114,6,0,0,0,114,206,0, + 0,0,28,3,0,0,115,12,0,0,0,12,5,8,6,8, + 4,8,3,16,12,12,5,114,206,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,3,0,0,0,64,0,0, + 0,115,46,0,0,0,101,0,90,1,100,0,90,2,100,1, 90,3,100,2,100,3,132,0,90,4,100,4,100,5,132,0, - 90,5,100,6,83,0,41,7,218,20,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,122,45, - 76,111,97,100,101,114,32,119,104,105,99,104,32,104,97,110, - 100,108,101,115,32,115,111,117,114,99,101,108,101,115,115,32, - 102,105,108,101,32,105,109,112,111,114,116,115,46,99,2,0, - 0,0,0,0,0,0,5,0,0,0,5,0,0,0,67,0, - 0,0,115,48,0,0,0,124,0,160,0,124,1,161,1,125, - 2,124,0,160,1,124,2,161,1,125,3,116,2,124,3,124, - 1,124,2,100,1,141,3,125,4,116,3,124,4,124,1,124, - 2,100,2,141,3,83,0,41,3,78,41,2,114,102,0,0, - 0,114,37,0,0,0,41,2,114,102,0,0,0,114,93,0, - 0,0,41,4,114,155,0,0,0,114,196,0,0,0,114,139, - 0,0,0,114,145,0,0,0,41,5,114,104,0,0,0,114, - 123,0,0,0,114,37,0,0,0,114,56,0,0,0,114,205, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0, - 0,0,114,184,0,0,0,118,3,0,0,115,8,0,0,0, - 0,1,10,1,10,1,14,1,122,29,83,111,117,114,99,101, - 108,101,115,115,70,105,108,101,76,111,97,100,101,114,46,103, - 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, - 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, - 0,100,1,83,0,41,2,122,39,82,101,116,117,114,110,32, - 78,111,110,101,32,97,115,32,116,104,101,114,101,32,105,115, - 32,110,111,32,115,111,117,114,99,101,32,99,111,100,101,46, - 78,114,4,0,0,0,41,2,114,104,0,0,0,114,123,0, + 90,5,100,6,100,7,156,1,100,8,100,9,132,2,90,6, + 100,10,83,0,41,11,218,16,83,111,117,114,99,101,70,105, + 108,101,76,111,97,100,101,114,122,62,67,111,110,99,114,101, + 116,101,32,105,109,112,108,101,109,101,110,116,97,116,105,111, + 110,32,111,102,32,83,111,117,114,99,101,76,111,97,100,101, + 114,32,117,115,105,110,103,32,116,104,101,32,102,105,108,101, + 32,115,121,115,116,101,109,46,99,2,0,0,0,0,0,0, + 0,3,0,0,0,3,0,0,0,67,0,0,0,115,22,0, + 0,0,116,0,124,1,131,1,125,2,124,2,106,1,124,2, + 106,2,100,1,156,2,83,0,41,2,122,33,82,101,116,117, + 114,110,32,116,104,101,32,109,101,116,97,100,97,116,97,32, + 102,111,114,32,116,104,101,32,112,97,116,104,46,41,2,114, + 130,0,0,0,114,131,0,0,0,41,3,114,41,0,0,0, + 218,8,115,116,95,109,116,105,109,101,90,7,115,116,95,115, + 105,122,101,41,3,114,104,0,0,0,114,37,0,0,0,114, + 204,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, + 0,0,0,114,193,0,0,0,73,3,0,0,115,4,0,0, + 0,0,2,8,1,122,27,83,111,117,114,99,101,70,105,108, + 101,76,111,97,100,101,114,46,112,97,116,104,95,115,116,97, + 116,115,99,4,0,0,0,0,0,0,0,5,0,0,0,5, + 0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,1, + 131,1,125,4,124,0,106,1,124,2,124,3,124,4,100,1, + 141,3,83,0,41,2,78,41,1,218,5,95,109,111,100,101, + 41,2,114,101,0,0,0,114,194,0,0,0,41,5,114,104, + 0,0,0,114,94,0,0,0,114,93,0,0,0,114,56,0, + 0,0,114,44,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,114,195,0,0,0,78,3,0,0,115, + 4,0,0,0,0,2,8,1,122,32,83,111,117,114,99,101, + 70,105,108,101,76,111,97,100,101,114,46,95,99,97,99,104, + 101,95,98,121,116,101,99,111,100,101,105,182,1,0,0,41, + 1,114,216,0,0,0,99,3,0,0,0,1,0,0,0,9, + 0,0,0,18,0,0,0,67,0,0,0,115,248,0,0,0, + 116,0,124,1,131,1,92,2,125,4,125,5,103,0,125,6, + 120,38,124,4,114,54,116,1,124,4,131,1,115,54,116,0, + 124,4,131,1,92,2,125,4,125,7,124,6,160,2,124,7, + 161,1,1,0,113,18,87,0,120,108,116,3,124,6,131,1, + 68,0,93,96,125,7,116,4,124,4,124,7,131,2,125,4, + 121,14,116,5,160,6,124,4,161,1,1,0,87,0,113,66, + 4,0,116,7,107,10,114,116,1,0,1,0,1,0,119,66, + 89,0,113,66,4,0,116,8,107,10,114,160,1,0,125,8, + 1,0,122,18,116,9,160,10,100,1,124,4,124,8,161,3, + 1,0,100,2,83,0,100,2,125,8,126,8,88,0,113,66, + 88,0,113,66,87,0,121,28,116,11,124,1,124,2,124,3, + 131,3,1,0,116,9,160,10,100,3,124,1,161,2,1,0, + 87,0,110,48,4,0,116,8,107,10,114,242,1,0,125,8, + 1,0,122,20,116,9,160,10,100,1,124,1,124,8,161,3, + 1,0,87,0,89,0,100,2,100,2,125,8,126,8,88,0, + 110,2,88,0,100,2,83,0,41,4,122,27,87,114,105,116, + 101,32,98,121,116,101,115,32,100,97,116,97,32,116,111,32, + 97,32,102,105,108,101,46,122,27,99,111,117,108,100,32,110, + 111,116,32,99,114,101,97,116,101,32,123,33,114,125,58,32, + 123,33,114,125,78,122,12,99,114,101,97,116,101,100,32,123, + 33,114,125,41,12,114,40,0,0,0,114,48,0,0,0,114, + 161,0,0,0,114,35,0,0,0,114,30,0,0,0,114,3, + 0,0,0,90,5,109,107,100,105,114,218,15,70,105,108,101, + 69,120,105,115,116,115,69,114,114,111,114,114,42,0,0,0, + 114,118,0,0,0,114,133,0,0,0,114,58,0,0,0,41, + 9,114,104,0,0,0,114,37,0,0,0,114,56,0,0,0, + 114,216,0,0,0,218,6,112,97,114,101,110,116,114,98,0, + 0,0,114,29,0,0,0,114,25,0,0,0,114,197,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, + 114,194,0,0,0,83,3,0,0,115,42,0,0,0,0,2, + 12,1,4,2,14,1,12,1,14,2,14,1,10,1,2,1, + 14,1,14,2,6,1,16,3,6,1,8,1,20,1,2,1, + 12,1,16,1,16,2,8,1,122,25,83,111,117,114,99,101, + 70,105,108,101,76,111,97,100,101,114,46,115,101,116,95,100, + 97,116,97,78,41,7,114,109,0,0,0,114,108,0,0,0, + 114,110,0,0,0,114,111,0,0,0,114,193,0,0,0,114, + 195,0,0,0,114,194,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,6,0,0,0,114,214,0, + 0,0,69,3,0,0,115,6,0,0,0,12,4,8,5,8, + 5,114,214,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,2,0,0,0,64,0,0,0,115,32,0,0,0, + 101,0,90,1,100,0,90,2,100,1,90,3,100,2,100,3, + 132,0,90,4,100,4,100,5,132,0,90,5,100,6,83,0, + 41,7,218,20,83,111,117,114,99,101,108,101,115,115,70,105, + 108,101,76,111,97,100,101,114,122,45,76,111,97,100,101,114, + 32,119,104,105,99,104,32,104,97,110,100,108,101,115,32,115, + 111,117,114,99,101,108,101,115,115,32,102,105,108,101,32,105, + 109,112,111,114,116,115,46,99,2,0,0,0,0,0,0,0, + 5,0,0,0,5,0,0,0,67,0,0,0,115,48,0,0, + 0,124,0,160,0,124,1,161,1,125,2,124,0,160,1,124, + 2,161,1,125,3,116,2,124,3,124,1,124,2,100,1,141, + 3,125,4,116,3,124,4,124,1,124,2,100,2,141,3,83, + 0,41,3,78,41,2,114,102,0,0,0,114,37,0,0,0, + 41,2,114,102,0,0,0,114,93,0,0,0,41,4,114,155, + 0,0,0,114,196,0,0,0,114,139,0,0,0,114,145,0, + 0,0,41,5,114,104,0,0,0,114,123,0,0,0,114,37, + 0,0,0,114,56,0,0,0,114,205,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,184,0,0, + 0,118,3,0,0,115,8,0,0,0,0,1,10,1,10,1, + 14,1,122,29,83,111,117,114,99,101,108,101,115,115,70,105, + 108,101,76,111,97,100,101,114,46,103,101,116,95,99,111,100, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,1,0, + 0,0,67,0,0,0,115,4,0,0,0,100,1,83,0,41, + 2,122,39,82,101,116,117,114,110,32,78,111,110,101,32,97, + 115,32,116,104,101,114,101,32,105,115,32,110,111,32,115,111, + 117,114,99,101,32,99,111,100,101,46,78,114,4,0,0,0, + 41,2,114,104,0,0,0,114,123,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,6,0,0,0,114,198,0,0,0, + 124,3,0,0,115,2,0,0,0,0,2,122,31,83,111,117, + 114,99,101,108,101,115,115,70,105,108,101,76,111,97,100,101, + 114,46,103,101,116,95,115,111,117,114,99,101,78,41,6,114, + 109,0,0,0,114,108,0,0,0,114,110,0,0,0,114,111, + 0,0,0,114,184,0,0,0,114,198,0,0,0,114,4,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0, - 0,114,198,0,0,0,124,3,0,0,115,2,0,0,0,0, - 2,122,31,83,111,117,114,99,101,108,101,115,115,70,105,108, - 101,76,111,97,100,101,114,46,103,101,116,95,115,111,117,114, - 99,101,78,41,6,114,109,0,0,0,114,108,0,0,0,114, - 110,0,0,0,114,111,0,0,0,114,184,0,0,0,114,198, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,114,219,0,0,0,114,3,0,0, - 115,4,0,0,0,12,4,8,6,114,219,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,64, - 0,0,0,115,92,0,0,0,101,0,90,1,100,0,90,2, - 100,1,90,3,100,2,100,3,132,0,90,4,100,4,100,5, - 132,0,90,5,100,6,100,7,132,0,90,6,100,8,100,9, - 132,0,90,7,100,10,100,11,132,0,90,8,100,12,100,13, - 132,0,90,9,100,14,100,15,132,0,90,10,100,16,100,17, - 132,0,90,11,101,12,100,18,100,19,132,0,131,1,90,13, - 100,20,83,0,41,21,218,19,69,120,116,101,110,115,105,111, - 110,70,105,108,101,76,111,97,100,101,114,122,93,76,111,97, - 100,101,114,32,102,111,114,32,101,120,116,101,110,115,105,111, - 110,32,109,111,100,117,108,101,115,46,10,10,32,32,32,32, - 84,104,101,32,99,111,110,115,116,114,117,99,116,111,114,32, - 105,115,32,100,101,115,105,103,110,101,100,32,116,111,32,119, - 111,114,107,32,119,105,116,104,32,70,105,108,101,70,105,110, - 100,101,114,46,10,10,32,32,32,32,99,3,0,0,0,0, - 0,0,0,3,0,0,0,2,0,0,0,67,0,0,0,115, - 16,0,0,0,124,1,124,0,95,0,124,2,124,0,95,1, - 100,0,83,0,41,1,78,41,2,114,102,0,0,0,114,37, - 0,0,0,41,3,114,104,0,0,0,114,102,0,0,0,114, - 37,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,114,182,0,0,0,141,3,0,0,115,4,0,0, - 0,0,1,6,1,122,28,69,120,116,101,110,115,105,111,110, - 70,105,108,101,76,111,97,100,101,114,46,95,95,105,110,105, - 116,95,95,99,2,0,0,0,0,0,0,0,2,0,0,0, - 2,0,0,0,67,0,0,0,115,24,0,0,0,124,0,106, - 0,124,1,106,0,107,2,111,22,124,0,106,1,124,1,106, - 1,107,2,83,0,41,1,78,41,2,114,207,0,0,0,114, - 115,0,0,0,41,2,114,104,0,0,0,114,208,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114, - 209,0,0,0,145,3,0,0,115,4,0,0,0,0,1,12, - 1,122,26,69,120,116,101,110,115,105,111,110,70,105,108,101, - 76,111,97,100,101,114,46,95,95,101,113,95,95,99,1,0, - 0,0,0,0,0,0,1,0,0,0,3,0,0,0,67,0, - 0,0,115,20,0,0,0,116,0,124,0,106,1,131,1,116, - 0,124,0,106,2,131,1,65,0,83,0,41,1,78,41,3, - 114,210,0,0,0,114,102,0,0,0,114,37,0,0,0,41, - 1,114,104,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,6,0,0,0,114,211,0,0,0,149,3,0,0,115,2, - 0,0,0,0,1,122,28,69,120,116,101,110,115,105,111,110, - 70,105,108,101,76,111,97,100,101,114,46,95,95,104,97,115, - 104,95,95,99,2,0,0,0,0,0,0,0,3,0,0,0, - 5,0,0,0,67,0,0,0,115,36,0,0,0,116,0,160, - 1,116,2,106,3,124,1,161,2,125,2,116,0,160,4,100, - 1,124,1,106,5,124,0,106,6,161,3,1,0,124,2,83, - 0,41,2,122,38,67,114,101,97,116,101,32,97,110,32,117, - 110,105,116,105,97,108,105,122,101,100,32,101,120,116,101,110, - 115,105,111,110,32,109,111,100,117,108,101,122,38,101,120,116, - 101,110,115,105,111,110,32,109,111,100,117,108,101,32,123,33, - 114,125,32,108,111,97,100,101,100,32,102,114,111,109,32,123, - 33,114,125,41,7,114,118,0,0,0,114,185,0,0,0,114, - 143,0,0,0,90,14,99,114,101,97,116,101,95,100,121,110, - 97,109,105,99,114,133,0,0,0,114,102,0,0,0,114,37, - 0,0,0,41,3,114,104,0,0,0,114,162,0,0,0,114, - 187,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,114,183,0,0,0,152,3,0,0,115,10,0,0, - 0,0,2,4,1,10,1,6,1,12,1,122,33,69,120,116, + 0,114,219,0,0,0,114,3,0,0,115,4,0,0,0,12, + 4,8,6,114,219,0,0,0,99,0,0,0,0,0,0,0, + 0,0,0,0,0,3,0,0,0,64,0,0,0,115,92,0, + 0,0,101,0,90,1,100,0,90,2,100,1,90,3,100,2, + 100,3,132,0,90,4,100,4,100,5,132,0,90,5,100,6, + 100,7,132,0,90,6,100,8,100,9,132,0,90,7,100,10, + 100,11,132,0,90,8,100,12,100,13,132,0,90,9,100,14, + 100,15,132,0,90,10,100,16,100,17,132,0,90,11,101,12, + 100,18,100,19,132,0,131,1,90,13,100,20,83,0,41,21, + 218,19,69,120,116,101,110,115,105,111,110,70,105,108,101,76, + 111,97,100,101,114,122,93,76,111,97,100,101,114,32,102,111, + 114,32,101,120,116,101,110,115,105,111,110,32,109,111,100,117, + 108,101,115,46,10,10,32,32,32,32,84,104,101,32,99,111, + 110,115,116,114,117,99,116,111,114,32,105,115,32,100,101,115, + 105,103,110,101,100,32,116,111,32,119,111,114,107,32,119,105, + 116,104,32,70,105,108,101,70,105,110,100,101,114,46,10,10, + 32,32,32,32,99,3,0,0,0,0,0,0,0,3,0,0, + 0,2,0,0,0,67,0,0,0,115,16,0,0,0,124,1, + 124,0,95,0,124,2,124,0,95,1,100,0,83,0,41,1, + 78,41,2,114,102,0,0,0,114,37,0,0,0,41,3,114, + 104,0,0,0,114,102,0,0,0,114,37,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,6,0,0,0,114,182,0, + 0,0,141,3,0,0,115,4,0,0,0,0,1,6,1,122, + 28,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,95,95,105,110,105,116,95,95,99,2,0, + 0,0,0,0,0,0,2,0,0,0,2,0,0,0,67,0, + 0,0,115,24,0,0,0,124,0,106,0,124,1,106,0,107, + 2,111,22,124,0,106,1,124,1,106,1,107,2,83,0,41, + 1,78,41,2,114,207,0,0,0,114,115,0,0,0,41,2, + 114,104,0,0,0,114,208,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,6,0,0,0,114,209,0,0,0,145,3, + 0,0,115,4,0,0,0,0,1,12,1,122,26,69,120,116, 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, - 46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2, - 0,0,0,0,0,0,0,2,0,0,0,5,0,0,0,67, - 0,0,0,115,36,0,0,0,116,0,160,1,116,2,106,3, - 124,1,161,2,1,0,116,0,160,4,100,1,124,0,106,5, - 124,0,106,6,161,3,1,0,100,2,83,0,41,3,122,30, - 73,110,105,116,105,97,108,105,122,101,32,97,110,32,101,120, - 116,101,110,115,105,111,110,32,109,111,100,117,108,101,122,40, + 46,95,95,101,113,95,95,99,1,0,0,0,0,0,0,0, + 1,0,0,0,3,0,0,0,67,0,0,0,115,20,0,0, + 0,116,0,124,0,106,1,131,1,116,0,124,0,106,2,131, + 1,65,0,83,0,41,1,78,41,3,114,210,0,0,0,114, + 102,0,0,0,114,37,0,0,0,41,1,114,104,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114, + 211,0,0,0,149,3,0,0,115,2,0,0,0,0,1,122, + 28,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,95,95,104,97,115,104,95,95,99,2,0, + 0,0,0,0,0,0,3,0,0,0,5,0,0,0,67,0, + 0,0,115,36,0,0,0,116,0,160,1,116,2,106,3,124, + 1,161,2,125,2,116,0,160,4,100,1,124,1,106,5,124, + 0,106,6,161,3,1,0,124,2,83,0,41,2,122,38,67, + 114,101,97,116,101,32,97,110,32,117,110,105,116,105,97,108, + 105,122,101,100,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,122,38,101,120,116,101,110,115,105,111,110, + 32,109,111,100,117,108,101,32,123,33,114,125,32,108,111,97, + 100,101,100,32,102,114,111,109,32,123,33,114,125,41,7,114, + 118,0,0,0,114,185,0,0,0,114,143,0,0,0,90,14, + 99,114,101,97,116,101,95,100,121,110,97,109,105,99,114,133, + 0,0,0,114,102,0,0,0,114,37,0,0,0,41,3,114, + 104,0,0,0,114,162,0,0,0,114,187,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,6,0,0,0,114,183,0, + 0,0,152,3,0,0,115,10,0,0,0,0,2,4,1,10, + 1,6,1,12,1,122,33,69,120,116,101,110,115,105,111,110, + 70,105,108,101,76,111,97,100,101,114,46,99,114,101,97,116, + 101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, + 0,2,0,0,0,5,0,0,0,67,0,0,0,115,36,0, + 0,0,116,0,160,1,116,2,106,3,124,1,161,2,1,0, + 116,0,160,4,100,1,124,0,106,5,124,0,106,6,161,3, + 1,0,100,2,83,0,41,3,122,30,73,110,105,116,105,97, + 108,105,122,101,32,97,110,32,101,120,116,101,110,115,105,111, + 110,32,109,111,100,117,108,101,122,40,101,120,116,101,110,115, + 105,111,110,32,109,111,100,117,108,101,32,123,33,114,125,32, + 101,120,101,99,117,116,101,100,32,102,114,111,109,32,123,33, + 114,125,78,41,7,114,118,0,0,0,114,185,0,0,0,114, + 143,0,0,0,90,12,101,120,101,99,95,100,121,110,97,109, + 105,99,114,133,0,0,0,114,102,0,0,0,114,37,0,0, + 0,41,2,114,104,0,0,0,114,187,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,188,0,0, + 0,160,3,0,0,115,6,0,0,0,0,2,14,1,6,1, + 122,31,69,120,116,101,110,115,105,111,110,70,105,108,101,76, + 111,97,100,101,114,46,101,120,101,99,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,3,0,0,0,115,36,0,0,0,116,0,124,0,106, + 1,131,1,100,1,25,0,137,0,116,2,135,0,102,1,100, + 2,100,3,132,8,116,3,68,0,131,1,131,1,83,0,41, + 4,122,49,82,101,116,117,114,110,32,84,114,117,101,32,105, + 102,32,116,104,101,32,101,120,116,101,110,115,105,111,110,32, + 109,111,100,117,108,101,32,105,115,32,97,32,112,97,99,107, + 97,103,101,46,114,31,0,0,0,99,1,0,0,0,0,0, + 0,0,2,0,0,0,4,0,0,0,51,0,0,0,115,26, + 0,0,0,124,0,93,18,125,1,136,0,100,0,124,1,23, + 0,107,2,86,0,1,0,113,2,100,1,83,0,41,2,114, + 182,0,0,0,78,114,4,0,0,0,41,2,114,24,0,0, + 0,218,6,115,117,102,102,105,120,41,1,218,9,102,105,108, + 101,95,110,97,109,101,114,4,0,0,0,114,6,0,0,0, + 250,9,60,103,101,110,101,120,112,114,62,169,3,0,0,115, + 2,0,0,0,4,1,122,49,69,120,116,101,110,115,105,111, + 110,70,105,108,101,76,111,97,100,101,114,46,105,115,95,112, + 97,99,107,97,103,101,46,60,108,111,99,97,108,115,62,46, + 60,103,101,110,101,120,112,114,62,41,4,114,40,0,0,0, + 114,37,0,0,0,218,3,97,110,121,218,18,69,88,84,69, + 78,83,73,79,78,95,83,85,70,70,73,88,69,83,41,2, + 114,104,0,0,0,114,123,0,0,0,114,4,0,0,0,41, + 1,114,222,0,0,0,114,6,0,0,0,114,157,0,0,0, + 166,3,0,0,115,6,0,0,0,0,2,14,1,12,1,122, + 30,69,120,116,101,110,115,105,111,110,70,105,108,101,76,111, + 97,100,101,114,46,105,115,95,112,97,99,107,97,103,101,99, + 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, + 63,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, + 97,110,32,101,120,116,101,110,115,105,111,110,32,109,111,100, + 117,108,101,32,99,97,110,110,111,116,32,99,114,101,97,116, + 101,32,97,32,99,111,100,101,32,111,98,106,101,99,116,46, + 78,114,4,0,0,0,41,2,114,104,0,0,0,114,123,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0, + 0,114,184,0,0,0,172,3,0,0,115,2,0,0,0,0, + 2,122,28,69,120,116,101,110,115,105,111,110,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,99,111,100,101,99, + 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,122, + 53,82,101,116,117,114,110,32,78,111,110,101,32,97,115,32, 101,120,116,101,110,115,105,111,110,32,109,111,100,117,108,101, - 32,123,33,114,125,32,101,120,101,99,117,116,101,100,32,102, - 114,111,109,32,123,33,114,125,78,41,7,114,118,0,0,0, - 114,185,0,0,0,114,143,0,0,0,90,12,101,120,101,99, - 95,100,121,110,97,109,105,99,114,133,0,0,0,114,102,0, - 0,0,114,37,0,0,0,41,2,114,104,0,0,0,114,187, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0, - 0,0,114,188,0,0,0,160,3,0,0,115,6,0,0,0, - 0,2,14,1,6,1,122,31,69,120,116,101,110,115,105,111, - 110,70,105,108,101,76,111,97,100,101,114,46,101,120,101,99, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 2,0,0,0,4,0,0,0,3,0,0,0,115,36,0,0, - 0,116,0,124,0,106,1,131,1,100,1,25,0,137,0,116, - 2,135,0,102,1,100,2,100,3,132,8,116,3,68,0,131, - 1,131,1,83,0,41,4,122,49,82,101,116,117,114,110,32, - 84,114,117,101,32,105,102,32,116,104,101,32,101,120,116,101, - 110,115,105,111,110,32,109,111,100,117,108,101,32,105,115,32, - 97,32,112,97,99,107,97,103,101,46,114,31,0,0,0,99, - 1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 51,0,0,0,115,26,0,0,0,124,0,93,18,125,1,136, - 0,100,0,124,1,23,0,107,2,86,0,1,0,113,2,100, - 1,83,0,41,2,114,182,0,0,0,78,114,4,0,0,0, - 41,2,114,24,0,0,0,218,6,115,117,102,102,105,120,41, - 1,218,9,102,105,108,101,95,110,97,109,101,114,4,0,0, - 0,114,6,0,0,0,250,9,60,103,101,110,101,120,112,114, - 62,169,3,0,0,115,2,0,0,0,4,1,122,49,69,120, - 116,101,110,115,105,111,110,70,105,108,101,76,111,97,100,101, - 114,46,105,115,95,112,97,99,107,97,103,101,46,60,108,111, - 99,97,108,115,62,46,60,103,101,110,101,120,112,114,62,41, - 4,114,40,0,0,0,114,37,0,0,0,218,3,97,110,121, - 218,18,69,88,84,69,78,83,73,79,78,95,83,85,70,70, - 73,88,69,83,41,2,114,104,0,0,0,114,123,0,0,0, - 114,4,0,0,0,41,1,114,222,0,0,0,114,6,0,0, - 0,114,157,0,0,0,166,3,0,0,115,6,0,0,0,0, - 2,14,1,12,1,122,30,69,120,116,101,110,115,105,111,110, - 70,105,108,101,76,111,97,100,101,114,46,105,115,95,112,97, - 99,107,97,103,101,99,2,0,0,0,0,0,0,0,2,0, - 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, - 1,83,0,41,2,122,63,82,101,116,117,114,110,32,78,111, - 110,101,32,97,115,32,97,110,32,101,120,116,101,110,115,105, - 111,110,32,109,111,100,117,108,101,32,99,97,110,110,111,116, - 32,99,114,101,97,116,101,32,97,32,99,111,100,101,32,111, - 98,106,101,99,116,46,78,114,4,0,0,0,41,2,114,104, + 115,32,104,97,118,101,32,110,111,32,115,111,117,114,99,101, + 32,99,111,100,101,46,78,114,4,0,0,0,41,2,114,104, 0,0,0,114,123,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,114,184,0,0,0,172,3,0,0, - 115,2,0,0,0,0,2,122,28,69,120,116,101,110,115,105, + 0,0,114,6,0,0,0,114,198,0,0,0,176,3,0,0, + 115,2,0,0,0,0,2,122,30,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116, - 95,99,111,100,101,99,2,0,0,0,0,0,0,0,2,0, - 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, - 1,83,0,41,2,122,53,82,101,116,117,114,110,32,78,111, - 110,101,32,97,115,32,101,120,116,101,110,115,105,111,110,32, - 109,111,100,117,108,101,115,32,104,97,118,101,32,110,111,32, - 115,111,117,114,99,101,32,99,111,100,101,46,78,114,4,0, - 0,0,41,2,114,104,0,0,0,114,123,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,6,0,0,0,114,198,0, - 0,0,176,3,0,0,115,2,0,0,0,0,2,122,30,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,46,103,101,116,95,115,111,117,114,99,101,99,2,0, - 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, - 0,0,115,6,0,0,0,124,0,106,0,83,0,41,1,122, - 58,82,101,116,117,114,110,32,116,104,101,32,112,97,116,104, - 32,116,111,32,116,104,101,32,115,111,117,114,99,101,32,102, - 105,108,101,32,97,115,32,102,111,117,110,100,32,98,121,32, - 116,104,101,32,102,105,110,100,101,114,46,41,1,114,37,0, - 0,0,41,2,114,104,0,0,0,114,123,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,6,0,0,0,114,155,0, - 0,0,180,3,0,0,115,2,0,0,0,0,3,122,32,69, - 120,116,101,110,115,105,111,110,70,105,108,101,76,111,97,100, - 101,114,46,103,101,116,95,102,105,108,101,110,97,109,101,78, - 41,14,114,109,0,0,0,114,108,0,0,0,114,110,0,0, - 0,114,111,0,0,0,114,182,0,0,0,114,209,0,0,0, - 114,211,0,0,0,114,183,0,0,0,114,188,0,0,0,114, - 157,0,0,0,114,184,0,0,0,114,198,0,0,0,114,120, - 0,0,0,114,155,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,114,220,0,0, - 0,133,3,0,0,115,18,0,0,0,12,8,8,4,8,4, - 8,3,8,8,8,6,8,6,8,4,8,4,114,220,0,0, - 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, - 0,0,64,0,0,0,115,96,0,0,0,101,0,90,1,100, - 0,90,2,100,1,90,3,100,2,100,3,132,0,90,4,100, - 4,100,5,132,0,90,5,100,6,100,7,132,0,90,6,100, - 8,100,9,132,0,90,7,100,10,100,11,132,0,90,8,100, - 12,100,13,132,0,90,9,100,14,100,15,132,0,90,10,100, - 16,100,17,132,0,90,11,100,18,100,19,132,0,90,12,100, - 20,100,21,132,0,90,13,100,22,83,0,41,23,218,14,95, - 78,97,109,101,115,112,97,99,101,80,97,116,104,97,38,1, - 0,0,82,101,112,114,101,115,101,110,116,115,32,97,32,110, - 97,109,101,115,112,97,99,101,32,112,97,99,107,97,103,101, - 39,115,32,112,97,116,104,46,32,32,73,116,32,117,115,101, - 115,32,116,104,101,32,109,111,100,117,108,101,32,110,97,109, - 101,10,32,32,32,32,116,111,32,102,105,110,100,32,105,116, - 115,32,112,97,114,101,110,116,32,109,111,100,117,108,101,44, - 32,97,110,100,32,102,114,111,109,32,116,104,101,114,101,32, - 105,116,32,108,111,111,107,115,32,117,112,32,116,104,101,32, - 112,97,114,101,110,116,39,115,10,32,32,32,32,95,95,112, - 97,116,104,95,95,46,32,32,87,104,101,110,32,116,104,105, - 115,32,99,104,97,110,103,101,115,44,32,116,104,101,32,109, - 111,100,117,108,101,39,115,32,111,119,110,32,112,97,116,104, - 32,105,115,32,114,101,99,111,109,112,117,116,101,100,44,10, - 32,32,32,32,117,115,105,110,103,32,112,97,116,104,95,102, - 105,110,100,101,114,46,32,32,70,111,114,32,116,111,112,45, - 108,101,118,101,108,32,109,111,100,117,108,101,115,44,32,116, - 104,101,32,112,97,114,101,110,116,32,109,111,100,117,108,101, - 39,115,32,112,97,116,104,10,32,32,32,32,105,115,32,115, - 121,115,46,112,97,116,104,46,99,4,0,0,0,0,0,0, - 0,4,0,0,0,3,0,0,0,67,0,0,0,115,36,0, - 0,0,124,1,124,0,95,0,124,2,124,0,95,1,116,2, - 124,0,160,3,161,0,131,1,124,0,95,4,124,3,124,0, - 95,5,100,0,83,0,41,1,78,41,6,218,5,95,110,97, - 109,101,218,5,95,112,97,116,104,114,97,0,0,0,218,16, - 95,103,101,116,95,112,97,114,101,110,116,95,112,97,116,104, - 218,17,95,108,97,115,116,95,112,97,114,101,110,116,95,112, - 97,116,104,218,12,95,112,97,116,104,95,102,105,110,100,101, - 114,41,4,114,104,0,0,0,114,102,0,0,0,114,37,0, - 0,0,218,11,112,97,116,104,95,102,105,110,100,101,114,114, - 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,182, - 0,0,0,193,3,0,0,115,8,0,0,0,0,1,6,1, - 6,1,14,1,122,23,95,78,97,109,101,115,112,97,99,101, - 80,97,116,104,46,95,95,105,110,105,116,95,95,99,1,0, - 0,0,0,0,0,0,4,0,0,0,3,0,0,0,67,0, - 0,0,115,38,0,0,0,124,0,106,0,160,1,100,1,161, - 1,92,3,125,1,125,2,125,3,124,2,100,2,107,2,114, - 30,100,6,83,0,124,1,100,5,102,2,83,0,41,7,122, - 62,82,101,116,117,114,110,115,32,97,32,116,117,112,108,101, - 32,111,102,32,40,112,97,114,101,110,116,45,109,111,100,117, - 108,101,45,110,97,109,101,44,32,112,97,114,101,110,116,45, - 112,97,116,104,45,97,116,116,114,45,110,97,109,101,41,114, - 61,0,0,0,114,32,0,0,0,114,8,0,0,0,114,37, - 0,0,0,90,8,95,95,112,97,116,104,95,95,41,2,114, - 8,0,0,0,114,37,0,0,0,41,2,114,227,0,0,0, - 114,34,0,0,0,41,4,114,104,0,0,0,114,218,0,0, - 0,218,3,100,111,116,90,2,109,101,114,4,0,0,0,114, - 4,0,0,0,114,6,0,0,0,218,23,95,102,105,110,100, - 95,112,97,114,101,110,116,95,112,97,116,104,95,110,97,109, - 101,115,199,3,0,0,115,8,0,0,0,0,2,18,1,8, - 2,4,3,122,38,95,78,97,109,101,115,112,97,99,101,80, - 97,116,104,46,95,102,105,110,100,95,112,97,114,101,110,116, - 95,112,97,116,104,95,110,97,109,101,115,99,1,0,0,0, - 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, - 115,28,0,0,0,124,0,160,0,161,0,92,2,125,1,125, - 2,116,1,116,2,106,3,124,1,25,0,124,2,131,2,83, - 0,41,1,78,41,4,114,234,0,0,0,114,114,0,0,0, - 114,8,0,0,0,218,7,109,111,100,117,108,101,115,41,3, - 114,104,0,0,0,90,18,112,97,114,101,110,116,95,109,111, - 100,117,108,101,95,110,97,109,101,90,14,112,97,116,104,95, - 97,116,116,114,95,110,97,109,101,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,114,229,0,0,0,209,3,0, - 0,115,4,0,0,0,0,1,12,1,122,31,95,78,97,109, - 101,115,112,97,99,101,80,97,116,104,46,95,103,101,116,95, - 112,97,114,101,110,116,95,112,97,116,104,99,1,0,0,0, - 0,0,0,0,3,0,0,0,4,0,0,0,67,0,0,0, - 115,80,0,0,0,116,0,124,0,160,1,161,0,131,1,125, - 1,124,1,124,0,106,2,107,3,114,74,124,0,160,3,124, - 0,106,4,124,1,161,2,125,2,124,2,100,0,107,9,114, - 68,124,2,106,5,100,0,107,8,114,68,124,2,106,6,114, - 68,124,2,106,6,124,0,95,7,124,1,124,0,95,2,124, - 0,106,7,83,0,41,1,78,41,8,114,97,0,0,0,114, - 229,0,0,0,114,230,0,0,0,114,231,0,0,0,114,227, - 0,0,0,114,124,0,0,0,114,154,0,0,0,114,228,0, - 0,0,41,3,114,104,0,0,0,90,11,112,97,114,101,110, - 116,95,112,97,116,104,114,162,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,12,95,114,101,99, - 97,108,99,117,108,97,116,101,213,3,0,0,115,16,0,0, - 0,0,2,12,1,10,1,14,3,18,1,6,1,8,1,6, - 1,122,27,95,78,97,109,101,115,112,97,99,101,80,97,116, - 104,46,95,114,101,99,97,108,99,117,108,97,116,101,99,1, - 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67, - 0,0,0,115,12,0,0,0,116,0,124,0,160,1,161,0, - 131,1,83,0,41,1,78,41,2,218,4,105,116,101,114,114, - 236,0,0,0,41,1,114,104,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,8,95,95,105,116, - 101,114,95,95,226,3,0,0,115,2,0,0,0,0,1,122, - 23,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,95,105,116,101,114,95,95,99,3,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,67,0,0,0,115,14,0, - 0,0,124,2,124,0,106,0,124,1,60,0,100,0,83,0, - 41,1,78,41,1,114,228,0,0,0,41,3,114,104,0,0, - 0,218,5,105,110,100,101,120,114,37,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,218,11,95,95, - 115,101,116,105,116,101,109,95,95,229,3,0,0,115,2,0, - 0,0,0,1,122,26,95,78,97,109,101,115,112,97,99,101, - 80,97,116,104,46,95,95,115,101,116,105,116,101,109,95,95, - 99,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0, - 0,67,0,0,0,115,12,0,0,0,116,0,124,0,160,1, - 161,0,131,1,83,0,41,1,78,41,2,114,33,0,0,0, - 114,236,0,0,0,41,1,114,104,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,6,0,0,0,218,7,95,95,108, - 101,110,95,95,232,3,0,0,115,2,0,0,0,0,1,122, - 22,95,78,97,109,101,115,112,97,99,101,80,97,116,104,46, - 95,95,108,101,110,95,95,99,1,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,67,0,0,0,115,12,0,0, - 0,100,1,160,0,124,0,106,1,161,1,83,0,41,2,78, - 122,20,95,78,97,109,101,115,112,97,99,101,80,97,116,104, - 40,123,33,114,125,41,41,2,114,50,0,0,0,114,228,0, - 0,0,41,1,114,104,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,218,8,95,95,114,101,112,114, - 95,95,235,3,0,0,115,2,0,0,0,0,1,122,23,95, - 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,95, - 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,67,0,0,0,115,12,0,0,0, - 124,1,124,0,160,0,161,0,107,6,83,0,41,1,78,41, - 1,114,236,0,0,0,41,2,114,104,0,0,0,218,4,105, - 116,101,109,114,4,0,0,0,114,4,0,0,0,114,6,0, - 0,0,218,12,95,95,99,111,110,116,97,105,110,115,95,95, - 238,3,0,0,115,2,0,0,0,0,1,122,27,95,78,97, - 109,101,115,112,97,99,101,80,97,116,104,46,95,95,99,111, - 110,116,97,105,110,115,95,95,99,2,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,67,0,0,0,115,16,0, - 0,0,124,0,106,0,160,1,124,1,161,1,1,0,100,0, - 83,0,41,1,78,41,2,114,228,0,0,0,114,161,0,0, - 0,41,2,114,104,0,0,0,114,243,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,114,161,0,0, - 0,241,3,0,0,115,2,0,0,0,0,1,122,21,95,78, - 97,109,101,115,112,97,99,101,80,97,116,104,46,97,112,112, - 101,110,100,78,41,14,114,109,0,0,0,114,108,0,0,0, - 114,110,0,0,0,114,111,0,0,0,114,182,0,0,0,114, - 234,0,0,0,114,229,0,0,0,114,236,0,0,0,114,238, - 0,0,0,114,240,0,0,0,114,241,0,0,0,114,242,0, - 0,0,114,244,0,0,0,114,161,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 114,226,0,0,0,186,3,0,0,115,20,0,0,0,12,7, - 8,6,8,10,8,4,8,13,8,3,8,3,8,3,8,3, - 8,3,114,226,0,0,0,99,0,0,0,0,0,0,0,0, - 0,0,0,0,3,0,0,0,64,0,0,0,115,80,0,0, - 0,101,0,90,1,100,0,90,2,100,1,100,2,132,0,90, - 3,101,4,100,3,100,4,132,0,131,1,90,5,100,5,100, - 6,132,0,90,6,100,7,100,8,132,0,90,7,100,9,100, - 10,132,0,90,8,100,11,100,12,132,0,90,9,100,13,100, - 14,132,0,90,10,100,15,100,16,132,0,90,11,100,17,83, - 0,41,18,218,16,95,78,97,109,101,115,112,97,99,101,76, - 111,97,100,101,114,99,4,0,0,0,0,0,0,0,4,0, - 0,0,4,0,0,0,67,0,0,0,115,18,0,0,0,116, - 0,124,1,124,2,124,3,131,3,124,0,95,1,100,0,83, - 0,41,1,78,41,2,114,226,0,0,0,114,228,0,0,0, - 41,4,114,104,0,0,0,114,102,0,0,0,114,37,0,0, - 0,114,232,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,6,0,0,0,114,182,0,0,0,247,3,0,0,115,2, - 0,0,0,0,1,122,25,95,78,97,109,101,115,112,97,99, - 101,76,111,97,100,101,114,46,95,95,105,110,105,116,95,95, - 99,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0, - 0,67,0,0,0,115,12,0,0,0,100,1,160,0,124,1, - 106,1,161,1,83,0,41,2,122,115,82,101,116,117,114,110, - 32,114,101,112,114,32,102,111,114,32,116,104,101,32,109,111, - 100,117,108,101,46,10,10,32,32,32,32,32,32,32,32,84, - 104,101,32,109,101,116,104,111,100,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,46,32,32,84,104,101,32,105,109, - 112,111,114,116,32,109,97,99,104,105,110,101,114,121,32,100, - 111,101,115,32,116,104,101,32,106,111,98,32,105,116,115,101, - 108,102,46,10,10,32,32,32,32,32,32,32,32,122,25,60, - 109,111,100,117,108,101,32,123,33,114,125,32,40,110,97,109, - 101,115,112,97,99,101,41,62,41,2,114,50,0,0,0,114, - 109,0,0,0,41,2,114,168,0,0,0,114,187,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218, - 11,109,111,100,117,108,101,95,114,101,112,114,250,3,0,0, - 115,2,0,0,0,0,7,122,28,95,78,97,109,101,115,112, - 97,99,101,76,111,97,100,101,114,46,109,111,100,117,108,101, - 95,114,101,112,114,99,2,0,0,0,0,0,0,0,2,0, - 0,0,1,0,0,0,67,0,0,0,115,4,0,0,0,100, - 1,83,0,41,2,78,84,114,4,0,0,0,41,2,114,104, - 0,0,0,114,123,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,114,157,0,0,0,3,4,0,0, - 115,2,0,0,0,0,1,122,27,95,78,97,109,101,115,112, - 97,99,101,76,111,97,100,101,114,46,105,115,95,112,97,99, - 107,97,103,101,99,2,0,0,0,0,0,0,0,2,0,0, - 0,1,0,0,0,67,0,0,0,115,4,0,0,0,100,1, - 83,0,41,2,78,114,32,0,0,0,114,4,0,0,0,41, - 2,114,104,0,0,0,114,123,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,114,198,0,0,0,6, - 4,0,0,115,2,0,0,0,0,1,122,27,95,78,97,109, - 101,115,112,97,99,101,76,111,97,100,101,114,46,103,101,116, 95,115,111,117,114,99,101,99,2,0,0,0,0,0,0,0, - 2,0,0,0,6,0,0,0,67,0,0,0,115,16,0,0, - 0,116,0,100,1,100,2,100,3,100,4,100,5,141,4,83, - 0,41,6,78,114,32,0,0,0,122,8,60,115,116,114,105, - 110,103,62,114,186,0,0,0,84,41,1,114,200,0,0,0, - 41,1,114,201,0,0,0,41,2,114,104,0,0,0,114,123, + 2,0,0,0,1,0,0,0,67,0,0,0,115,6,0,0, + 0,124,0,106,0,83,0,41,1,122,58,82,101,116,117,114, + 110,32,116,104,101,32,112,97,116,104,32,116,111,32,116,104, + 101,32,115,111,117,114,99,101,32,102,105,108,101,32,97,115, + 32,102,111,117,110,100,32,98,121,32,116,104,101,32,102,105, + 110,100,101,114,46,41,1,114,37,0,0,0,41,2,114,104, + 0,0,0,114,123,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,6,0,0,0,114,155,0,0,0,180,3,0,0, + 115,2,0,0,0,0,3,122,32,69,120,116,101,110,115,105, + 111,110,70,105,108,101,76,111,97,100,101,114,46,103,101,116, + 95,102,105,108,101,110,97,109,101,78,41,14,114,109,0,0, + 0,114,108,0,0,0,114,110,0,0,0,114,111,0,0,0, + 114,182,0,0,0,114,209,0,0,0,114,211,0,0,0,114, + 183,0,0,0,114,188,0,0,0,114,157,0,0,0,114,184, + 0,0,0,114,198,0,0,0,114,120,0,0,0,114,155,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,114,220,0,0,0,133,3,0,0,115, + 18,0,0,0,12,8,8,4,8,4,8,3,8,8,8,6, + 8,6,8,4,8,4,114,220,0,0,0,99,0,0,0,0, + 0,0,0,0,0,0,0,0,2,0,0,0,64,0,0,0, + 115,96,0,0,0,101,0,90,1,100,0,90,2,100,1,90, + 3,100,2,100,3,132,0,90,4,100,4,100,5,132,0,90, + 5,100,6,100,7,132,0,90,6,100,8,100,9,132,0,90, + 7,100,10,100,11,132,0,90,8,100,12,100,13,132,0,90, + 9,100,14,100,15,132,0,90,10,100,16,100,17,132,0,90, + 11,100,18,100,19,132,0,90,12,100,20,100,21,132,0,90, + 13,100,22,83,0,41,23,218,14,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,97,38,1,0,0,82,101,112,114, + 101,115,101,110,116,115,32,97,32,110,97,109,101,115,112,97, + 99,101,32,112,97,99,107,97,103,101,39,115,32,112,97,116, + 104,46,32,32,73,116,32,117,115,101,115,32,116,104,101,32, + 109,111,100,117,108,101,32,110,97,109,101,10,32,32,32,32, + 116,111,32,102,105,110,100,32,105,116,115,32,112,97,114,101, + 110,116,32,109,111,100,117,108,101,44,32,97,110,100,32,102, + 114,111,109,32,116,104,101,114,101,32,105,116,32,108,111,111, + 107,115,32,117,112,32,116,104,101,32,112,97,114,101,110,116, + 39,115,10,32,32,32,32,95,95,112,97,116,104,95,95,46, + 32,32,87,104,101,110,32,116,104,105,115,32,99,104,97,110, + 103,101,115,44,32,116,104,101,32,109,111,100,117,108,101,39, + 115,32,111,119,110,32,112,97,116,104,32,105,115,32,114,101, + 99,111,109,112,117,116,101,100,44,10,32,32,32,32,117,115, + 105,110,103,32,112,97,116,104,95,102,105,110,100,101,114,46, + 32,32,70,111,114,32,116,111,112,45,108,101,118,101,108,32, + 109,111,100,117,108,101,115,44,32,116,104,101,32,112,97,114, + 101,110,116,32,109,111,100,117,108,101,39,115,32,112,97,116, + 104,10,32,32,32,32,105,115,32,115,121,115,46,112,97,116, + 104,46,99,4,0,0,0,0,0,0,0,4,0,0,0,3, + 0,0,0,67,0,0,0,115,36,0,0,0,124,1,124,0, + 95,0,124,2,124,0,95,1,116,2,124,0,160,3,161,0, + 131,1,124,0,95,4,124,3,124,0,95,5,100,0,83,0, + 41,1,78,41,6,218,5,95,110,97,109,101,218,5,95,112, + 97,116,104,114,97,0,0,0,218,16,95,103,101,116,95,112, + 97,114,101,110,116,95,112,97,116,104,218,17,95,108,97,115, + 116,95,112,97,114,101,110,116,95,112,97,116,104,218,12,95, + 112,97,116,104,95,102,105,110,100,101,114,41,4,114,104,0, + 0,0,114,102,0,0,0,114,37,0,0,0,218,11,112,97, + 116,104,95,102,105,110,100,101,114,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,114,182,0,0,0,193,3,0, + 0,115,8,0,0,0,0,1,6,1,6,1,14,1,122,23, + 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, + 95,105,110,105,116,95,95,99,1,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,67,0,0,0,115,38,0,0, + 0,124,0,106,0,160,1,100,1,161,1,92,3,125,1,125, + 2,125,3,124,2,100,2,107,2,114,30,100,6,83,0,124, + 1,100,5,102,2,83,0,41,7,122,62,82,101,116,117,114, + 110,115,32,97,32,116,117,112,108,101,32,111,102,32,40,112, + 97,114,101,110,116,45,109,111,100,117,108,101,45,110,97,109, + 101,44,32,112,97,114,101,110,116,45,112,97,116,104,45,97, + 116,116,114,45,110,97,109,101,41,114,61,0,0,0,114,32, + 0,0,0,114,8,0,0,0,114,37,0,0,0,90,8,95, + 95,112,97,116,104,95,95,41,2,114,8,0,0,0,114,37, + 0,0,0,41,2,114,227,0,0,0,114,34,0,0,0,41, + 4,114,104,0,0,0,114,218,0,0,0,218,3,100,111,116, + 90,2,109,101,114,4,0,0,0,114,4,0,0,0,114,6, + 0,0,0,218,23,95,102,105,110,100,95,112,97,114,101,110, + 116,95,112,97,116,104,95,110,97,109,101,115,199,3,0,0, + 115,8,0,0,0,0,2,18,1,8,2,4,3,122,38,95, + 78,97,109,101,115,112,97,99,101,80,97,116,104,46,95,102, + 105,110,100,95,112,97,114,101,110,116,95,112,97,116,104,95, + 110,97,109,101,115,99,1,0,0,0,0,0,0,0,3,0, + 0,0,3,0,0,0,67,0,0,0,115,28,0,0,0,124, + 0,160,0,161,0,92,2,125,1,125,2,116,1,116,2,106, + 3,124,1,25,0,124,2,131,2,83,0,41,1,78,41,4, + 114,234,0,0,0,114,114,0,0,0,114,8,0,0,0,218, + 7,109,111,100,117,108,101,115,41,3,114,104,0,0,0,90, + 18,112,97,114,101,110,116,95,109,111,100,117,108,101,95,110, + 97,109,101,90,14,112,97,116,104,95,97,116,116,114,95,110, + 97,109,101,114,4,0,0,0,114,4,0,0,0,114,6,0, + 0,0,114,229,0,0,0,209,3,0,0,115,4,0,0,0, + 0,1,12,1,122,31,95,78,97,109,101,115,112,97,99,101, + 80,97,116,104,46,95,103,101,116,95,112,97,114,101,110,116, + 95,112,97,116,104,99,1,0,0,0,0,0,0,0,3,0, + 0,0,4,0,0,0,67,0,0,0,115,80,0,0,0,116, + 0,124,0,160,1,161,0,131,1,125,1,124,1,124,0,106, + 2,107,3,114,74,124,0,160,3,124,0,106,4,124,1,161, + 2,125,2,124,2,100,0,107,9,114,68,124,2,106,5,100, + 0,107,8,114,68,124,2,106,6,114,68,124,2,106,6,124, + 0,95,7,124,1,124,0,95,2,124,0,106,7,83,0,41, + 1,78,41,8,114,97,0,0,0,114,229,0,0,0,114,230, + 0,0,0,114,231,0,0,0,114,227,0,0,0,114,124,0, + 0,0,114,154,0,0,0,114,228,0,0,0,41,3,114,104, + 0,0,0,90,11,112,97,114,101,110,116,95,112,97,116,104, + 114,162,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,12,95,114,101,99,97,108,99,117,108,97, + 116,101,213,3,0,0,115,16,0,0,0,0,2,12,1,10, + 1,14,3,18,1,6,1,8,1,6,1,122,27,95,78,97, + 109,101,115,112,97,99,101,80,97,116,104,46,95,114,101,99, + 97,108,99,117,108,97,116,101,99,1,0,0,0,0,0,0, + 0,1,0,0,0,3,0,0,0,67,0,0,0,115,12,0, + 0,0,116,0,124,0,160,1,161,0,131,1,83,0,41,1, + 78,41,2,218,4,105,116,101,114,114,236,0,0,0,41,1, + 114,104,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,8,95,95,105,116,101,114,95,95,226,3, + 0,0,115,2,0,0,0,0,1,122,23,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,95,105,116,101,114, + 95,95,99,3,0,0,0,0,0,0,0,3,0,0,0,3, + 0,0,0,67,0,0,0,115,14,0,0,0,124,2,124,0, + 106,0,124,1,60,0,100,0,83,0,41,1,78,41,1,114, + 228,0,0,0,41,3,114,104,0,0,0,218,5,105,110,100, + 101,120,114,37,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,218,11,95,95,115,101,116,105,116,101, + 109,95,95,229,3,0,0,115,2,0,0,0,0,1,122,26, + 95,78,97,109,101,115,112,97,99,101,80,97,116,104,46,95, + 95,115,101,116,105,116,101,109,95,95,99,1,0,0,0,0, + 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, + 12,0,0,0,116,0,124,0,160,1,161,0,131,1,83,0, + 41,1,78,41,2,114,33,0,0,0,114,236,0,0,0,41, + 1,114,104,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,6,0,0,0,218,7,95,95,108,101,110,95,95,232,3, + 0,0,115,2,0,0,0,0,1,122,22,95,78,97,109,101, + 115,112,97,99,101,80,97,116,104,46,95,95,108,101,110,95, + 95,99,1,0,0,0,0,0,0,0,1,0,0,0,3,0, + 0,0,67,0,0,0,115,12,0,0,0,100,1,160,0,124, + 0,106,1,161,1,83,0,41,2,78,122,20,95,78,97,109, + 101,115,112,97,99,101,80,97,116,104,40,123,33,114,125,41, + 41,2,114,50,0,0,0,114,228,0,0,0,41,1,114,104, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0, - 0,0,114,184,0,0,0,9,4,0,0,115,2,0,0,0, - 0,1,122,25,95,78,97,109,101,115,112,97,99,101,76,111, - 97,100,101,114,46,103,101,116,95,99,111,100,101,99,2,0, - 0,0,0,0,0,0,2,0,0,0,1,0,0,0,67,0, - 0,0,115,4,0,0,0,100,1,83,0,41,2,122,42,85, - 115,101,32,100,101,102,97,117,108,116,32,115,101,109,97,110, - 116,105,99,115,32,102,111,114,32,109,111,100,117,108,101,32, - 99,114,101,97,116,105,111,110,46,78,114,4,0,0,0,41, - 2,114,104,0,0,0,114,162,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,114,183,0,0,0,12, - 4,0,0,115,0,0,0,0,122,30,95,78,97,109,101,115, - 112,97,99,101,76,111,97,100,101,114,46,99,114,101,97,116, - 101,95,109,111,100,117,108,101,99,2,0,0,0,0,0,0, - 0,2,0,0,0,1,0,0,0,67,0,0,0,115,4,0, - 0,0,100,0,83,0,41,1,78,114,4,0,0,0,41,2, - 114,104,0,0,0,114,187,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,6,0,0,0,114,188,0,0,0,15,4, - 0,0,115,2,0,0,0,0,1,122,28,95,78,97,109,101, - 115,112,97,99,101,76,111,97,100,101,114,46,101,120,101,99, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 2,0,0,0,4,0,0,0,67,0,0,0,115,26,0,0, - 0,116,0,160,1,100,1,124,0,106,2,161,2,1,0,116, - 0,160,3,124,0,124,1,161,2,83,0,41,2,122,98,76, - 111,97,100,32,97,32,110,97,109,101,115,112,97,99,101,32, - 109,111,100,117,108,101,46,10,10,32,32,32,32,32,32,32, - 32,84,104,105,115,32,109,101,116,104,111,100,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,46,32,32,85,115,101, - 32,101,120,101,99,95,109,111,100,117,108,101,40,41,32,105, - 110,115,116,101,97,100,46,10,10,32,32,32,32,32,32,32, - 32,122,38,110,97,109,101,115,112,97,99,101,32,109,111,100, - 117,108,101,32,108,111,97,100,101,100,32,119,105,116,104,32, - 112,97,116,104,32,123,33,114,125,41,4,114,118,0,0,0, - 114,133,0,0,0,114,228,0,0,0,114,189,0,0,0,41, - 2,114,104,0,0,0,114,123,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,114,190,0,0,0,18, - 4,0,0,115,6,0,0,0,0,7,6,1,8,1,122,28, - 95,78,97,109,101,115,112,97,99,101,76,111,97,100,101,114, - 46,108,111,97,100,95,109,111,100,117,108,101,78,41,12,114, - 109,0,0,0,114,108,0,0,0,114,110,0,0,0,114,182, - 0,0,0,114,180,0,0,0,114,246,0,0,0,114,157,0, - 0,0,114,198,0,0,0,114,184,0,0,0,114,183,0,0, - 0,114,188,0,0,0,114,190,0,0,0,114,4,0,0,0, + 0,0,218,8,95,95,114,101,112,114,95,95,235,3,0,0, + 115,2,0,0,0,0,1,122,23,95,78,97,109,101,115,112, + 97,99,101,80,97,116,104,46,95,95,114,101,112,114,95,95, + 99,2,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,67,0,0,0,115,12,0,0,0,124,1,124,0,160,0, + 161,0,107,6,83,0,41,1,78,41,1,114,236,0,0,0, + 41,2,114,104,0,0,0,218,4,105,116,101,109,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,218,12,95,95, + 99,111,110,116,97,105,110,115,95,95,238,3,0,0,115,2, + 0,0,0,0,1,122,27,95,78,97,109,101,115,112,97,99, + 101,80,97,116,104,46,95,95,99,111,110,116,97,105,110,115, + 95,95,99,2,0,0,0,0,0,0,0,2,0,0,0,3, + 0,0,0,67,0,0,0,115,16,0,0,0,124,0,106,0, + 160,1,124,1,161,1,1,0,100,0,83,0,41,1,78,41, + 2,114,228,0,0,0,114,161,0,0,0,41,2,114,104,0, + 0,0,114,243,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,114,161,0,0,0,241,3,0,0,115, + 2,0,0,0,0,1,122,21,95,78,97,109,101,115,112,97, + 99,101,80,97,116,104,46,97,112,112,101,110,100,78,41,14, + 114,109,0,0,0,114,108,0,0,0,114,110,0,0,0,114, + 111,0,0,0,114,182,0,0,0,114,234,0,0,0,114,229, + 0,0,0,114,236,0,0,0,114,238,0,0,0,114,240,0, + 0,0,114,241,0,0,0,114,242,0,0,0,114,244,0,0, + 0,114,161,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,6,0,0,0,114,226,0,0,0,186, + 3,0,0,115,20,0,0,0,12,7,8,6,8,10,8,4, + 8,13,8,3,8,3,8,3,8,3,8,3,114,226,0,0, + 0,99,0,0,0,0,0,0,0,0,0,0,0,0,3,0, + 0,0,64,0,0,0,115,80,0,0,0,101,0,90,1,100, + 0,90,2,100,1,100,2,132,0,90,3,101,4,100,3,100, + 4,132,0,131,1,90,5,100,5,100,6,132,0,90,6,100, + 7,100,8,132,0,90,7,100,9,100,10,132,0,90,8,100, + 11,100,12,132,0,90,9,100,13,100,14,132,0,90,10,100, + 15,100,16,132,0,90,11,100,17,83,0,41,18,218,16,95, + 78,97,109,101,115,112,97,99,101,76,111,97,100,101,114,99, + 4,0,0,0,0,0,0,0,4,0,0,0,4,0,0,0, + 67,0,0,0,115,18,0,0,0,116,0,124,1,124,2,124, + 3,131,3,124,0,95,1,100,0,83,0,41,1,78,41,2, + 114,226,0,0,0,114,228,0,0,0,41,4,114,104,0,0, + 0,114,102,0,0,0,114,37,0,0,0,114,232,0,0,0, 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,114, - 245,0,0,0,246,3,0,0,115,16,0,0,0,8,1,8, - 3,12,9,8,3,8,3,8,3,8,3,8,3,114,245,0, - 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,4, - 0,0,0,64,0,0,0,115,106,0,0,0,101,0,90,1, - 100,0,90,2,100,1,90,3,101,4,100,2,100,3,132,0, - 131,1,90,5,101,4,100,4,100,5,132,0,131,1,90,6, - 101,4,100,6,100,7,132,0,131,1,90,7,101,4,100,8, - 100,9,132,0,131,1,90,8,101,4,100,17,100,11,100,12, - 132,1,131,1,90,9,101,4,100,18,100,13,100,14,132,1, - 131,1,90,10,101,4,100,19,100,15,100,16,132,1,131,1, - 90,11,100,10,83,0,41,20,218,10,80,97,116,104,70,105, - 110,100,101,114,122,62,77,101,116,97,32,112,97,116,104,32, - 102,105,110,100,101,114,32,102,111,114,32,115,121,115,46,112, - 97,116,104,32,97,110,100,32,112,97,99,107,97,103,101,32, - 95,95,112,97,116,104,95,95,32,97,116,116,114,105,98,117, - 116,101,115,46,99,1,0,0,0,0,0,0,0,2,0,0, - 0,4,0,0,0,67,0,0,0,115,42,0,0,0,120,36, - 116,0,106,1,160,2,161,0,68,0,93,22,125,1,116,3, - 124,1,100,1,131,2,114,12,124,1,160,4,161,0,1,0, - 113,12,87,0,100,2,83,0,41,3,122,125,67,97,108,108, - 32,116,104,101,32,105,110,118,97,108,105,100,97,116,101,95, - 99,97,99,104,101,115,40,41,32,109,101,116,104,111,100,32, - 111,110,32,97,108,108,32,112,97,116,104,32,101,110,116,114, - 121,32,102,105,110,100,101,114,115,10,32,32,32,32,32,32, - 32,32,115,116,111,114,101,100,32,105,110,32,115,121,115,46, + 182,0,0,0,247,3,0,0,115,2,0,0,0,0,1,122, + 25,95,78,97,109,101,115,112,97,99,101,76,111,97,100,101, + 114,46,95,95,105,110,105,116,95,95,99,2,0,0,0,0, + 0,0,0,2,0,0,0,3,0,0,0,67,0,0,0,115, + 12,0,0,0,100,1,160,0,124,1,106,1,161,1,83,0, + 41,2,122,115,82,101,116,117,114,110,32,114,101,112,114,32, + 102,111,114,32,116,104,101,32,109,111,100,117,108,101,46,10, + 10,32,32,32,32,32,32,32,32,84,104,101,32,109,101,116, + 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,32,32,84,104,101,32,105,109,112,111,114,116,32,109, + 97,99,104,105,110,101,114,121,32,100,111,101,115,32,116,104, + 101,32,106,111,98,32,105,116,115,101,108,102,46,10,10,32, + 32,32,32,32,32,32,32,122,25,60,109,111,100,117,108,101, + 32,123,33,114,125,32,40,110,97,109,101,115,112,97,99,101, + 41,62,41,2,114,50,0,0,0,114,109,0,0,0,41,2, + 114,168,0,0,0,114,187,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,6,0,0,0,218,11,109,111,100,117,108, + 101,95,114,101,112,114,250,3,0,0,115,2,0,0,0,0, + 7,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97, + 100,101,114,46,109,111,100,117,108,101,95,114,101,112,114,99, + 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, + 67,0,0,0,115,4,0,0,0,100,1,83,0,41,2,78, + 84,114,4,0,0,0,41,2,114,104,0,0,0,114,123,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,6,0,0, + 0,114,157,0,0,0,3,4,0,0,115,2,0,0,0,0, + 1,122,27,95,78,97,109,101,115,112,97,99,101,76,111,97, + 100,101,114,46,105,115,95,112,97,99,107,97,103,101,99,2, + 0,0,0,0,0,0,0,2,0,0,0,1,0,0,0,67, + 0,0,0,115,4,0,0,0,100,1,83,0,41,2,78,114, + 32,0,0,0,114,4,0,0,0,41,2,114,104,0,0,0, + 114,123,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,114,198,0,0,0,6,4,0,0,115,2,0, + 0,0,0,1,122,27,95,78,97,109,101,115,112,97,99,101, + 76,111,97,100,101,114,46,103,101,116,95,115,111,117,114,99, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,6,0, + 0,0,67,0,0,0,115,16,0,0,0,116,0,100,1,100, + 2,100,3,100,4,100,5,141,4,83,0,41,6,78,114,32, + 0,0,0,122,8,60,115,116,114,105,110,103,62,114,186,0, + 0,0,84,41,1,114,200,0,0,0,41,1,114,201,0,0, + 0,41,2,114,104,0,0,0,114,123,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,184,0,0, + 0,9,4,0,0,115,2,0,0,0,0,1,122,25,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,46,103, + 101,116,95,99,111,100,101,99,2,0,0,0,0,0,0,0, + 2,0,0,0,1,0,0,0,67,0,0,0,115,4,0,0, + 0,100,1,83,0,41,2,122,42,85,115,101,32,100,101,102, + 97,117,108,116,32,115,101,109,97,110,116,105,99,115,32,102, + 111,114,32,109,111,100,117,108,101,32,99,114,101,97,116,105, + 111,110,46,78,114,4,0,0,0,41,2,114,104,0,0,0, + 114,162,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,114,183,0,0,0,12,4,0,0,115,0,0, + 0,0,122,30,95,78,97,109,101,115,112,97,99,101,76,111, + 97,100,101,114,46,99,114,101,97,116,101,95,109,111,100,117, + 108,101,99,2,0,0,0,0,0,0,0,2,0,0,0,1, + 0,0,0,67,0,0,0,115,4,0,0,0,100,0,83,0, + 41,1,78,114,4,0,0,0,41,2,114,104,0,0,0,114, + 187,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, + 0,0,0,114,188,0,0,0,15,4,0,0,115,2,0,0, + 0,0,1,122,28,95,78,97,109,101,115,112,97,99,101,76, + 111,97,100,101,114,46,101,120,101,99,95,109,111,100,117,108, + 101,99,2,0,0,0,0,0,0,0,2,0,0,0,4,0, + 0,0,67,0,0,0,115,26,0,0,0,116,0,160,1,100, + 1,124,0,106,2,161,2,1,0,116,0,160,3,124,0,124, + 1,161,2,83,0,41,2,122,98,76,111,97,100,32,97,32, + 110,97,109,101,115,112,97,99,101,32,109,111,100,117,108,101, + 46,10,10,32,32,32,32,32,32,32,32,84,104,105,115,32, + 109,101,116,104,111,100,32,105,115,32,100,101,112,114,101,99, + 97,116,101,100,46,32,32,85,115,101,32,101,120,101,99,95, + 109,111,100,117,108,101,40,41,32,105,110,115,116,101,97,100, + 46,10,10,32,32,32,32,32,32,32,32,122,38,110,97,109, + 101,115,112,97,99,101,32,109,111,100,117,108,101,32,108,111, + 97,100,101,100,32,119,105,116,104,32,112,97,116,104,32,123, + 33,114,125,41,4,114,118,0,0,0,114,133,0,0,0,114, + 228,0,0,0,114,189,0,0,0,41,2,114,104,0,0,0, + 114,123,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,114,190,0,0,0,18,4,0,0,115,6,0, + 0,0,0,7,6,1,8,1,122,28,95,78,97,109,101,115, + 112,97,99,101,76,111,97,100,101,114,46,108,111,97,100,95, + 109,111,100,117,108,101,78,41,12,114,109,0,0,0,114,108, + 0,0,0,114,110,0,0,0,114,182,0,0,0,114,180,0, + 0,0,114,246,0,0,0,114,157,0,0,0,114,198,0,0, + 0,114,184,0,0,0,114,183,0,0,0,114,188,0,0,0, + 114,190,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,6,0,0,0,114,245,0,0,0,246,3, + 0,0,115,16,0,0,0,8,1,8,3,12,9,8,3,8, + 3,8,3,8,3,8,3,114,245,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,4,0,0,0,64,0,0, + 0,115,106,0,0,0,101,0,90,1,100,0,90,2,100,1, + 90,3,101,4,100,2,100,3,132,0,131,1,90,5,101,4, + 100,4,100,5,132,0,131,1,90,6,101,4,100,6,100,7, + 132,0,131,1,90,7,101,4,100,8,100,9,132,0,131,1, + 90,8,101,4,100,17,100,11,100,12,132,1,131,1,90,9, + 101,4,100,18,100,13,100,14,132,1,131,1,90,10,101,4, + 100,19,100,15,100,16,132,1,131,1,90,11,100,10,83,0, + 41,20,218,10,80,97,116,104,70,105,110,100,101,114,122,62, + 77,101,116,97,32,112,97,116,104,32,102,105,110,100,101,114, + 32,102,111,114,32,115,121,115,46,112,97,116,104,32,97,110, + 100,32,112,97,99,107,97,103,101,32,95,95,112,97,116,104, + 95,95,32,97,116,116,114,105,98,117,116,101,115,46,99,1, + 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,67, + 0,0,0,115,42,0,0,0,120,36,116,0,106,1,160,2, + 161,0,68,0,93,22,125,1,116,3,124,1,100,1,131,2, + 114,12,124,1,160,4,161,0,1,0,113,12,87,0,100,2, + 83,0,41,3,122,125,67,97,108,108,32,116,104,101,32,105, + 110,118,97,108,105,100,97,116,101,95,99,97,99,104,101,115, + 40,41,32,109,101,116,104,111,100,32,111,110,32,97,108,108, + 32,112,97,116,104,32,101,110,116,114,121,32,102,105,110,100, + 101,114,115,10,32,32,32,32,32,32,32,32,115,116,111,114, + 101,100,32,105,110,32,115,121,115,46,112,97,116,104,95,105, + 109,112,111,114,116,101,114,95,99,97,99,104,101,115,32,40, + 119,104,101,114,101,32,105,109,112,108,101,109,101,110,116,101, + 100,41,46,218,17,105,110,118,97,108,105,100,97,116,101,95, + 99,97,99,104,101,115,78,41,5,114,8,0,0,0,218,19, 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97, - 99,104,101,115,32,40,119,104,101,114,101,32,105,109,112,108, - 101,109,101,110,116,101,100,41,46,218,17,105,110,118,97,108, - 105,100,97,116,101,95,99,97,99,104,101,115,78,41,5,114, - 8,0,0,0,218,19,112,97,116,104,95,105,109,112,111,114, - 116,101,114,95,99,97,99,104,101,218,6,118,97,108,117,101, - 115,114,112,0,0,0,114,248,0,0,0,41,2,114,168,0, - 0,0,218,6,102,105,110,100,101,114,114,4,0,0,0,114, - 4,0,0,0,114,6,0,0,0,114,248,0,0,0,36,4, - 0,0,115,6,0,0,0,0,4,16,1,10,1,122,28,80, - 97,116,104,70,105,110,100,101,114,46,105,110,118,97,108,105, - 100,97,116,101,95,99,97,99,104,101,115,99,2,0,0,0, - 0,0,0,0,3,0,0,0,12,0,0,0,67,0,0,0, - 115,86,0,0,0,116,0,106,1,100,1,107,9,114,30,116, - 0,106,1,12,0,114,30,116,2,160,3,100,2,116,4,161, - 2,1,0,120,50,116,0,106,1,68,0,93,36,125,2,121, - 8,124,2,124,1,131,1,83,0,4,0,116,5,107,10,114, - 72,1,0,1,0,1,0,119,38,89,0,113,38,88,0,113, - 38,87,0,100,1,83,0,100,1,83,0,41,3,122,46,83, - 101,97,114,99,104,32,115,121,115,46,112,97,116,104,95,104, - 111,111,107,115,32,102,111,114,32,97,32,102,105,110,100,101, - 114,32,102,111,114,32,39,112,97,116,104,39,46,78,122,23, - 115,121,115,46,112,97,116,104,95,104,111,111,107,115,32,105, - 115,32,101,109,112,116,121,41,6,114,8,0,0,0,218,10, - 112,97,116,104,95,104,111,111,107,115,114,63,0,0,0,114, - 64,0,0,0,114,122,0,0,0,114,103,0,0,0,41,3, - 114,168,0,0,0,114,37,0,0,0,90,4,104,111,111,107, + 99,104,101,218,6,118,97,108,117,101,115,114,112,0,0,0, + 114,248,0,0,0,41,2,114,168,0,0,0,218,6,102,105, + 110,100,101,114,114,4,0,0,0,114,4,0,0,0,114,6, + 0,0,0,114,248,0,0,0,36,4,0,0,115,6,0,0, + 0,0,4,16,1,10,1,122,28,80,97,116,104,70,105,110, + 100,101,114,46,105,110,118,97,108,105,100,97,116,101,95,99, + 97,99,104,101,115,99,2,0,0,0,0,0,0,0,3,0, + 0,0,12,0,0,0,67,0,0,0,115,84,0,0,0,116, + 0,106,1,100,1,107,9,114,28,116,0,106,1,115,28,116, + 2,160,3,100,2,116,4,161,2,1,0,120,50,116,0,106, + 1,68,0,93,36,125,2,121,8,124,2,124,1,131,1,83, + 0,4,0,116,5,107,10,114,70,1,0,1,0,1,0,119, + 36,89,0,113,36,88,0,113,36,87,0,100,1,83,0,100, + 1,83,0,41,3,122,46,83,101,97,114,99,104,32,115,121, + 115,46,112,97,116,104,95,104,111,111,107,115,32,102,111,114, + 32,97,32,102,105,110,100,101,114,32,102,111,114,32,39,112, + 97,116,104,39,46,78,122,23,115,121,115,46,112,97,116,104, + 95,104,111,111,107,115,32,105,115,32,101,109,112,116,121,41, + 6,114,8,0,0,0,218,10,112,97,116,104,95,104,111,111, + 107,115,114,63,0,0,0,114,64,0,0,0,114,122,0,0, + 0,114,103,0,0,0,41,3,114,168,0,0,0,114,37,0, + 0,0,90,4,104,111,111,107,114,4,0,0,0,114,4,0, + 0,0,114,6,0,0,0,218,11,95,112,97,116,104,95,104, + 111,111,107,115,44,4,0,0,115,16,0,0,0,0,3,16, + 1,12,1,12,1,2,1,8,1,14,1,12,2,122,22,80, + 97,116,104,70,105,110,100,101,114,46,95,112,97,116,104,95, + 104,111,111,107,115,99,2,0,0,0,0,0,0,0,3,0, + 0,0,19,0,0,0,67,0,0,0,115,102,0,0,0,124, + 1,100,1,107,2,114,42,121,12,116,0,160,1,161,0,125, + 1,87,0,110,20,4,0,116,2,107,10,114,40,1,0,1, + 0,1,0,100,2,83,0,88,0,121,14,116,3,106,4,124, + 1,25,0,125,2,87,0,110,40,4,0,116,5,107,10,114, + 96,1,0,1,0,1,0,124,0,160,6,124,1,161,1,125, + 2,124,2,116,3,106,4,124,1,60,0,89,0,110,2,88, + 0,124,2,83,0,41,3,122,210,71,101,116,32,116,104,101, + 32,102,105,110,100,101,114,32,102,111,114,32,116,104,101,32, + 112,97,116,104,32,101,110,116,114,121,32,102,114,111,109,32, + 115,121,115,46,112,97,116,104,95,105,109,112,111,114,116,101, + 114,95,99,97,99,104,101,46,10,10,32,32,32,32,32,32, + 32,32,73,102,32,116,104,101,32,112,97,116,104,32,101,110, + 116,114,121,32,105,115,32,110,111,116,32,105,110,32,116,104, + 101,32,99,97,99,104,101,44,32,102,105,110,100,32,116,104, + 101,32,97,112,112,114,111,112,114,105,97,116,101,32,102,105, + 110,100,101,114,10,32,32,32,32,32,32,32,32,97,110,100, + 32,99,97,99,104,101,32,105,116,46,32,73,102,32,110,111, + 32,102,105,110,100,101,114,32,105,115,32,97,118,97,105,108, + 97,98,108,101,44,32,115,116,111,114,101,32,78,111,110,101, + 46,10,10,32,32,32,32,32,32,32,32,114,32,0,0,0, + 78,41,7,114,3,0,0,0,114,47,0,0,0,218,17,70, + 105,108,101,78,111,116,70,111,117,110,100,69,114,114,111,114, + 114,8,0,0,0,114,249,0,0,0,114,135,0,0,0,114, + 253,0,0,0,41,3,114,168,0,0,0,114,37,0,0,0, + 114,251,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,20,95,112,97,116,104,95,105,109,112,111, + 114,116,101,114,95,99,97,99,104,101,57,4,0,0,115,22, + 0,0,0,0,8,8,1,2,1,12,1,14,3,6,1,2, + 1,14,1,14,1,10,1,16,1,122,31,80,97,116,104,70, + 105,110,100,101,114,46,95,112,97,116,104,95,105,109,112,111, + 114,116,101,114,95,99,97,99,104,101,99,3,0,0,0,0, + 0,0,0,6,0,0,0,4,0,0,0,67,0,0,0,115, + 82,0,0,0,116,0,124,2,100,1,131,2,114,26,124,2, + 160,1,124,1,161,1,92,2,125,3,125,4,110,14,124,2, + 160,2,124,1,161,1,125,3,103,0,125,4,124,3,100,0, + 107,9,114,60,116,3,160,4,124,1,124,3,161,2,83,0, + 116,3,160,5,124,1,100,0,161,2,125,5,124,4,124,5, + 95,6,124,5,83,0,41,2,78,114,121,0,0,0,41,7, + 114,112,0,0,0,114,121,0,0,0,114,179,0,0,0,114, + 118,0,0,0,114,176,0,0,0,114,158,0,0,0,114,154, + 0,0,0,41,6,114,168,0,0,0,114,123,0,0,0,114, + 251,0,0,0,114,124,0,0,0,114,125,0,0,0,114,162, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0, + 0,0,218,16,95,108,101,103,97,99,121,95,103,101,116,95, + 115,112,101,99,79,4,0,0,115,18,0,0,0,0,4,10, + 1,16,2,10,1,4,1,8,1,12,1,12,1,6,1,122, + 27,80,97,116,104,70,105,110,100,101,114,46,95,108,101,103, + 97,99,121,95,103,101,116,95,115,112,101,99,78,99,4,0, + 0,0,0,0,0,0,9,0,0,0,5,0,0,0,67,0, + 0,0,115,170,0,0,0,103,0,125,4,120,160,124,2,68, + 0,93,130,125,5,116,0,124,5,116,1,116,2,102,2,131, + 2,115,30,113,10,124,0,160,3,124,5,161,1,125,6,124, + 6,100,1,107,9,114,10,116,4,124,6,100,2,131,2,114, + 72,124,6,160,5,124,1,124,3,161,2,125,7,110,12,124, + 0,160,6,124,1,124,6,161,2,125,7,124,7,100,1,107, + 8,114,94,113,10,124,7,106,7,100,1,107,9,114,108,124, + 7,83,0,124,7,106,8,125,8,124,8,100,1,107,8,114, + 130,116,9,100,3,131,1,130,1,124,4,160,10,124,8,161, + 1,1,0,113,10,87,0,116,11,160,12,124,1,100,1,161, + 2,125,7,124,4,124,7,95,8,124,7,83,0,100,1,83, + 0,41,4,122,63,70,105,110,100,32,116,104,101,32,108,111, + 97,100,101,114,32,111,114,32,110,97,109,101,115,112,97,99, + 101,95,112,97,116,104,32,102,111,114,32,116,104,105,115,32, + 109,111,100,117,108,101,47,112,97,99,107,97,103,101,32,110, + 97,109,101,46,78,114,178,0,0,0,122,19,115,112,101,99, + 32,109,105,115,115,105,110,103,32,108,111,97,100,101,114,41, + 13,114,141,0,0,0,114,73,0,0,0,218,5,98,121,116, + 101,115,114,255,0,0,0,114,112,0,0,0,114,178,0,0, + 0,114,0,1,0,0,114,124,0,0,0,114,154,0,0,0, + 114,103,0,0,0,114,147,0,0,0,114,118,0,0,0,114, + 158,0,0,0,41,9,114,168,0,0,0,114,123,0,0,0, + 114,37,0,0,0,114,177,0,0,0,218,14,110,97,109,101, + 115,112,97,99,101,95,112,97,116,104,90,5,101,110,116,114, + 121,114,251,0,0,0,114,162,0,0,0,114,125,0,0,0, 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218, - 11,95,112,97,116,104,95,104,111,111,107,115,44,4,0,0, - 115,16,0,0,0,0,3,18,1,12,1,12,1,2,1,8, - 1,14,1,12,2,122,22,80,97,116,104,70,105,110,100,101, - 114,46,95,112,97,116,104,95,104,111,111,107,115,99,2,0, - 0,0,0,0,0,0,3,0,0,0,19,0,0,0,67,0, - 0,0,115,102,0,0,0,124,1,100,1,107,2,114,42,121, - 12,116,0,160,1,161,0,125,1,87,0,110,20,4,0,116, - 2,107,10,114,40,1,0,1,0,1,0,100,2,83,0,88, - 0,121,14,116,3,106,4,124,1,25,0,125,2,87,0,110, - 40,4,0,116,5,107,10,114,96,1,0,1,0,1,0,124, - 0,160,6,124,1,161,1,125,2,124,2,116,3,106,4,124, - 1,60,0,89,0,110,2,88,0,124,2,83,0,41,3,122, - 210,71,101,116,32,116,104,101,32,102,105,110,100,101,114,32, - 102,111,114,32,116,104,101,32,112,97,116,104,32,101,110,116, - 114,121,32,102,114,111,109,32,115,121,115,46,112,97,116,104, - 95,105,109,112,111,114,116,101,114,95,99,97,99,104,101,46, - 10,10,32,32,32,32,32,32,32,32,73,102,32,116,104,101, - 32,112,97,116,104,32,101,110,116,114,121,32,105,115,32,110, - 111,116,32,105,110,32,116,104,101,32,99,97,99,104,101,44, - 32,102,105,110,100,32,116,104,101,32,97,112,112,114,111,112, - 114,105,97,116,101,32,102,105,110,100,101,114,10,32,32,32, - 32,32,32,32,32,97,110,100,32,99,97,99,104,101,32,105, - 116,46,32,73,102,32,110,111,32,102,105,110,100,101,114,32, - 105,115,32,97,118,97,105,108,97,98,108,101,44,32,115,116, - 111,114,101,32,78,111,110,101,46,10,10,32,32,32,32,32, - 32,32,32,114,32,0,0,0,78,41,7,114,3,0,0,0, - 114,47,0,0,0,218,17,70,105,108,101,78,111,116,70,111, - 117,110,100,69,114,114,111,114,114,8,0,0,0,114,249,0, - 0,0,114,135,0,0,0,114,253,0,0,0,41,3,114,168, - 0,0,0,114,37,0,0,0,114,251,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,218,20,95,112, - 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, - 104,101,57,4,0,0,115,22,0,0,0,0,8,8,1,2, - 1,12,1,14,3,6,1,2,1,14,1,14,1,10,1,16, - 1,122,31,80,97,116,104,70,105,110,100,101,114,46,95,112, - 97,116,104,95,105,109,112,111,114,116,101,114,95,99,97,99, - 104,101,99,3,0,0,0,0,0,0,0,6,0,0,0,4, - 0,0,0,67,0,0,0,115,82,0,0,0,116,0,124,2, - 100,1,131,2,114,26,124,2,160,1,124,1,161,1,92,2, - 125,3,125,4,110,14,124,2,160,2,124,1,161,1,125,3, - 103,0,125,4,124,3,100,0,107,9,114,60,116,3,160,4, - 124,1,124,3,161,2,83,0,116,3,160,5,124,1,100,0, - 161,2,125,5,124,4,124,5,95,6,124,5,83,0,41,2, - 78,114,121,0,0,0,41,7,114,112,0,0,0,114,121,0, - 0,0,114,179,0,0,0,114,118,0,0,0,114,176,0,0, - 0,114,158,0,0,0,114,154,0,0,0,41,6,114,168,0, - 0,0,114,123,0,0,0,114,251,0,0,0,114,124,0,0, - 0,114,125,0,0,0,114,162,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,6,0,0,0,218,16,95,108,101,103, - 97,99,121,95,103,101,116,95,115,112,101,99,79,4,0,0, - 115,18,0,0,0,0,4,10,1,16,2,10,1,4,1,8, - 1,12,1,12,1,6,1,122,27,80,97,116,104,70,105,110, - 100,101,114,46,95,108,101,103,97,99,121,95,103,101,116,95, - 115,112,101,99,78,99,4,0,0,0,0,0,0,0,9,0, - 0,0,5,0,0,0,67,0,0,0,115,170,0,0,0,103, - 0,125,4,120,160,124,2,68,0,93,130,125,5,116,0,124, - 5,116,1,116,2,102,2,131,2,115,30,113,10,124,0,160, - 3,124,5,161,1,125,6,124,6,100,1,107,9,114,10,116, - 4,124,6,100,2,131,2,114,72,124,6,160,5,124,1,124, - 3,161,2,125,7,110,12,124,0,160,6,124,1,124,6,161, - 2,125,7,124,7,100,1,107,8,114,94,113,10,124,7,106, - 7,100,1,107,9,114,108,124,7,83,0,124,7,106,8,125, - 8,124,8,100,1,107,8,114,130,116,9,100,3,131,1,130, - 1,124,4,160,10,124,8,161,1,1,0,113,10,87,0,116, - 11,160,12,124,1,100,1,161,2,125,7,124,4,124,7,95, - 8,124,7,83,0,100,1,83,0,41,4,122,63,70,105,110, - 100,32,116,104,101,32,108,111,97,100,101,114,32,111,114,32, - 110,97,109,101,115,112,97,99,101,95,112,97,116,104,32,102, - 111,114,32,116,104,105,115,32,109,111,100,117,108,101,47,112, - 97,99,107,97,103,101,32,110,97,109,101,46,78,114,178,0, - 0,0,122,19,115,112,101,99,32,109,105,115,115,105,110,103, - 32,108,111,97,100,101,114,41,13,114,141,0,0,0,114,73, - 0,0,0,218,5,98,121,116,101,115,114,255,0,0,0,114, - 112,0,0,0,114,178,0,0,0,114,0,1,0,0,114,124, - 0,0,0,114,154,0,0,0,114,103,0,0,0,114,147,0, - 0,0,114,118,0,0,0,114,158,0,0,0,41,9,114,168, - 0,0,0,114,123,0,0,0,114,37,0,0,0,114,177,0, - 0,0,218,14,110,97,109,101,115,112,97,99,101,95,112,97, - 116,104,90,5,101,110,116,114,121,114,251,0,0,0,114,162, - 0,0,0,114,125,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,218,9,95,103,101,116,95,115,112, - 101,99,94,4,0,0,115,40,0,0,0,0,5,4,1,10, - 1,14,1,2,1,10,1,8,1,10,1,14,2,12,1,8, - 1,2,1,10,1,4,1,6,1,8,1,8,5,14,2,12, - 1,6,1,122,20,80,97,116,104,70,105,110,100,101,114,46, - 95,103,101,116,95,115,112,101,99,99,4,0,0,0,0,0, - 0,0,6,0,0,0,5,0,0,0,67,0,0,0,115,100, - 0,0,0,124,2,100,1,107,8,114,14,116,0,106,1,125, - 2,124,0,160,2,124,1,124,2,124,3,161,3,125,4,124, - 4,100,1,107,8,114,40,100,1,83,0,124,4,106,3,100, - 1,107,8,114,92,124,4,106,4,125,5,124,5,114,86,100, - 2,124,4,95,5,116,6,124,1,124,5,124,0,106,2,131, - 3,124,4,95,4,124,4,83,0,100,1,83,0,110,4,124, - 4,83,0,100,1,83,0,41,3,122,141,84,114,121,32,116, - 111,32,102,105,110,100,32,97,32,115,112,101,99,32,102,111, - 114,32,39,102,117,108,108,110,97,109,101,39,32,111,110,32, - 115,121,115,46,112,97,116,104,32,111,114,32,39,112,97,116, - 104,39,46,10,10,32,32,32,32,32,32,32,32,84,104,101, - 32,115,101,97,114,99,104,32,105,115,32,98,97,115,101,100, - 32,111,110,32,115,121,115,46,112,97,116,104,95,104,111,111, - 107,115,32,97,110,100,32,115,121,115,46,112,97,116,104,95, - 105,109,112,111,114,116,101,114,95,99,97,99,104,101,46,10, - 32,32,32,32,32,32,32,32,78,90,9,110,97,109,101,115, - 112,97,99,101,41,7,114,8,0,0,0,114,37,0,0,0, - 114,3,1,0,0,114,124,0,0,0,114,154,0,0,0,114, - 156,0,0,0,114,226,0,0,0,41,6,114,168,0,0,0, - 114,123,0,0,0,114,37,0,0,0,114,177,0,0,0,114, - 162,0,0,0,114,2,1,0,0,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,114,178,0,0,0,126,4,0, - 0,115,26,0,0,0,0,6,8,1,6,1,14,1,8,1, - 4,1,10,1,6,1,4,3,6,1,16,1,4,2,6,2, - 122,20,80,97,116,104,70,105,110,100,101,114,46,102,105,110, - 100,95,115,112,101,99,99,3,0,0,0,0,0,0,0,4, - 0,0,0,4,0,0,0,67,0,0,0,115,30,0,0,0, - 124,0,160,0,124,1,124,2,161,2,125,3,124,3,100,1, - 107,8,114,24,100,1,83,0,124,3,106,1,83,0,41,2, - 122,170,102,105,110,100,32,116,104,101,32,109,111,100,117,108, - 101,32,111,110,32,115,121,115,46,112,97,116,104,32,111,114, - 32,39,112,97,116,104,39,32,98,97,115,101,100,32,111,110, - 32,115,121,115,46,112,97,116,104,95,104,111,111,107,115,32, - 97,110,100,10,32,32,32,32,32,32,32,32,115,121,115,46, - 112,97,116,104,95,105,109,112,111,114,116,101,114,95,99,97, - 99,104,101,46,10,10,32,32,32,32,32,32,32,32,84,104, - 105,115,32,109,101,116,104,111,100,32,105,115,32,100,101,112, - 114,101,99,97,116,101,100,46,32,32,85,115,101,32,102,105, - 110,100,95,115,112,101,99,40,41,32,105,110,115,116,101,97, - 100,46,10,10,32,32,32,32,32,32,32,32,78,41,2,114, - 178,0,0,0,114,124,0,0,0,41,4,114,168,0,0,0, - 114,123,0,0,0,114,37,0,0,0,114,162,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,179, - 0,0,0,150,4,0,0,115,8,0,0,0,0,8,12,1, - 8,1,4,1,122,22,80,97,116,104,70,105,110,100,101,114, - 46,102,105,110,100,95,109,111,100,117,108,101,41,1,78,41, - 2,78,78,41,1,78,41,12,114,109,0,0,0,114,108,0, - 0,0,114,110,0,0,0,114,111,0,0,0,114,180,0,0, - 0,114,248,0,0,0,114,253,0,0,0,114,255,0,0,0, - 114,0,1,0,0,114,3,1,0,0,114,178,0,0,0,114, - 179,0,0,0,114,4,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,6,0,0,0,114,247,0,0,0,32,4,0, - 0,115,20,0,0,0,12,4,12,8,12,13,12,22,12,15, - 2,1,12,31,2,1,12,23,2,1,114,247,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0, - 64,0,0,0,115,90,0,0,0,101,0,90,1,100,0,90, - 2,100,1,90,3,100,2,100,3,132,0,90,4,100,4,100, - 5,132,0,90,5,101,6,90,7,100,6,100,7,132,0,90, - 8,100,8,100,9,132,0,90,9,100,19,100,11,100,12,132, - 1,90,10,100,13,100,14,132,0,90,11,101,12,100,15,100, - 16,132,0,131,1,90,13,100,17,100,18,132,0,90,14,100, - 10,83,0,41,20,218,10,70,105,108,101,70,105,110,100,101, - 114,122,172,70,105,108,101,45,98,97,115,101,100,32,102,105, - 110,100,101,114,46,10,10,32,32,32,32,73,110,116,101,114, - 97,99,116,105,111,110,115,32,119,105,116,104,32,116,104,101, - 32,102,105,108,101,32,115,121,115,116,101,109,32,97,114,101, - 32,99,97,99,104,101,100,32,102,111,114,32,112,101,114,102, - 111,114,109,97,110,99,101,44,32,98,101,105,110,103,10,32, - 32,32,32,114,101,102,114,101,115,104,101,100,32,119,104,101, - 110,32,116,104,101,32,100,105,114,101,99,116,111,114,121,32, - 116,104,101,32,102,105,110,100,101,114,32,105,115,32,104,97, - 110,100,108,105,110,103,32,104,97,115,32,98,101,101,110,32, - 109,111,100,105,102,105,101,100,46,10,10,32,32,32,32,99, - 2,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, - 7,0,0,0,115,88,0,0,0,103,0,125,3,120,40,124, - 2,68,0,93,32,92,2,137,0,125,4,124,3,160,0,135, - 0,102,1,100,1,100,2,132,8,124,4,68,0,131,1,161, - 1,1,0,113,10,87,0,124,3,124,0,95,1,124,1,112, - 58,100,3,124,0,95,2,100,6,124,0,95,3,116,4,131, - 0,124,0,95,5,116,4,131,0,124,0,95,6,100,5,83, - 0,41,7,122,154,73,110,105,116,105,97,108,105,122,101,32, - 119,105,116,104,32,116,104,101,32,112,97,116,104,32,116,111, - 32,115,101,97,114,99,104,32,111,110,32,97,110,100,32,97, - 32,118,97,114,105,97,98,108,101,32,110,117,109,98,101,114, - 32,111,102,10,32,32,32,32,32,32,32,32,50,45,116,117, - 112,108,101,115,32,99,111,110,116,97,105,110,105,110,103,32, - 116,104,101,32,108,111,97,100,101,114,32,97,110,100,32,116, - 104,101,32,102,105,108,101,32,115,117,102,102,105,120,101,115, - 32,116,104,101,32,108,111,97,100,101,114,10,32,32,32,32, - 32,32,32,32,114,101,99,111,103,110,105,122,101,115,46,99, - 1,0,0,0,0,0,0,0,2,0,0,0,3,0,0,0, - 51,0,0,0,115,22,0,0,0,124,0,93,14,125,1,124, - 1,136,0,102,2,86,0,1,0,113,2,100,0,83,0,41, - 1,78,114,4,0,0,0,41,2,114,24,0,0,0,114,221, - 0,0,0,41,1,114,124,0,0,0,114,4,0,0,0,114, - 6,0,0,0,114,223,0,0,0,179,4,0,0,115,2,0, - 0,0,4,0,122,38,70,105,108,101,70,105,110,100,101,114, - 46,95,95,105,110,105,116,95,95,46,60,108,111,99,97,108, - 115,62,46,60,103,101,110,101,120,112,114,62,114,61,0,0, - 0,114,31,0,0,0,78,114,91,0,0,0,41,7,114,147, - 0,0,0,218,8,95,108,111,97,100,101,114,115,114,37,0, - 0,0,218,11,95,112,97,116,104,95,109,116,105,109,101,218, - 3,115,101,116,218,11,95,112,97,116,104,95,99,97,99,104, - 101,218,19,95,114,101,108,97,120,101,100,95,112,97,116,104, - 95,99,97,99,104,101,41,5,114,104,0,0,0,114,37,0, - 0,0,218,14,108,111,97,100,101,114,95,100,101,116,97,105, - 108,115,90,7,108,111,97,100,101,114,115,114,164,0,0,0, - 114,4,0,0,0,41,1,114,124,0,0,0,114,6,0,0, - 0,114,182,0,0,0,173,4,0,0,115,16,0,0,0,0, - 4,4,1,14,1,28,1,6,2,10,1,6,1,8,1,122, - 19,70,105,108,101,70,105,110,100,101,114,46,95,95,105,110, - 105,116,95,95,99,1,0,0,0,0,0,0,0,1,0,0, - 0,2,0,0,0,67,0,0,0,115,10,0,0,0,100,3, - 124,0,95,0,100,2,83,0,41,4,122,31,73,110,118,97, - 108,105,100,97,116,101,32,116,104,101,32,100,105,114,101,99, - 116,111,114,121,32,109,116,105,109,101,46,114,31,0,0,0, - 78,114,91,0,0,0,41,1,114,6,1,0,0,41,1,114, - 104,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,114,248,0,0,0,187,4,0,0,115,2,0,0, - 0,0,2,122,28,70,105,108,101,70,105,110,100,101,114,46, - 105,110,118,97,108,105,100,97,116,101,95,99,97,99,104,101, - 115,99,2,0,0,0,0,0,0,0,3,0,0,0,3,0, - 0,0,67,0,0,0,115,42,0,0,0,124,0,160,0,124, - 1,161,1,125,2,124,2,100,1,107,8,114,26,100,1,103, - 0,102,2,83,0,124,2,106,1,124,2,106,2,112,38,103, - 0,102,2,83,0,41,2,122,197,84,114,121,32,116,111,32, - 102,105,110,100,32,97,32,108,111,97,100,101,114,32,102,111, - 114,32,116,104,101,32,115,112,101,99,105,102,105,101,100,32, - 109,111,100,117,108,101,44,32,111,114,32,116,104,101,32,110, - 97,109,101,115,112,97,99,101,10,32,32,32,32,32,32,32, - 32,112,97,99,107,97,103,101,32,112,111,114,116,105,111,110, - 115,46,32,82,101,116,117,114,110,115,32,40,108,111,97,100, - 101,114,44,32,108,105,115,116,45,111,102,45,112,111,114,116, - 105,111,110,115,41,46,10,10,32,32,32,32,32,32,32,32, - 84,104,105,115,32,109,101,116,104,111,100,32,105,115,32,100, - 101,112,114,101,99,97,116,101,100,46,32,32,85,115,101,32, - 102,105,110,100,95,115,112,101,99,40,41,32,105,110,115,116, - 101,97,100,46,10,10,32,32,32,32,32,32,32,32,78,41, - 3,114,178,0,0,0,114,124,0,0,0,114,154,0,0,0, - 41,3,114,104,0,0,0,114,123,0,0,0,114,162,0,0, + 9,95,103,101,116,95,115,112,101,99,94,4,0,0,115,40, + 0,0,0,0,5,4,1,10,1,14,1,2,1,10,1,8, + 1,10,1,14,2,12,1,8,1,2,1,10,1,4,1,6, + 1,8,1,8,5,14,2,12,1,6,1,122,20,80,97,116, + 104,70,105,110,100,101,114,46,95,103,101,116,95,115,112,101, + 99,99,4,0,0,0,0,0,0,0,6,0,0,0,5,0, + 0,0,67,0,0,0,115,100,0,0,0,124,2,100,1,107, + 8,114,14,116,0,106,1,125,2,124,0,160,2,124,1,124, + 2,124,3,161,3,125,4,124,4,100,1,107,8,114,40,100, + 1,83,0,124,4,106,3,100,1,107,8,114,92,124,4,106, + 4,125,5,124,5,114,86,100,2,124,4,95,5,116,6,124, + 1,124,5,124,0,106,2,131,3,124,4,95,4,124,4,83, + 0,100,1,83,0,110,4,124,4,83,0,100,1,83,0,41, + 3,122,141,84,114,121,32,116,111,32,102,105,110,100,32,97, + 32,115,112,101,99,32,102,111,114,32,39,102,117,108,108,110, + 97,109,101,39,32,111,110,32,115,121,115,46,112,97,116,104, + 32,111,114,32,39,112,97,116,104,39,46,10,10,32,32,32, + 32,32,32,32,32,84,104,101,32,115,101,97,114,99,104,32, + 105,115,32,98,97,115,101,100,32,111,110,32,115,121,115,46, + 112,97,116,104,95,104,111,111,107,115,32,97,110,100,32,115, + 121,115,46,112,97,116,104,95,105,109,112,111,114,116,101,114, + 95,99,97,99,104,101,46,10,32,32,32,32,32,32,32,32, + 78,90,9,110,97,109,101,115,112,97,99,101,41,7,114,8, + 0,0,0,114,37,0,0,0,114,3,1,0,0,114,124,0, + 0,0,114,154,0,0,0,114,156,0,0,0,114,226,0,0, + 0,41,6,114,168,0,0,0,114,123,0,0,0,114,37,0, + 0,0,114,177,0,0,0,114,162,0,0,0,114,2,1,0, 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 114,121,0,0,0,193,4,0,0,115,8,0,0,0,0,7, - 10,1,8,1,8,1,122,22,70,105,108,101,70,105,110,100, - 101,114,46,102,105,110,100,95,108,111,97,100,101,114,99,6, - 0,0,0,0,0,0,0,7,0,0,0,6,0,0,0,67, - 0,0,0,115,26,0,0,0,124,1,124,2,124,3,131,2, - 125,6,116,0,124,2,124,3,124,6,124,4,100,1,141,4, - 83,0,41,2,78,41,2,114,124,0,0,0,114,154,0,0, - 0,41,1,114,165,0,0,0,41,7,114,104,0,0,0,114, - 163,0,0,0,114,123,0,0,0,114,37,0,0,0,90,4, - 115,109,115,108,114,177,0,0,0,114,124,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,6,0,0,0,114,3,1, - 0,0,205,4,0,0,115,6,0,0,0,0,1,10,1,8, - 1,122,20,70,105,108,101,70,105,110,100,101,114,46,95,103, - 101,116,95,115,112,101,99,78,99,3,0,0,0,0,0,0, - 0,14,0,0,0,16,0,0,0,67,0,0,0,115,98,1, - 0,0,100,1,125,3,124,1,160,0,100,2,161,1,100,3, - 25,0,125,4,121,24,116,1,124,0,106,2,112,34,116,3, - 160,4,161,0,131,1,106,5,125,5,87,0,110,24,4,0, - 116,6,107,10,114,66,1,0,1,0,1,0,100,10,125,5, - 89,0,110,2,88,0,124,5,124,0,106,7,107,3,114,92, - 124,0,160,8,161,0,1,0,124,5,124,0,95,7,116,9, - 131,0,114,114,124,0,106,10,125,6,124,4,160,11,161,0, - 125,7,110,10,124,0,106,12,125,6,124,4,125,7,124,7, - 124,6,107,6,114,218,116,13,124,0,106,2,124,4,131,2, - 125,8,120,72,124,0,106,14,68,0,93,54,92,2,125,9, - 125,10,100,5,124,9,23,0,125,11,116,13,124,8,124,11, - 131,2,125,12,116,15,124,12,131,1,114,152,124,0,160,16, - 124,10,124,1,124,12,124,8,103,1,124,2,161,5,83,0, - 113,152,87,0,116,17,124,8,131,1,125,3,120,88,124,0, - 106,14,68,0,93,78,92,2,125,9,125,10,116,13,124,0, - 106,2,124,4,124,9,23,0,131,2,125,12,116,18,106,19, - 100,6,124,12,100,3,100,7,141,3,1,0,124,7,124,9, - 23,0,124,6,107,6,114,226,116,15,124,12,131,1,114,226, - 124,0,160,16,124,10,124,1,124,12,100,8,124,2,161,5, - 83,0,113,226,87,0,124,3,144,1,114,94,116,18,160,19, - 100,9,124,8,161,2,1,0,116,18,160,20,124,1,100,8, - 161,2,125,13,124,8,103,1,124,13,95,21,124,13,83,0, - 100,8,83,0,41,11,122,111,84,114,121,32,116,111,32,102, - 105,110,100,32,97,32,115,112,101,99,32,102,111,114,32,116, - 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, - 117,108,101,46,10,10,32,32,32,32,32,32,32,32,82,101, - 116,117,114,110,115,32,116,104,101,32,109,97,116,99,104,105, - 110,103,32,115,112,101,99,44,32,111,114,32,78,111,110,101, - 32,105,102,32,110,111,116,32,102,111,117,110,100,46,10,32, - 32,32,32,32,32,32,32,70,114,61,0,0,0,114,59,0, - 0,0,114,31,0,0,0,114,182,0,0,0,122,9,116,114, - 121,105,110,103,32,123,125,41,1,90,9,118,101,114,98,111, - 115,105,116,121,78,122,25,112,111,115,115,105,98,108,101,32, - 110,97,109,101,115,112,97,99,101,32,102,111,114,32,123,125, - 114,91,0,0,0,41,22,114,34,0,0,0,114,41,0,0, - 0,114,37,0,0,0,114,3,0,0,0,114,47,0,0,0, - 114,215,0,0,0,114,42,0,0,0,114,6,1,0,0,218, - 11,95,102,105,108,108,95,99,97,99,104,101,114,7,0,0, - 0,114,9,1,0,0,114,92,0,0,0,114,8,1,0,0, - 114,30,0,0,0,114,5,1,0,0,114,46,0,0,0,114, - 3,1,0,0,114,48,0,0,0,114,118,0,0,0,114,133, - 0,0,0,114,158,0,0,0,114,154,0,0,0,41,14,114, - 104,0,0,0,114,123,0,0,0,114,177,0,0,0,90,12, - 105,115,95,110,97,109,101,115,112,97,99,101,90,11,116,97, - 105,108,95,109,111,100,117,108,101,114,130,0,0,0,90,5, - 99,97,99,104,101,90,12,99,97,99,104,101,95,109,111,100, - 117,108,101,90,9,98,97,115,101,95,112,97,116,104,114,221, - 0,0,0,114,163,0,0,0,90,13,105,110,105,116,95,102, - 105,108,101,110,97,109,101,90,9,102,117,108,108,95,112,97, - 116,104,114,162,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,6,0,0,0,114,178,0,0,0,210,4,0,0,115, - 70,0,0,0,0,5,4,1,14,1,2,1,24,1,14,1, - 10,1,10,1,8,1,6,2,6,1,6,1,10,2,6,1, - 4,2,8,1,12,1,16,1,8,1,10,1,8,1,24,4, - 8,2,16,1,16,1,16,1,12,1,8,1,10,1,12,1, - 6,1,12,1,12,1,8,1,4,1,122,20,70,105,108,101, - 70,105,110,100,101,114,46,102,105,110,100,95,115,112,101,99, - 99,1,0,0,0,0,0,0,0,9,0,0,0,14,0,0, - 0,67,0,0,0,115,194,0,0,0,124,0,106,0,125,1, - 121,22,116,1,160,2,124,1,112,22,116,1,160,3,161,0, - 161,1,125,2,87,0,110,30,4,0,116,4,116,5,116,6, - 102,3,107,10,114,58,1,0,1,0,1,0,103,0,125,2, - 89,0,110,2,88,0,116,7,106,8,160,9,100,1,161,1, - 115,84,116,10,124,2,131,1,124,0,95,11,110,78,116,10, - 131,0,125,3,120,64,124,2,68,0,93,56,125,4,124,4, - 160,12,100,2,161,1,92,3,125,5,125,6,125,7,124,6, - 114,138,100,3,160,13,124,5,124,7,160,14,161,0,161,2, - 125,8,110,4,124,5,125,8,124,3,160,15,124,8,161,1, - 1,0,113,96,87,0,124,3,124,0,95,11,116,7,106,8, - 160,9,116,16,161,1,114,190,100,4,100,5,132,0,124,2, - 68,0,131,1,124,0,95,17,100,6,83,0,41,7,122,68, - 70,105,108,108,32,116,104,101,32,99,97,99,104,101,32,111, - 102,32,112,111,116,101,110,116,105,97,108,32,109,111,100,117, - 108,101,115,32,97,110,100,32,112,97,99,107,97,103,101,115, - 32,102,111,114,32,116,104,105,115,32,100,105,114,101,99,116, - 111,114,121,46,114,0,0,0,0,114,61,0,0,0,122,5, - 123,125,46,123,125,99,1,0,0,0,0,0,0,0,2,0, - 0,0,4,0,0,0,83,0,0,0,115,20,0,0,0,104, - 0,124,0,93,12,125,1,124,1,160,0,161,0,146,2,113, - 4,83,0,114,4,0,0,0,41,1,114,92,0,0,0,41, - 2,114,24,0,0,0,90,2,102,110,114,4,0,0,0,114, - 4,0,0,0,114,6,0,0,0,250,9,60,115,101,116,99, - 111,109,112,62,31,5,0,0,115,2,0,0,0,6,0,122, - 41,70,105,108,101,70,105,110,100,101,114,46,95,102,105,108, - 108,95,99,97,99,104,101,46,60,108,111,99,97,108,115,62, - 46,60,115,101,116,99,111,109,112,62,78,41,18,114,37,0, - 0,0,114,3,0,0,0,90,7,108,105,115,116,100,105,114, - 114,47,0,0,0,114,254,0,0,0,218,15,80,101,114,109, - 105,115,115,105,111,110,69,114,114,111,114,218,18,78,111,116, - 65,68,105,114,101,99,116,111,114,121,69,114,114,111,114,114, - 8,0,0,0,114,9,0,0,0,114,10,0,0,0,114,7, - 1,0,0,114,8,1,0,0,114,87,0,0,0,114,50,0, - 0,0,114,92,0,0,0,218,3,97,100,100,114,11,0,0, - 0,114,9,1,0,0,41,9,114,104,0,0,0,114,37,0, - 0,0,90,8,99,111,110,116,101,110,116,115,90,21,108,111, - 119,101,114,95,115,117,102,102,105,120,95,99,111,110,116,101, - 110,116,115,114,243,0,0,0,114,102,0,0,0,114,233,0, - 0,0,114,221,0,0,0,90,8,110,101,119,95,110,97,109, - 101,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, - 114,11,1,0,0,2,5,0,0,115,34,0,0,0,0,2, - 6,1,2,1,22,1,20,3,10,3,12,1,12,7,6,1, - 10,1,16,1,4,1,18,2,4,1,14,1,6,1,12,1, - 122,22,70,105,108,101,70,105,110,100,101,114,46,95,102,105, - 108,108,95,99,97,99,104,101,99,1,0,0,0,0,0,0, - 0,3,0,0,0,3,0,0,0,7,0,0,0,115,18,0, - 0,0,135,0,135,1,102,2,100,1,100,2,132,8,125,2, - 124,2,83,0,41,3,97,20,1,0,0,65,32,99,108,97, - 115,115,32,109,101,116,104,111,100,32,119,104,105,99,104,32, - 114,101,116,117,114,110,115,32,97,32,99,108,111,115,117,114, - 101,32,116,111,32,117,115,101,32,111,110,32,115,121,115,46, - 112,97,116,104,95,104,111,111,107,10,32,32,32,32,32,32, - 32,32,119,104,105,99,104,32,119,105,108,108,32,114,101,116, - 117,114,110,32,97,110,32,105,110,115,116,97,110,99,101,32, - 117,115,105,110,103,32,116,104,101,32,115,112,101,99,105,102, - 105,101,100,32,108,111,97,100,101,114,115,32,97,110,100,32, - 116,104,101,32,112,97,116,104,10,32,32,32,32,32,32,32, - 32,99,97,108,108,101,100,32,111,110,32,116,104,101,32,99, - 108,111,115,117,114,101,46,10,10,32,32,32,32,32,32,32, - 32,73,102,32,116,104,101,32,112,97,116,104,32,99,97,108, - 108,101,100,32,111,110,32,116,104,101,32,99,108,111,115,117, - 114,101,32,105,115,32,110,111,116,32,97,32,100,105,114,101, - 99,116,111,114,121,44,32,73,109,112,111,114,116,69,114,114, - 111,114,32,105,115,10,32,32,32,32,32,32,32,32,114,97, - 105,115,101,100,46,10,10,32,32,32,32,32,32,32,32,99, - 1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 19,0,0,0,115,34,0,0,0,116,0,124,0,131,1,115, - 20,116,1,100,1,124,0,100,2,141,2,130,1,136,0,124, - 0,102,1,136,1,158,2,142,0,83,0,41,3,122,45,80, - 97,116,104,32,104,111,111,107,32,102,111,114,32,105,109,112, - 111,114,116,108,105,98,46,109,97,99,104,105,110,101,114,121, - 46,70,105,108,101,70,105,110,100,101,114,46,122,30,111,110, - 108,121,32,100,105,114,101,99,116,111,114,105,101,115,32,97, - 114,101,32,115,117,112,112,111,114,116,101,100,41,1,114,37, - 0,0,0,41,2,114,48,0,0,0,114,103,0,0,0,41, - 1,114,37,0,0,0,41,2,114,168,0,0,0,114,10,1, - 0,0,114,4,0,0,0,114,6,0,0,0,218,24,112,97, - 116,104,95,104,111,111,107,95,102,111,114,95,70,105,108,101, - 70,105,110,100,101,114,43,5,0,0,115,6,0,0,0,0, - 2,8,1,12,1,122,54,70,105,108,101,70,105,110,100,101, - 114,46,112,97,116,104,95,104,111,111,107,46,60,108,111,99, - 97,108,115,62,46,112,97,116,104,95,104,111,111,107,95,102, - 111,114,95,70,105,108,101,70,105,110,100,101,114,114,4,0, - 0,0,41,3,114,168,0,0,0,114,10,1,0,0,114,16, - 1,0,0,114,4,0,0,0,41,2,114,168,0,0,0,114, - 10,1,0,0,114,6,0,0,0,218,9,112,97,116,104,95, - 104,111,111,107,33,5,0,0,115,4,0,0,0,0,10,14, - 6,122,20,70,105,108,101,70,105,110,100,101,114,46,112,97, - 116,104,95,104,111,111,107,99,1,0,0,0,0,0,0,0, - 1,0,0,0,3,0,0,0,67,0,0,0,115,12,0,0, - 0,100,1,160,0,124,0,106,1,161,1,83,0,41,2,78, - 122,16,70,105,108,101,70,105,110,100,101,114,40,123,33,114, - 125,41,41,2,114,50,0,0,0,114,37,0,0,0,41,1, - 114,104,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 6,0,0,0,114,242,0,0,0,51,5,0,0,115,2,0, - 0,0,0,1,122,19,70,105,108,101,70,105,110,100,101,114, - 46,95,95,114,101,112,114,95,95,41,1,78,41,15,114,109, - 0,0,0,114,108,0,0,0,114,110,0,0,0,114,111,0, - 0,0,114,182,0,0,0,114,248,0,0,0,114,127,0,0, - 0,114,179,0,0,0,114,121,0,0,0,114,3,1,0,0, - 114,178,0,0,0,114,11,1,0,0,114,180,0,0,0,114, - 17,1,0,0,114,242,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,6,0,0,0,114,4,1, - 0,0,164,4,0,0,115,18,0,0,0,12,9,8,14,8, - 4,4,2,8,12,8,5,10,48,8,31,12,18,114,4,1, - 0,0,99,4,0,0,0,0,0,0,0,6,0,0,0,11, - 0,0,0,67,0,0,0,115,146,0,0,0,124,0,160,0, - 100,1,161,1,125,4,124,0,160,0,100,2,161,1,125,5, - 124,4,115,66,124,5,114,36,124,5,106,1,125,4,110,30, - 124,2,124,3,107,2,114,56,116,2,124,1,124,2,131,2, - 125,4,110,10,116,3,124,1,124,2,131,2,125,4,124,5, - 115,84,116,4,124,1,124,2,124,4,100,3,141,3,125,5, - 121,36,124,5,124,0,100,2,60,0,124,4,124,0,100,1, - 60,0,124,2,124,0,100,4,60,0,124,3,124,0,100,5, - 60,0,87,0,110,20,4,0,116,5,107,10,114,140,1,0, - 1,0,1,0,89,0,110,2,88,0,100,0,83,0,41,6, - 78,218,10,95,95,108,111,97,100,101,114,95,95,218,8,95, - 95,115,112,101,99,95,95,41,1,114,124,0,0,0,90,8, - 95,95,102,105,108,101,95,95,90,10,95,95,99,97,99,104, - 101,100,95,95,41,6,218,3,103,101,116,114,124,0,0,0, - 114,219,0,0,0,114,214,0,0,0,114,165,0,0,0,218, - 9,69,120,99,101,112,116,105,111,110,41,6,90,2,110,115, - 114,102,0,0,0,90,8,112,97,116,104,110,97,109,101,90, - 9,99,112,97,116,104,110,97,109,101,114,124,0,0,0,114, - 162,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,218,14,95,102,105,120,95,117,112,95,109,111,100, - 117,108,101,57,5,0,0,115,34,0,0,0,0,2,10,1, - 10,1,4,1,4,1,8,1,8,1,12,2,10,1,4,1, - 14,1,2,1,8,1,8,1,8,1,12,1,14,2,114,22, - 1,0,0,99,0,0,0,0,0,0,0,0,3,0,0,0, - 3,0,0,0,67,0,0,0,115,38,0,0,0,116,0,116, - 1,160,2,161,0,102,2,125,0,116,3,116,4,102,2,125, - 1,116,5,116,6,102,2,125,2,124,0,124,1,124,2,103, - 3,83,0,41,1,122,95,82,101,116,117,114,110,115,32,97, - 32,108,105,115,116,32,111,102,32,102,105,108,101,45,98,97, - 115,101,100,32,109,111,100,117,108,101,32,108,111,97,100,101, - 114,115,46,10,10,32,32,32,32,69,97,99,104,32,105,116, - 101,109,32,105,115,32,97,32,116,117,112,108,101,32,40,108, - 111,97,100,101,114,44,32,115,117,102,102,105,120,101,115,41, - 46,10,32,32,32,32,41,7,114,220,0,0,0,114,143,0, - 0,0,218,18,101,120,116,101,110,115,105,111,110,95,115,117, - 102,102,105,120,101,115,114,214,0,0,0,114,88,0,0,0, - 114,219,0,0,0,114,78,0,0,0,41,3,90,10,101,120, - 116,101,110,115,105,111,110,115,90,6,115,111,117,114,99,101, - 90,8,98,121,116,101,99,111,100,101,114,4,0,0,0,114, - 4,0,0,0,114,6,0,0,0,114,159,0,0,0,80,5, - 0,0,115,8,0,0,0,0,5,12,1,8,1,8,1,114, - 159,0,0,0,99,1,0,0,0,0,0,0,0,12,0,0, - 0,12,0,0,0,67,0,0,0,115,188,1,0,0,124,0, - 97,0,116,0,106,1,97,1,116,0,106,2,97,2,116,1, - 106,3,116,4,25,0,125,1,120,56,100,26,68,0,93,48, - 125,2,124,2,116,1,106,3,107,7,114,58,116,0,160,5, - 124,2,161,1,125,3,110,10,116,1,106,3,124,2,25,0, - 125,3,116,6,124,1,124,2,124,3,131,3,1,0,113,32, - 87,0,100,5,100,6,103,1,102,2,100,7,100,8,100,6, - 103,2,102,2,102,2,125,4,120,118,124,4,68,0,93,102, - 92,2,125,5,125,6,116,7,100,9,100,10,132,0,124,6, - 68,0,131,1,131,1,115,142,116,8,130,1,124,6,100,11, - 25,0,125,7,124,5,116,1,106,3,107,6,114,174,116,1, - 106,3,124,5,25,0,125,8,80,0,113,112,121,16,116,0, - 160,5,124,5,161,1,125,8,80,0,87,0,113,112,4,0, - 116,9,107,10,114,212,1,0,1,0,1,0,119,112,89,0, - 113,112,88,0,113,112,87,0,116,9,100,12,131,1,130,1, - 116,6,124,1,100,13,124,8,131,3,1,0,116,6,124,1, - 100,14,124,7,131,3,1,0,116,6,124,1,100,15,100,16, - 160,10,124,6,161,1,131,3,1,0,121,14,116,0,160,5, - 100,17,161,1,125,9,87,0,110,26,4,0,116,9,107,10, - 144,1,114,52,1,0,1,0,1,0,100,18,125,9,89,0, - 110,2,88,0,116,6,124,1,100,17,124,9,131,3,1,0, - 116,0,160,5,100,19,161,1,125,10,116,6,124,1,100,19, - 124,10,131,3,1,0,124,5,100,7,107,2,144,1,114,120, - 116,0,160,5,100,20,161,1,125,11,116,6,124,1,100,21, - 124,11,131,3,1,0,116,6,124,1,100,22,116,11,131,0, - 131,3,1,0,116,12,160,13,116,2,160,14,161,0,161,1, - 1,0,124,5,100,7,107,2,144,1,114,184,116,15,160,16, - 100,23,161,1,1,0,100,24,116,12,107,6,144,1,114,184, - 100,25,116,17,95,18,100,18,83,0,41,27,122,205,83,101, - 116,117,112,32,116,104,101,32,112,97,116,104,45,98,97,115, - 101,100,32,105,109,112,111,114,116,101,114,115,32,102,111,114, - 32,105,109,112,111,114,116,108,105,98,32,98,121,32,105,109, - 112,111,114,116,105,110,103,32,110,101,101,100,101,100,10,32, - 32,32,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,115,32,97,110,100,32,105,110,106,101,99,116,105,110, - 103,32,116,104,101,109,32,105,110,116,111,32,116,104,101,32, - 103,108,111,98,97,108,32,110,97,109,101,115,112,97,99,101, - 46,10,10,32,32,32,32,79,116,104,101,114,32,99,111,109, - 112,111,110,101,110,116,115,32,97,114,101,32,101,120,116,114, - 97,99,116,101,100,32,102,114,111,109,32,116,104,101,32,99, - 111,114,101,32,98,111,111,116,115,116,114,97,112,32,109,111, - 100,117,108,101,46,10,10,32,32,32,32,114,52,0,0,0, - 114,63,0,0,0,218,8,98,117,105,108,116,105,110,115,114, - 140,0,0,0,90,5,112,111,115,105,120,250,1,47,90,2, - 110,116,250,1,92,99,1,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,115,0,0,0,115,26,0,0,0,124, - 0,93,18,125,1,116,0,124,1,131,1,100,0,107,2,86, - 0,1,0,113,2,100,1,83,0,41,2,114,31,0,0,0, - 78,41,1,114,33,0,0,0,41,2,114,24,0,0,0,114, - 81,0,0,0,114,4,0,0,0,114,4,0,0,0,114,6, - 0,0,0,114,223,0,0,0,116,5,0,0,115,2,0,0, - 0,4,0,122,25,95,115,101,116,117,112,46,60,108,111,99, - 97,108,115,62,46,60,103,101,110,101,120,112,114,62,114,62, - 0,0,0,122,30,105,109,112,111,114,116,108,105,98,32,114, - 101,113,117,105,114,101,115,32,112,111,115,105,120,32,111,114, - 32,110,116,114,3,0,0,0,114,27,0,0,0,114,23,0, - 0,0,114,32,0,0,0,90,7,95,116,104,114,101,97,100, - 78,90,8,95,119,101,97,107,114,101,102,90,6,119,105,110, - 114,101,103,114,167,0,0,0,114,7,0,0,0,122,4,46, - 112,121,119,122,6,95,100,46,112,121,100,84,41,4,114,52, - 0,0,0,114,63,0,0,0,114,24,1,0,0,114,140,0, - 0,0,41,19,114,118,0,0,0,114,8,0,0,0,114,143, - 0,0,0,114,235,0,0,0,114,109,0,0,0,90,18,95, - 98,117,105,108,116,105,110,95,102,114,111,109,95,110,97,109, - 101,114,113,0,0,0,218,3,97,108,108,218,14,65,115,115, - 101,114,116,105,111,110,69,114,114,111,114,114,103,0,0,0, - 114,28,0,0,0,114,13,0,0,0,114,225,0,0,0,114, - 147,0,0,0,114,23,1,0,0,114,88,0,0,0,114,161, - 0,0,0,114,166,0,0,0,114,170,0,0,0,41,12,218, - 17,95,98,111,111,116,115,116,114,97,112,95,109,111,100,117, - 108,101,90,11,115,101,108,102,95,109,111,100,117,108,101,90, - 12,98,117,105,108,116,105,110,95,110,97,109,101,90,14,98, - 117,105,108,116,105,110,95,109,111,100,117,108,101,90,10,111, - 115,95,100,101,116,97,105,108,115,90,10,98,117,105,108,116, - 105,110,95,111,115,114,23,0,0,0,114,27,0,0,0,90, - 9,111,115,95,109,111,100,117,108,101,90,13,116,104,114,101, - 97,100,95,109,111,100,117,108,101,90,14,119,101,97,107,114, - 101,102,95,109,111,100,117,108,101,90,13,119,105,110,114,101, - 103,95,109,111,100,117,108,101,114,4,0,0,0,114,4,0, - 0,0,114,6,0,0,0,218,6,95,115,101,116,117,112,91, - 5,0,0,115,82,0,0,0,0,8,4,1,6,1,6,3, - 10,1,10,1,10,1,12,2,10,1,16,3,22,1,14,2, - 22,1,8,1,10,1,10,1,4,2,2,1,10,1,6,1, - 14,1,12,2,8,1,12,1,12,1,18,3,2,1,14,1, - 16,2,10,1,12,3,10,1,12,3,10,1,10,1,12,3, - 14,1,14,1,10,1,10,1,10,1,114,30,1,0,0,99, - 1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, - 67,0,0,0,115,50,0,0,0,116,0,124,0,131,1,1, - 0,116,1,131,0,125,1,116,2,106,3,160,4,116,5,106, - 6,124,1,142,0,103,1,161,1,1,0,116,2,106,7,160, - 8,116,9,161,1,1,0,100,1,83,0,41,2,122,41,73, - 110,115,116,97,108,108,32,116,104,101,32,112,97,116,104,45, - 98,97,115,101,100,32,105,109,112,111,114,116,32,99,111,109, - 112,111,110,101,110,116,115,46,78,41,10,114,30,1,0,0, - 114,159,0,0,0,114,8,0,0,0,114,252,0,0,0,114, - 147,0,0,0,114,4,1,0,0,114,17,1,0,0,218,9, - 109,101,116,97,95,112,97,116,104,114,161,0,0,0,114,247, - 0,0,0,41,2,114,29,1,0,0,90,17,115,117,112,112, - 111,114,116,101,100,95,108,111,97,100,101,114,115,114,4,0, - 0,0,114,4,0,0,0,114,6,0,0,0,218,8,95,105, - 110,115,116,97,108,108,159,5,0,0,115,8,0,0,0,0, - 2,8,1,6,1,20,1,114,32,1,0,0,41,1,114,0, - 0,0,0,41,2,114,1,0,0,0,114,2,0,0,0,41, - 1,114,49,0,0,0,41,1,78,41,3,78,78,78,41,3, - 78,78,78,41,2,114,62,0,0,0,114,62,0,0,0,41, - 1,78,41,1,78,41,58,114,111,0,0,0,114,12,0,0, - 0,90,37,95,67,65,83,69,95,73,78,83,69,78,83,73, - 84,73,86,69,95,80,76,65,84,70,79,82,77,83,95,66, - 89,84,69,83,95,75,69,89,114,11,0,0,0,114,13,0, - 0,0,114,19,0,0,0,114,21,0,0,0,114,30,0,0, - 0,114,40,0,0,0,114,41,0,0,0,114,45,0,0,0, - 114,46,0,0,0,114,48,0,0,0,114,58,0,0,0,218, - 4,116,121,112,101,218,8,95,95,99,111,100,101,95,95,114, - 142,0,0,0,114,17,0,0,0,114,132,0,0,0,114,16, - 0,0,0,114,20,0,0,0,90,17,95,82,65,87,95,77, - 65,71,73,67,95,78,85,77,66,69,82,114,77,0,0,0, - 114,76,0,0,0,114,88,0,0,0,114,78,0,0,0,90, - 23,68,69,66,85,71,95,66,89,84,69,67,79,68,69,95, - 83,85,70,70,73,88,69,83,90,27,79,80,84,73,77,73, - 90,69,68,95,66,89,84,69,67,79,68,69,95,83,85,70, - 70,73,88,69,83,114,83,0,0,0,114,89,0,0,0,114, - 95,0,0,0,114,99,0,0,0,114,101,0,0,0,114,120, - 0,0,0,114,127,0,0,0,114,139,0,0,0,114,145,0, - 0,0,114,148,0,0,0,114,153,0,0,0,218,6,111,98, - 106,101,99,116,114,160,0,0,0,114,165,0,0,0,114,166, - 0,0,0,114,181,0,0,0,114,191,0,0,0,114,206,0, - 0,0,114,214,0,0,0,114,219,0,0,0,114,225,0,0, - 0,114,220,0,0,0,114,226,0,0,0,114,245,0,0,0, - 114,247,0,0,0,114,4,1,0,0,114,22,1,0,0,114, - 159,0,0,0,114,30,1,0,0,114,32,1,0,0,114,4, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,6,0, - 0,0,218,8,60,109,111,100,117,108,101,62,24,0,0,0, - 115,108,0,0,0,4,0,4,1,4,1,2,1,6,3,8, - 17,8,5,8,5,8,6,8,12,8,10,8,9,8,5,8, - 7,10,22,10,124,16,1,12,2,4,1,4,2,6,2,6, - 2,8,2,16,45,8,34,8,19,8,12,8,12,8,28,8, - 17,10,55,10,12,10,10,8,14,6,3,4,1,14,67,14, - 64,14,29,16,110,14,41,18,45,18,16,4,3,18,53,14, - 60,14,42,14,127,0,5,14,127,0,22,10,23,8,11,8, - 68, + 114,178,0,0,0,126,4,0,0,115,26,0,0,0,0,6, + 8,1,6,1,14,1,8,1,4,1,10,1,6,1,4,3, + 6,1,16,1,4,2,6,2,122,20,80,97,116,104,70,105, + 110,100,101,114,46,102,105,110,100,95,115,112,101,99,99,3, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,30,0,0,0,124,0,160,0,124,1,124,2, + 161,2,125,3,124,3,100,1,107,8,114,24,100,1,83,0, + 124,3,106,1,83,0,41,2,122,170,102,105,110,100,32,116, + 104,101,32,109,111,100,117,108,101,32,111,110,32,115,121,115, + 46,112,97,116,104,32,111,114,32,39,112,97,116,104,39,32, + 98,97,115,101,100,32,111,110,32,115,121,115,46,112,97,116, + 104,95,104,111,111,107,115,32,97,110,100,10,32,32,32,32, + 32,32,32,32,115,121,115,46,112,97,116,104,95,105,109,112, + 111,114,116,101,114,95,99,97,99,104,101,46,10,10,32,32, + 32,32,32,32,32,32,84,104,105,115,32,109,101,116,104,111, + 100,32,105,115,32,100,101,112,114,101,99,97,116,101,100,46, + 32,32,85,115,101,32,102,105,110,100,95,115,112,101,99,40, + 41,32,105,110,115,116,101,97,100,46,10,10,32,32,32,32, + 32,32,32,32,78,41,2,114,178,0,0,0,114,124,0,0, + 0,41,4,114,168,0,0,0,114,123,0,0,0,114,37,0, + 0,0,114,162,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,6,0,0,0,114,179,0,0,0,150,4,0,0,115, + 8,0,0,0,0,8,12,1,8,1,4,1,122,22,80,97, + 116,104,70,105,110,100,101,114,46,102,105,110,100,95,109,111, + 100,117,108,101,41,1,78,41,2,78,78,41,1,78,41,12, + 114,109,0,0,0,114,108,0,0,0,114,110,0,0,0,114, + 111,0,0,0,114,180,0,0,0,114,248,0,0,0,114,253, + 0,0,0,114,255,0,0,0,114,0,1,0,0,114,3,1, + 0,0,114,178,0,0,0,114,179,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,6,0,0,0, + 114,247,0,0,0,32,4,0,0,115,20,0,0,0,12,4, + 12,8,12,13,12,22,12,15,2,1,12,31,2,1,12,23, + 2,1,114,247,0,0,0,99,0,0,0,0,0,0,0,0, + 0,0,0,0,3,0,0,0,64,0,0,0,115,90,0,0, + 0,101,0,90,1,100,0,90,2,100,1,90,3,100,2,100, + 3,132,0,90,4,100,4,100,5,132,0,90,5,101,6,90, + 7,100,6,100,7,132,0,90,8,100,8,100,9,132,0,90, + 9,100,19,100,11,100,12,132,1,90,10,100,13,100,14,132, + 0,90,11,101,12,100,15,100,16,132,0,131,1,90,13,100, + 17,100,18,132,0,90,14,100,10,83,0,41,20,218,10,70, + 105,108,101,70,105,110,100,101,114,122,172,70,105,108,101,45, + 98,97,115,101,100,32,102,105,110,100,101,114,46,10,10,32, + 32,32,32,73,110,116,101,114,97,99,116,105,111,110,115,32, + 119,105,116,104,32,116,104,101,32,102,105,108,101,32,115,121, + 115,116,101,109,32,97,114,101,32,99,97,99,104,101,100,32, + 102,111,114,32,112,101,114,102,111,114,109,97,110,99,101,44, + 32,98,101,105,110,103,10,32,32,32,32,114,101,102,114,101, + 115,104,101,100,32,119,104,101,110,32,116,104,101,32,100,105, + 114,101,99,116,111,114,121,32,116,104,101,32,102,105,110,100, + 101,114,32,105,115,32,104,97,110,100,108,105,110,103,32,104, + 97,115,32,98,101,101,110,32,109,111,100,105,102,105,101,100, + 46,10,10,32,32,32,32,99,2,0,0,0,0,0,0,0, + 5,0,0,0,6,0,0,0,7,0,0,0,115,88,0,0, + 0,103,0,125,3,120,40,124,2,68,0,93,32,92,2,137, + 0,125,4,124,3,160,0,135,0,102,1,100,1,100,2,132, + 8,124,4,68,0,131,1,161,1,1,0,113,10,87,0,124, + 3,124,0,95,1,124,1,112,58,100,3,124,0,95,2,100, + 6,124,0,95,3,116,4,131,0,124,0,95,5,116,4,131, + 0,124,0,95,6,100,5,83,0,41,7,122,154,73,110,105, + 116,105,97,108,105,122,101,32,119,105,116,104,32,116,104,101, + 32,112,97,116,104,32,116,111,32,115,101,97,114,99,104,32, + 111,110,32,97,110,100,32,97,32,118,97,114,105,97,98,108, + 101,32,110,117,109,98,101,114,32,111,102,10,32,32,32,32, + 32,32,32,32,50,45,116,117,112,108,101,115,32,99,111,110, + 116,97,105,110,105,110,103,32,116,104,101,32,108,111,97,100, + 101,114,32,97,110,100,32,116,104,101,32,102,105,108,101,32, + 115,117,102,102,105,120,101,115,32,116,104,101,32,108,111,97, + 100,101,114,10,32,32,32,32,32,32,32,32,114,101,99,111, + 103,110,105,122,101,115,46,99,1,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,51,0,0,0,115,22,0,0, + 0,124,0,93,14,125,1,124,1,136,0,102,2,86,0,1, + 0,113,2,100,0,83,0,41,1,78,114,4,0,0,0,41, + 2,114,24,0,0,0,114,221,0,0,0,41,1,114,124,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,223,0,0, + 0,179,4,0,0,115,2,0,0,0,4,0,122,38,70,105, + 108,101,70,105,110,100,101,114,46,95,95,105,110,105,116,95, + 95,46,60,108,111,99,97,108,115,62,46,60,103,101,110,101, + 120,112,114,62,114,61,0,0,0,114,31,0,0,0,78,114, + 91,0,0,0,41,7,114,147,0,0,0,218,8,95,108,111, + 97,100,101,114,115,114,37,0,0,0,218,11,95,112,97,116, + 104,95,109,116,105,109,101,218,3,115,101,116,218,11,95,112, + 97,116,104,95,99,97,99,104,101,218,19,95,114,101,108,97, + 120,101,100,95,112,97,116,104,95,99,97,99,104,101,41,5, + 114,104,0,0,0,114,37,0,0,0,218,14,108,111,97,100, + 101,114,95,100,101,116,97,105,108,115,90,7,108,111,97,100, + 101,114,115,114,164,0,0,0,114,4,0,0,0,41,1,114, + 124,0,0,0,114,6,0,0,0,114,182,0,0,0,173,4, + 0,0,115,16,0,0,0,0,4,4,1,14,1,28,1,6, + 2,10,1,6,1,8,1,122,19,70,105,108,101,70,105,110, + 100,101,114,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0, + 0,115,10,0,0,0,100,3,124,0,95,0,100,2,83,0, + 41,4,122,31,73,110,118,97,108,105,100,97,116,101,32,116, + 104,101,32,100,105,114,101,99,116,111,114,121,32,109,116,105, + 109,101,46,114,31,0,0,0,78,114,91,0,0,0,41,1, + 114,6,1,0,0,41,1,114,104,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,6,0,0,0,114,248,0,0,0, + 187,4,0,0,115,2,0,0,0,0,2,122,28,70,105,108, + 101,70,105,110,100,101,114,46,105,110,118,97,108,105,100,97, + 116,101,95,99,97,99,104,101,115,99,2,0,0,0,0,0, + 0,0,3,0,0,0,3,0,0,0,67,0,0,0,115,42, + 0,0,0,124,0,160,0,124,1,161,1,125,2,124,2,100, + 1,107,8,114,26,100,1,103,0,102,2,83,0,124,2,106, + 1,124,2,106,2,112,38,103,0,102,2,83,0,41,2,122, + 197,84,114,121,32,116,111,32,102,105,110,100,32,97,32,108, + 111,97,100,101,114,32,102,111,114,32,116,104,101,32,115,112, + 101,99,105,102,105,101,100,32,109,111,100,117,108,101,44,32, + 111,114,32,116,104,101,32,110,97,109,101,115,112,97,99,101, + 10,32,32,32,32,32,32,32,32,112,97,99,107,97,103,101, + 32,112,111,114,116,105,111,110,115,46,32,82,101,116,117,114, + 110,115,32,40,108,111,97,100,101,114,44,32,108,105,115,116, + 45,111,102,45,112,111,114,116,105,111,110,115,41,46,10,10, + 32,32,32,32,32,32,32,32,84,104,105,115,32,109,101,116, + 104,111,100,32,105,115,32,100,101,112,114,101,99,97,116,101, + 100,46,32,32,85,115,101,32,102,105,110,100,95,115,112,101, + 99,40,41,32,105,110,115,116,101,97,100,46,10,10,32,32, + 32,32,32,32,32,32,78,41,3,114,178,0,0,0,114,124, + 0,0,0,114,154,0,0,0,41,3,114,104,0,0,0,114, + 123,0,0,0,114,162,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,114,121,0,0,0,193,4,0, + 0,115,8,0,0,0,0,7,10,1,8,1,8,1,122,22, + 70,105,108,101,70,105,110,100,101,114,46,102,105,110,100,95, + 108,111,97,100,101,114,99,6,0,0,0,0,0,0,0,7, + 0,0,0,6,0,0,0,67,0,0,0,115,26,0,0,0, + 124,1,124,2,124,3,131,2,125,6,116,0,124,2,124,3, + 124,6,124,4,100,1,141,4,83,0,41,2,78,41,2,114, + 124,0,0,0,114,154,0,0,0,41,1,114,165,0,0,0, + 41,7,114,104,0,0,0,114,163,0,0,0,114,123,0,0, + 0,114,37,0,0,0,90,4,115,109,115,108,114,177,0,0, + 0,114,124,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,6,0,0,0,114,3,1,0,0,205,4,0,0,115,6, + 0,0,0,0,1,10,1,8,1,122,20,70,105,108,101,70, + 105,110,100,101,114,46,95,103,101,116,95,115,112,101,99,78, + 99,3,0,0,0,0,0,0,0,14,0,0,0,16,0,0, + 0,67,0,0,0,115,98,1,0,0,100,1,125,3,124,1, + 160,0,100,2,161,1,100,3,25,0,125,4,121,24,116,1, + 124,0,106,2,112,34,116,3,160,4,161,0,131,1,106,5, + 125,5,87,0,110,24,4,0,116,6,107,10,114,66,1,0, + 1,0,1,0,100,10,125,5,89,0,110,2,88,0,124,5, + 124,0,106,7,107,3,114,92,124,0,160,8,161,0,1,0, + 124,5,124,0,95,7,116,9,131,0,114,114,124,0,106,10, + 125,6,124,4,160,11,161,0,125,7,110,10,124,0,106,12, + 125,6,124,4,125,7,124,7,124,6,107,6,114,218,116,13, + 124,0,106,2,124,4,131,2,125,8,120,72,124,0,106,14, + 68,0,93,54,92,2,125,9,125,10,100,5,124,9,23,0, + 125,11,116,13,124,8,124,11,131,2,125,12,116,15,124,12, + 131,1,114,152,124,0,160,16,124,10,124,1,124,12,124,8, + 103,1,124,2,161,5,83,0,113,152,87,0,116,17,124,8, + 131,1,125,3,120,88,124,0,106,14,68,0,93,78,92,2, + 125,9,125,10,116,13,124,0,106,2,124,4,124,9,23,0, + 131,2,125,12,116,18,106,19,100,6,124,12,100,3,100,7, + 141,3,1,0,124,7,124,9,23,0,124,6,107,6,114,226, + 116,15,124,12,131,1,114,226,124,0,160,16,124,10,124,1, + 124,12,100,8,124,2,161,5,83,0,113,226,87,0,124,3, + 144,1,114,94,116,18,160,19,100,9,124,8,161,2,1,0, + 116,18,160,20,124,1,100,8,161,2,125,13,124,8,103,1, + 124,13,95,21,124,13,83,0,100,8,83,0,41,11,122,111, + 84,114,121,32,116,111,32,102,105,110,100,32,97,32,115,112, + 101,99,32,102,111,114,32,116,104,101,32,115,112,101,99,105, + 102,105,101,100,32,109,111,100,117,108,101,46,10,10,32,32, + 32,32,32,32,32,32,82,101,116,117,114,110,115,32,116,104, + 101,32,109,97,116,99,104,105,110,103,32,115,112,101,99,44, + 32,111,114,32,78,111,110,101,32,105,102,32,110,111,116,32, + 102,111,117,110,100,46,10,32,32,32,32,32,32,32,32,70, + 114,61,0,0,0,114,59,0,0,0,114,31,0,0,0,114, + 182,0,0,0,122,9,116,114,121,105,110,103,32,123,125,41, + 1,90,9,118,101,114,98,111,115,105,116,121,78,122,25,112, + 111,115,115,105,98,108,101,32,110,97,109,101,115,112,97,99, + 101,32,102,111,114,32,123,125,114,91,0,0,0,41,22,114, + 34,0,0,0,114,41,0,0,0,114,37,0,0,0,114,3, + 0,0,0,114,47,0,0,0,114,215,0,0,0,114,42,0, + 0,0,114,6,1,0,0,218,11,95,102,105,108,108,95,99, + 97,99,104,101,114,7,0,0,0,114,9,1,0,0,114,92, + 0,0,0,114,8,1,0,0,114,30,0,0,0,114,5,1, + 0,0,114,46,0,0,0,114,3,1,0,0,114,48,0,0, + 0,114,118,0,0,0,114,133,0,0,0,114,158,0,0,0, + 114,154,0,0,0,41,14,114,104,0,0,0,114,123,0,0, + 0,114,177,0,0,0,90,12,105,115,95,110,97,109,101,115, + 112,97,99,101,90,11,116,97,105,108,95,109,111,100,117,108, + 101,114,130,0,0,0,90,5,99,97,99,104,101,90,12,99, + 97,99,104,101,95,109,111,100,117,108,101,90,9,98,97,115, + 101,95,112,97,116,104,114,221,0,0,0,114,163,0,0,0, + 90,13,105,110,105,116,95,102,105,108,101,110,97,109,101,90, + 9,102,117,108,108,95,112,97,116,104,114,162,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,6,0,0,0,114,178, + 0,0,0,210,4,0,0,115,70,0,0,0,0,5,4,1, + 14,1,2,1,24,1,14,1,10,1,10,1,8,1,6,2, + 6,1,6,1,10,2,6,1,4,2,8,1,12,1,16,1, + 8,1,10,1,8,1,24,4,8,2,16,1,16,1,16,1, + 12,1,8,1,10,1,12,1,6,1,12,1,12,1,8,1, + 4,1,122,20,70,105,108,101,70,105,110,100,101,114,46,102, + 105,110,100,95,115,112,101,99,99,1,0,0,0,0,0,0, + 0,9,0,0,0,14,0,0,0,67,0,0,0,115,194,0, + 0,0,124,0,106,0,125,1,121,22,116,1,160,2,124,1, + 112,22,116,1,160,3,161,0,161,1,125,2,87,0,110,30, + 4,0,116,4,116,5,116,6,102,3,107,10,114,58,1,0, + 1,0,1,0,103,0,125,2,89,0,110,2,88,0,116,7, + 106,8,160,9,100,1,161,1,115,84,116,10,124,2,131,1, + 124,0,95,11,110,78,116,10,131,0,125,3,120,64,124,2, + 68,0,93,56,125,4,124,4,160,12,100,2,161,1,92,3, + 125,5,125,6,125,7,124,6,114,138,100,3,160,13,124,5, + 124,7,160,14,161,0,161,2,125,8,110,4,124,5,125,8, + 124,3,160,15,124,8,161,1,1,0,113,96,87,0,124,3, + 124,0,95,11,116,7,106,8,160,9,116,16,161,1,114,190, + 100,4,100,5,132,0,124,2,68,0,131,1,124,0,95,17, + 100,6,83,0,41,7,122,68,70,105,108,108,32,116,104,101, + 32,99,97,99,104,101,32,111,102,32,112,111,116,101,110,116, + 105,97,108,32,109,111,100,117,108,101,115,32,97,110,100,32, + 112,97,99,107,97,103,101,115,32,102,111,114,32,116,104,105, + 115,32,100,105,114,101,99,116,111,114,121,46,114,0,0,0, + 0,114,61,0,0,0,122,5,123,125,46,123,125,99,1,0, + 0,0,0,0,0,0,2,0,0,0,4,0,0,0,83,0, + 0,0,115,20,0,0,0,104,0,124,0,93,12,125,1,124, + 1,160,0,161,0,146,2,113,4,83,0,114,4,0,0,0, + 41,1,114,92,0,0,0,41,2,114,24,0,0,0,90,2, + 102,110,114,4,0,0,0,114,4,0,0,0,114,6,0,0, + 0,250,9,60,115,101,116,99,111,109,112,62,31,5,0,0, + 115,2,0,0,0,6,0,122,41,70,105,108,101,70,105,110, + 100,101,114,46,95,102,105,108,108,95,99,97,99,104,101,46, + 60,108,111,99,97,108,115,62,46,60,115,101,116,99,111,109, + 112,62,78,41,18,114,37,0,0,0,114,3,0,0,0,90, + 7,108,105,115,116,100,105,114,114,47,0,0,0,114,254,0, + 0,0,218,15,80,101,114,109,105,115,115,105,111,110,69,114, + 114,111,114,218,18,78,111,116,65,68,105,114,101,99,116,111, + 114,121,69,114,114,111,114,114,8,0,0,0,114,9,0,0, + 0,114,10,0,0,0,114,7,1,0,0,114,8,1,0,0, + 114,87,0,0,0,114,50,0,0,0,114,92,0,0,0,218, + 3,97,100,100,114,11,0,0,0,114,9,1,0,0,41,9, + 114,104,0,0,0,114,37,0,0,0,90,8,99,111,110,116, + 101,110,116,115,90,21,108,111,119,101,114,95,115,117,102,102, + 105,120,95,99,111,110,116,101,110,116,115,114,243,0,0,0, + 114,102,0,0,0,114,233,0,0,0,114,221,0,0,0,90, + 8,110,101,119,95,110,97,109,101,114,4,0,0,0,114,4, + 0,0,0,114,6,0,0,0,114,11,1,0,0,2,5,0, + 0,115,34,0,0,0,0,2,6,1,2,1,22,1,20,3, + 10,3,12,1,12,7,6,1,10,1,16,1,4,1,18,2, + 4,1,14,1,6,1,12,1,122,22,70,105,108,101,70,105, + 110,100,101,114,46,95,102,105,108,108,95,99,97,99,104,101, + 99,1,0,0,0,0,0,0,0,3,0,0,0,3,0,0, + 0,7,0,0,0,115,18,0,0,0,135,0,135,1,102,2, + 100,1,100,2,132,8,125,2,124,2,83,0,41,3,97,20, + 1,0,0,65,32,99,108,97,115,115,32,109,101,116,104,111, + 100,32,119,104,105,99,104,32,114,101,116,117,114,110,115,32, + 97,32,99,108,111,115,117,114,101,32,116,111,32,117,115,101, + 32,111,110,32,115,121,115,46,112,97,116,104,95,104,111,111, + 107,10,32,32,32,32,32,32,32,32,119,104,105,99,104,32, + 119,105,108,108,32,114,101,116,117,114,110,32,97,110,32,105, + 110,115,116,97,110,99,101,32,117,115,105,110,103,32,116,104, + 101,32,115,112,101,99,105,102,105,101,100,32,108,111,97,100, + 101,114,115,32,97,110,100,32,116,104,101,32,112,97,116,104, + 10,32,32,32,32,32,32,32,32,99,97,108,108,101,100,32, + 111,110,32,116,104,101,32,99,108,111,115,117,114,101,46,10, + 10,32,32,32,32,32,32,32,32,73,102,32,116,104,101,32, + 112,97,116,104,32,99,97,108,108,101,100,32,111,110,32,116, + 104,101,32,99,108,111,115,117,114,101,32,105,115,32,110,111, + 116,32,97,32,100,105,114,101,99,116,111,114,121,44,32,73, + 109,112,111,114,116,69,114,114,111,114,32,105,115,10,32,32, + 32,32,32,32,32,32,114,97,105,115,101,100,46,10,10,32, + 32,32,32,32,32,32,32,99,1,0,0,0,0,0,0,0, + 1,0,0,0,4,0,0,0,19,0,0,0,115,34,0,0, + 0,116,0,124,0,131,1,115,20,116,1,100,1,124,0,100, + 2,141,2,130,1,136,0,124,0,102,1,136,1,158,2,142, + 0,83,0,41,3,122,45,80,97,116,104,32,104,111,111,107, + 32,102,111,114,32,105,109,112,111,114,116,108,105,98,46,109, + 97,99,104,105,110,101,114,121,46,70,105,108,101,70,105,110, + 100,101,114,46,122,30,111,110,108,121,32,100,105,114,101,99, + 116,111,114,105,101,115,32,97,114,101,32,115,117,112,112,111, + 114,116,101,100,41,1,114,37,0,0,0,41,2,114,48,0, + 0,0,114,103,0,0,0,41,1,114,37,0,0,0,41,2, + 114,168,0,0,0,114,10,1,0,0,114,4,0,0,0,114, + 6,0,0,0,218,24,112,97,116,104,95,104,111,111,107,95, + 102,111,114,95,70,105,108,101,70,105,110,100,101,114,43,5, + 0,0,115,6,0,0,0,0,2,8,1,12,1,122,54,70, + 105,108,101,70,105,110,100,101,114,46,112,97,116,104,95,104, + 111,111,107,46,60,108,111,99,97,108,115,62,46,112,97,116, + 104,95,104,111,111,107,95,102,111,114,95,70,105,108,101,70, + 105,110,100,101,114,114,4,0,0,0,41,3,114,168,0,0, + 0,114,10,1,0,0,114,16,1,0,0,114,4,0,0,0, + 41,2,114,168,0,0,0,114,10,1,0,0,114,6,0,0, + 0,218,9,112,97,116,104,95,104,111,111,107,33,5,0,0, + 115,4,0,0,0,0,10,14,6,122,20,70,105,108,101,70, + 105,110,100,101,114,46,112,97,116,104,95,104,111,111,107,99, + 1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0, + 67,0,0,0,115,12,0,0,0,100,1,160,0,124,0,106, + 1,161,1,83,0,41,2,78,122,16,70,105,108,101,70,105, + 110,100,101,114,40,123,33,114,125,41,41,2,114,50,0,0, + 0,114,37,0,0,0,41,1,114,104,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,6,0,0,0,114,242,0,0, + 0,51,5,0,0,115,2,0,0,0,0,1,122,19,70,105, + 108,101,70,105,110,100,101,114,46,95,95,114,101,112,114,95, + 95,41,1,78,41,15,114,109,0,0,0,114,108,0,0,0, + 114,110,0,0,0,114,111,0,0,0,114,182,0,0,0,114, + 248,0,0,0,114,127,0,0,0,114,179,0,0,0,114,121, + 0,0,0,114,3,1,0,0,114,178,0,0,0,114,11,1, + 0,0,114,180,0,0,0,114,17,1,0,0,114,242,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,6,0,0,0,114,4,1,0,0,164,4,0,0,115,18, + 0,0,0,12,9,8,14,8,4,4,2,8,12,8,5,10, + 48,8,31,12,18,114,4,1,0,0,99,4,0,0,0,0, + 0,0,0,6,0,0,0,11,0,0,0,67,0,0,0,115, + 146,0,0,0,124,0,160,0,100,1,161,1,125,4,124,0, + 160,0,100,2,161,1,125,5,124,4,115,66,124,5,114,36, + 124,5,106,1,125,4,110,30,124,2,124,3,107,2,114,56, + 116,2,124,1,124,2,131,2,125,4,110,10,116,3,124,1, + 124,2,131,2,125,4,124,5,115,84,116,4,124,1,124,2, + 124,4,100,3,141,3,125,5,121,36,124,5,124,0,100,2, + 60,0,124,4,124,0,100,1,60,0,124,2,124,0,100,4, + 60,0,124,3,124,0,100,5,60,0,87,0,110,20,4,0, + 116,5,107,10,114,140,1,0,1,0,1,0,89,0,110,2, + 88,0,100,0,83,0,41,6,78,218,10,95,95,108,111,97, + 100,101,114,95,95,218,8,95,95,115,112,101,99,95,95,41, + 1,114,124,0,0,0,90,8,95,95,102,105,108,101,95,95, + 90,10,95,95,99,97,99,104,101,100,95,95,41,6,218,3, + 103,101,116,114,124,0,0,0,114,219,0,0,0,114,214,0, + 0,0,114,165,0,0,0,218,9,69,120,99,101,112,116,105, + 111,110,41,6,90,2,110,115,114,102,0,0,0,90,8,112, + 97,116,104,110,97,109,101,90,9,99,112,97,116,104,110,97, + 109,101,114,124,0,0,0,114,162,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,6,0,0,0,218,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,57,5,0,0,115, + 34,0,0,0,0,2,10,1,10,1,4,1,4,1,8,1, + 8,1,12,2,10,1,4,1,14,1,2,1,8,1,8,1, + 8,1,12,1,14,2,114,22,1,0,0,99,0,0,0,0, + 0,0,0,0,3,0,0,0,3,0,0,0,67,0,0,0, + 115,38,0,0,0,116,0,116,1,160,2,161,0,102,2,125, + 0,116,3,116,4,102,2,125,1,116,5,116,6,102,2,125, + 2,124,0,124,1,124,2,103,3,83,0,41,1,122,95,82, + 101,116,117,114,110,115,32,97,32,108,105,115,116,32,111,102, + 32,102,105,108,101,45,98,97,115,101,100,32,109,111,100,117, + 108,101,32,108,111,97,100,101,114,115,46,10,10,32,32,32, + 32,69,97,99,104,32,105,116,101,109,32,105,115,32,97,32, + 116,117,112,108,101,32,40,108,111,97,100,101,114,44,32,115, + 117,102,102,105,120,101,115,41,46,10,32,32,32,32,41,7, + 114,220,0,0,0,114,143,0,0,0,218,18,101,120,116,101, + 110,115,105,111,110,95,115,117,102,102,105,120,101,115,114,214, + 0,0,0,114,88,0,0,0,114,219,0,0,0,114,78,0, + 0,0,41,3,90,10,101,120,116,101,110,115,105,111,110,115, + 90,6,115,111,117,114,99,101,90,8,98,121,116,101,99,111, + 100,101,114,4,0,0,0,114,4,0,0,0,114,6,0,0, + 0,114,159,0,0,0,80,5,0,0,115,8,0,0,0,0, + 5,12,1,8,1,8,1,114,159,0,0,0,99,1,0,0, + 0,0,0,0,0,12,0,0,0,12,0,0,0,67,0,0, + 0,115,188,1,0,0,124,0,97,0,116,0,106,1,97,1, + 116,0,106,2,97,2,116,1,106,3,116,4,25,0,125,1, + 120,56,100,26,68,0,93,48,125,2,124,2,116,1,106,3, + 107,7,114,58,116,0,160,5,124,2,161,1,125,3,110,10, + 116,1,106,3,124,2,25,0,125,3,116,6,124,1,124,2, + 124,3,131,3,1,0,113,32,87,0,100,5,100,6,103,1, + 102,2,100,7,100,8,100,6,103,2,102,2,102,2,125,4, + 120,118,124,4,68,0,93,102,92,2,125,5,125,6,116,7, + 100,9,100,10,132,0,124,6,68,0,131,1,131,1,115,142, + 116,8,130,1,124,6,100,11,25,0,125,7,124,5,116,1, + 106,3,107,6,114,174,116,1,106,3,124,5,25,0,125,8, + 80,0,113,112,121,16,116,0,160,5,124,5,161,1,125,8, + 80,0,87,0,113,112,4,0,116,9,107,10,114,212,1,0, + 1,0,1,0,119,112,89,0,113,112,88,0,113,112,87,0, + 116,9,100,12,131,1,130,1,116,6,124,1,100,13,124,8, + 131,3,1,0,116,6,124,1,100,14,124,7,131,3,1,0, + 116,6,124,1,100,15,100,16,160,10,124,6,161,1,131,3, + 1,0,121,14,116,0,160,5,100,17,161,1,125,9,87,0, + 110,26,4,0,116,9,107,10,144,1,114,52,1,0,1,0, + 1,0,100,18,125,9,89,0,110,2,88,0,116,6,124,1, + 100,17,124,9,131,3,1,0,116,0,160,5,100,19,161,1, + 125,10,116,6,124,1,100,19,124,10,131,3,1,0,124,5, + 100,7,107,2,144,1,114,120,116,0,160,5,100,20,161,1, + 125,11,116,6,124,1,100,21,124,11,131,3,1,0,116,6, + 124,1,100,22,116,11,131,0,131,3,1,0,116,12,160,13, + 116,2,160,14,161,0,161,1,1,0,124,5,100,7,107,2, + 144,1,114,184,116,15,160,16,100,23,161,1,1,0,100,24, + 116,12,107,6,144,1,114,184,100,25,116,17,95,18,100,18, + 83,0,41,27,122,205,83,101,116,117,112,32,116,104,101,32, + 112,97,116,104,45,98,97,115,101,100,32,105,109,112,111,114, + 116,101,114,115,32,102,111,114,32,105,109,112,111,114,116,108, + 105,98,32,98,121,32,105,109,112,111,114,116,105,110,103,32, + 110,101,101,100,101,100,10,32,32,32,32,98,117,105,108,116, + 45,105,110,32,109,111,100,117,108,101,115,32,97,110,100,32, + 105,110,106,101,99,116,105,110,103,32,116,104,101,109,32,105, + 110,116,111,32,116,104,101,32,103,108,111,98,97,108,32,110, + 97,109,101,115,112,97,99,101,46,10,10,32,32,32,32,79, + 116,104,101,114,32,99,111,109,112,111,110,101,110,116,115,32, + 97,114,101,32,101,120,116,114,97,99,116,101,100,32,102,114, + 111,109,32,116,104,101,32,99,111,114,101,32,98,111,111,116, + 115,116,114,97,112,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,114,52,0,0,0,114,63,0,0,0,218,8,98, + 117,105,108,116,105,110,115,114,140,0,0,0,90,5,112,111, + 115,105,120,250,1,47,90,2,110,116,250,1,92,99,1,0, + 0,0,0,0,0,0,2,0,0,0,3,0,0,0,115,0, + 0,0,115,26,0,0,0,124,0,93,18,125,1,116,0,124, + 1,131,1,100,0,107,2,86,0,1,0,113,2,100,1,83, + 0,41,2,114,31,0,0,0,78,41,1,114,33,0,0,0, + 41,2,114,24,0,0,0,114,81,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,6,0,0,0,114,223,0,0,0, + 116,5,0,0,115,2,0,0,0,4,0,122,25,95,115,101, + 116,117,112,46,60,108,111,99,97,108,115,62,46,60,103,101, + 110,101,120,112,114,62,114,62,0,0,0,122,30,105,109,112, + 111,114,116,108,105,98,32,114,101,113,117,105,114,101,115,32, + 112,111,115,105,120,32,111,114,32,110,116,114,3,0,0,0, + 114,27,0,0,0,114,23,0,0,0,114,32,0,0,0,90, + 7,95,116,104,114,101,97,100,78,90,8,95,119,101,97,107, + 114,101,102,90,6,119,105,110,114,101,103,114,167,0,0,0, + 114,7,0,0,0,122,4,46,112,121,119,122,6,95,100,46, + 112,121,100,84,41,4,114,52,0,0,0,114,63,0,0,0, + 114,24,1,0,0,114,140,0,0,0,41,19,114,118,0,0, + 0,114,8,0,0,0,114,143,0,0,0,114,235,0,0,0, + 114,109,0,0,0,90,18,95,98,117,105,108,116,105,110,95, + 102,114,111,109,95,110,97,109,101,114,113,0,0,0,218,3, + 97,108,108,218,14,65,115,115,101,114,116,105,111,110,69,114, + 114,111,114,114,103,0,0,0,114,28,0,0,0,114,13,0, + 0,0,114,225,0,0,0,114,147,0,0,0,114,23,1,0, + 0,114,88,0,0,0,114,161,0,0,0,114,166,0,0,0, + 114,170,0,0,0,41,12,218,17,95,98,111,111,116,115,116, + 114,97,112,95,109,111,100,117,108,101,90,11,115,101,108,102, + 95,109,111,100,117,108,101,90,12,98,117,105,108,116,105,110, + 95,110,97,109,101,90,14,98,117,105,108,116,105,110,95,109, + 111,100,117,108,101,90,10,111,115,95,100,101,116,97,105,108, + 115,90,10,98,117,105,108,116,105,110,95,111,115,114,23,0, + 0,0,114,27,0,0,0,90,9,111,115,95,109,111,100,117, + 108,101,90,13,116,104,114,101,97,100,95,109,111,100,117,108, + 101,90,14,119,101,97,107,114,101,102,95,109,111,100,117,108, + 101,90,13,119,105,110,114,101,103,95,109,111,100,117,108,101, + 114,4,0,0,0,114,4,0,0,0,114,6,0,0,0,218, + 6,95,115,101,116,117,112,91,5,0,0,115,82,0,0,0, + 0,8,4,1,6,1,6,3,10,1,10,1,10,1,12,2, + 10,1,16,3,22,1,14,2,22,1,8,1,10,1,10,1, + 4,2,2,1,10,1,6,1,14,1,12,2,8,1,12,1, + 12,1,18,3,2,1,14,1,16,2,10,1,12,3,10,1, + 12,3,10,1,10,1,12,3,14,1,14,1,10,1,10,1, + 10,1,114,30,1,0,0,99,1,0,0,0,0,0,0,0, + 2,0,0,0,4,0,0,0,67,0,0,0,115,50,0,0, + 0,116,0,124,0,131,1,1,0,116,1,131,0,125,1,116, + 2,106,3,160,4,116,5,106,6,124,1,142,0,103,1,161, + 1,1,0,116,2,106,7,160,8,116,9,161,1,1,0,100, + 1,83,0,41,2,122,41,73,110,115,116,97,108,108,32,116, + 104,101,32,112,97,116,104,45,98,97,115,101,100,32,105,109, + 112,111,114,116,32,99,111,109,112,111,110,101,110,116,115,46, + 78,41,10,114,30,1,0,0,114,159,0,0,0,114,8,0, + 0,0,114,252,0,0,0,114,147,0,0,0,114,4,1,0, + 0,114,17,1,0,0,218,9,109,101,116,97,95,112,97,116, + 104,114,161,0,0,0,114,247,0,0,0,41,2,114,29,1, + 0,0,90,17,115,117,112,112,111,114,116,101,100,95,108,111, + 97,100,101,114,115,114,4,0,0,0,114,4,0,0,0,114, + 6,0,0,0,218,8,95,105,110,115,116,97,108,108,159,5, + 0,0,115,8,0,0,0,0,2,8,1,6,1,20,1,114, + 32,1,0,0,41,1,114,0,0,0,0,41,2,114,1,0, + 0,0,114,2,0,0,0,41,1,114,49,0,0,0,41,1, + 78,41,3,78,78,78,41,3,78,78,78,41,2,114,62,0, + 0,0,114,62,0,0,0,41,1,78,41,1,78,41,58,114, + 111,0,0,0,114,12,0,0,0,90,37,95,67,65,83,69, + 95,73,78,83,69,78,83,73,84,73,86,69,95,80,76,65, + 84,70,79,82,77,83,95,66,89,84,69,83,95,75,69,89, + 114,11,0,0,0,114,13,0,0,0,114,19,0,0,0,114, + 21,0,0,0,114,30,0,0,0,114,40,0,0,0,114,41, + 0,0,0,114,45,0,0,0,114,46,0,0,0,114,48,0, + 0,0,114,58,0,0,0,218,4,116,121,112,101,218,8,95, + 95,99,111,100,101,95,95,114,142,0,0,0,114,17,0,0, + 0,114,132,0,0,0,114,16,0,0,0,114,20,0,0,0, + 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, + 66,69,82,114,77,0,0,0,114,76,0,0,0,114,88,0, + 0,0,114,78,0,0,0,90,23,68,69,66,85,71,95,66, + 89,84,69,67,79,68,69,95,83,85,70,70,73,88,69,83, + 90,27,79,80,84,73,77,73,90,69,68,95,66,89,84,69, + 67,79,68,69,95,83,85,70,70,73,88,69,83,114,83,0, + 0,0,114,89,0,0,0,114,95,0,0,0,114,99,0,0, + 0,114,101,0,0,0,114,120,0,0,0,114,127,0,0,0, + 114,139,0,0,0,114,145,0,0,0,114,148,0,0,0,114, + 153,0,0,0,218,6,111,98,106,101,99,116,114,160,0,0, + 0,114,165,0,0,0,114,166,0,0,0,114,181,0,0,0, + 114,191,0,0,0,114,206,0,0,0,114,214,0,0,0,114, + 219,0,0,0,114,225,0,0,0,114,220,0,0,0,114,226, + 0,0,0,114,245,0,0,0,114,247,0,0,0,114,4,1, + 0,0,114,22,1,0,0,114,159,0,0,0,114,30,1,0, + 0,114,32,1,0,0,114,4,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,6,0,0,0,218,8,60,109,111,100, + 117,108,101,62,24,0,0,0,115,108,0,0,0,4,0,4, + 1,4,1,2,1,6,3,8,17,8,5,8,5,8,6,8, + 12,8,10,8,9,8,5,8,7,10,22,10,124,16,1,12, + 2,4,1,4,2,6,2,6,2,8,2,16,45,8,34,8, + 19,8,12,8,12,8,28,8,17,10,55,10,12,10,10,8, + 14,6,3,4,1,14,67,14,64,14,29,16,110,14,41,18, + 45,18,16,4,3,18,53,14,60,14,42,14,127,0,5,14, + 127,0,22,10,23,8,11,8,68, }; diff --git a/Python/peephole.c b/Python/peephole.c index dd8f3e4807fce5..1bee7102d9cc8a 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -492,16 +492,6 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, in_consts = 0; switch (opcode) { - /* Replace UNARY_NOT POP_JUMP_IF_FALSE - with POP_JUMP_IF_TRUE */ - case UNARY_NOT: - if (nextop != POP_JUMP_IF_FALSE - || !ISBASICBLOCK(blocks, op_start, i + 1)) - break; - fill_nops(codestr, op_start, i + 1); - codestr[nexti] = PACKOPARG(POP_JUMP_IF_TRUE, _Py_OPARG(codestr[nexti])); - break; - /* not a is b --> a is not b not a in b --> a not in b not a is not b --> a is b @@ -626,10 +616,10 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, result of the first test implies the success of a similar test or the failure of the opposite test. Arises in code like: - "if a and b:" - "if a or b:" "a and b or c" "(a and b) and c" + "(a or b) or c" + "(a or b) and c" x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_FALSE_OR_POP z --> x:JUMP_IF_FALSE_OR_POP z x:JUMP_IF_FALSE_OR_POP y y:JUMP_IF_TRUE_OR_POP z diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index ec26824f839eee..b7c98225641176 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -178,6 +178,7 @@ Py_SetStandardStreamEncoding(const char *encoding, const char *errors) return 0; } + /* Global initializations. Can be undone by Py_FinalizeEx(). Don't call this twice without an intervening Py_FinalizeEx() call. When initializations fail, a fatal error is issued and the function does @@ -330,6 +331,159 @@ initexternalimport(PyInterpreterState *interp) Py_DECREF(value); } +/* Helper functions to better handle the legacy C locale + * + * The legacy C locale assumes ASCII as the default text encoding, which + * causes problems not only for the CPython runtime, but also other + * components like GNU readline. + * + * Accordingly, when the CLI detects it, it attempts to coerce it to a + * more capable UTF-8 based alternative as follows: + * + * if (_Py_LegacyLocaleDetected()) { + * _Py_CoerceLegacyLocale(); + * } + * + * See the documentation of the PYTHONCOERCECLOCALE setting for more details. + * + * Locale coercion also impacts the default error handler for the standard + * streams: while the usual default is "strict", the default for the legacy + * C locale and for any of the coercion target locales is "surrogateescape". + */ + +int +_Py_LegacyLocaleDetected(void) +{ +#ifndef MS_WINDOWS + /* On non-Windows systems, the C locale is considered a legacy locale */ + const char *ctype_loc = setlocale(LC_CTYPE, NULL); + return ctype_loc != NULL && strcmp(ctype_loc, "C") == 0; +#else + /* Windows uses code pages instead of locales, so no locale is legacy */ + return 0; +#endif +} + +typedef struct _CandidateLocale { + const char *locale_name; /* The locale to try as a coercion target */ +} _LocaleCoercionTarget; + +static _LocaleCoercionTarget _TARGET_LOCALES[] = { + {"C.UTF-8"}, + {"C.utf8"}, + {"UTF-8"}, + {NULL} +}; + +static char * +get_default_standard_stream_error_handler(void) +{ + const char *ctype_loc = setlocale(LC_CTYPE, NULL); + if (ctype_loc != NULL) { + /* "surrogateescape" is the default in the legacy C locale */ + if (strcmp(ctype_loc, "C") == 0) { + return "surrogateescape"; + } + +#ifdef PY_COERCE_C_LOCALE + /* "surrogateescape" is the default in locale coercion target locales */ + const _LocaleCoercionTarget *target = NULL; + for (target = _TARGET_LOCALES; target->locale_name; target++) { + if (strcmp(ctype_loc, target->locale_name) == 0) { + return "surrogateescape"; + } + } +#endif + } + + /* Otherwise return NULL to request the typical default error handler */ + return NULL; +} + +#ifdef PY_COERCE_C_LOCALE +static const char *_C_LOCALE_COERCION_WARNING = + "Python detected LC_CTYPE=C: LC_CTYPE coerced to %.20s (set another locale " + "or PYTHONCOERCECLOCALE=0 to disable this locale coercion behavior).\n"; + +static void +_coerce_default_locale_settings(const _LocaleCoercionTarget *target) +{ + const char *newloc = target->locale_name; + + /* Reset locale back to currently configured defaults */ + setlocale(LC_ALL, ""); + + /* Set the relevant locale environment variable */ + if (setenv("LC_CTYPE", newloc, 1)) { + fprintf(stderr, + "Error setting LC_CTYPE, skipping C locale coercion\n"); + return; + } + fprintf(stderr, _C_LOCALE_COERCION_WARNING, newloc); + + /* Reconfigure with the overridden environment variables */ + setlocale(LC_ALL, ""); +} +#endif + +void +_Py_CoerceLegacyLocale(void) +{ +#ifdef PY_COERCE_C_LOCALE + /* We ignore the Python -E and -I flags here, as the CLI needs to sort out + * the locale settings *before* we try to do anything with the command + * line arguments. For cross-platform debugging purposes, we also need + * to give end users a way to force even scripts that are otherwise + * isolated from their environment to use the legacy ASCII-centric C + * locale. + * + * Ignoring -E and -I is safe from a security perspective, as we only use + * the setting to turn *off* the implicit locale coercion, and anyone with + * access to the process environment already has the ability to set + * `LC_ALL=C` to override the C level locale settings anyway. + */ + const char *coerce_c_locale = getenv("PYTHONCOERCECLOCALE"); + if (coerce_c_locale == NULL || strncmp(coerce_c_locale, "0", 2) != 0) { + /* PYTHONCOERCECLOCALE is not set, or is set to something other than "0" */ + const char *locale_override = getenv("LC_ALL"); + if (locale_override == NULL || *locale_override == '\0') { + /* LC_ALL is also not set (or is set to an empty string) */ + const _LocaleCoercionTarget *target = NULL; + for (target = _TARGET_LOCALES; target->locale_name; target++) { + const char *new_locale = setlocale(LC_CTYPE, + target->locale_name); + if (new_locale != NULL) { + /* Successfully configured locale, so make it the default */ + _coerce_default_locale_settings(target); + return; + } + } + } + } + /* No C locale warning here, as Py_Initialize will emit one later */ +#endif +} + + +#ifdef PY_WARN_ON_C_LOCALE +static const char *_C_LOCALE_WARNING = + "Python runtime initialized with LC_CTYPE=C (a locale with default ASCII " + "encoding), which may cause Unicode compatibility problems. Using C.UTF-8, " + "C.utf8, or UTF-8 (if available) as alternative Unicode-compatible " + "locales is recommended.\n"; + +static void +_emit_stderr_warning_for_c_locale(void) +{ + const char *coerce_c_locale = getenv("PYTHONCOERCECLOCALE"); + if (coerce_c_locale == NULL || strncmp(coerce_c_locale, "0", 2) != 0) { + if (_Py_LegacyLocaleDetected()) { + fprintf(stderr, "%s", _C_LOCALE_WARNING); + } + } +} +#endif + /* Global initializations. Can be undone by Py_Finalize(). Don't call this twice without an intervening Py_Finalize() call. @@ -396,11 +550,21 @@ void _Py_InitializeCore(const _PyCoreConfig *config) */ _Py_Finalizing = NULL; -#ifdef HAVE_SETLOCALE +#ifdef __ANDROID__ + /* Passing "" to setlocale() on Android requests the C locale rather + * than checking environment variables, so request C.UTF-8 explicitly + */ + setlocale(LC_CTYPE, "C.UTF-8"); +#else +#ifndef MS_WINDOWS /* Set up the LC_CTYPE locale, so we can obtain the locale's charset without having to switch locales. */ setlocale(LC_CTYPE, ""); +#ifdef PY_WARN_ON_C_LOCALE + _emit_stderr_warning_for_c_locale(); +#endif +#endif #endif if ((p = Py_GETENV("PYTHONDEBUG")) && *p != '\0') @@ -1457,12 +1621,8 @@ initstdio(void) } } if (!errors && !(pythonioencoding && *pythonioencoding)) { - /* When the LC_CTYPE locale is the POSIX locale ("C locale"), - stdin and stdout use the surrogateescape error handler by - default, instead of the strict error handler. */ - char *loc = setlocale(LC_CTYPE, NULL); - if (loc != NULL && strcmp(loc, "C") == 0) - errors = "surrogateescape"; + /* Choose the default error handler based on the current locale */ + errors = get_default_standard_stream_error_handler(); } } diff --git a/Tools/buildbot/build.bat b/Tools/buildbot/build.bat index 5e840cc7eaca84..9af511a81dbd8e 100644 --- a/Tools/buildbot/build.bat +++ b/Tools/buildbot/build.bat @@ -1,17 +1,17 @@ -@rem Used by the buildbot "compile" step. - -@rem Clean up -call "%~dp0clean.bat" %* - -@rem If you need the buildbots to start fresh (such as when upgrading to -@rem a new version of an external library, especially Tcl/Tk): -@rem 1) uncomment the following line: - -@rem call "%~dp0..\..\PCbuild\get_externals.bat" --clean-only - -@rem 2) commit and push -@rem 3) wait for all Windows bots to start a build with that changeset -@rem 4) re-comment, commit and push again - -@rem Do the build -call "%~dp0..\..\PCbuild\build.bat" -e -d -k -v %* +@rem Used by the buildbot "compile" step. + +@rem Clean up +call "%~dp0clean.bat" %* + +@rem If you need the buildbots to start fresh (such as when upgrading to +@rem a new version of an external library, especially Tcl/Tk): +@rem 1) uncomment the following line: + +@rem call "%~dp0..\..\PCbuild\get_externals.bat" --clean-only + +@rem 2) commit and push +@rem 3) wait for all Windows bots to start a build with that changeset +@rem 4) re-comment, commit and push again + +@rem Do the build +call "%~dp0..\..\PCbuild\build.bat" -e -d -k -v %* diff --git a/Tools/buildbot/buildmsi.bat b/Tools/buildbot/buildmsi.bat index e3c2dbd73d00df..6804d794799509 100644 --- a/Tools/buildbot/buildmsi.bat +++ b/Tools/buildbot/buildmsi.bat @@ -1,9 +1,9 @@ -@rem Used by the buildbot "buildmsi" step. -setlocal - -pushd - -@rem build both snapshot MSIs -call "%~dp0..\msi\build.bat" -x86 -x64 - +@rem Used by the buildbot "buildmsi" step. +setlocal + +pushd + +@rem build both snapshot MSIs +call "%~dp0..\msi\build.bat" -x86 -x64 + popd \ No newline at end of file diff --git a/Tools/buildbot/clean.bat b/Tools/buildbot/clean.bat index 13e667991b6ee9..fe252a916b1c24 100644 --- a/Tools/buildbot/clean.bat +++ b/Tools/buildbot/clean.bat @@ -1,17 +1,17 @@ -@echo off -rem Used by the buildbot "clean" step. - -setlocal -set root=%~dp0..\.. -set pcbuild=%root%\PCbuild - -echo Deleting build -call "%pcbuild%\build.bat" -t Clean -k %* -call "%pcbuild%\build.bat" -t Clean -k -d %* - -echo Deleting .pyc/.pyo files ... -del /s "%root%\Lib\*.pyc" "%root%\Lib\*.pyo" - -echo Deleting test leftovers ... -rmdir /s /q "%root%\build" -del /s "%pcbuild%\python*.zip" +@echo off +rem Used by the buildbot "clean" step. + +setlocal +set root=%~dp0..\.. +set pcbuild=%root%\PCbuild + +echo Deleting build +call "%pcbuild%\build.bat" -t Clean -k %* +call "%pcbuild%\build.bat" -t Clean -k -d %* + +echo Deleting .pyc/.pyo files ... +del /s "%root%\Lib\*.pyc" "%root%\Lib\*.pyo" + +echo Deleting test leftovers ... +rmdir /s /q "%root%\build" +del /s "%pcbuild%\python*.zip" diff --git a/Tools/buildbot/test.bat b/Tools/buildbot/test.bat index a32d38b5ec8bf5..0b3a3091c1e46e 100644 --- a/Tools/buildbot/test.bat +++ b/Tools/buildbot/test.bat @@ -1,19 +1,19 @@ -@echo off -rem Used by the buildbot "test" step. -setlocal - -set here=%~dp0 -set rt_opts=-q -d -set regrtest_args=-j1 - -:CheckOpts -if "%1"=="-x64" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts -if "%1"=="-d" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts -if "%1"=="-O" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts -if "%1"=="-q" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts -if "%1"=="+d" (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts -if "%1"=="+q" (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts -if NOT "%1"=="" (set regrtest_args=%regrtest_args% %1) & shift & goto CheckOpts - -echo on -call "%here%..\..\PCbuild\rt.bat" %rt_opts% -uall -rwW --slowest --timeout=1200 %regrtest_args% +@echo off +rem Used by the buildbot "test" step. +setlocal + +set here=%~dp0 +set rt_opts=-q -d +set regrtest_args=-j1 + +:CheckOpts +if "%1"=="-x64" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts +if "%1"=="-d" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts +if "%1"=="-O" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts +if "%1"=="-q" (set rt_opts=%rt_opts% %1) & shift & goto CheckOpts +if "%1"=="+d" (set rt_opts=%rt_opts:-d=%) & shift & goto CheckOpts +if "%1"=="+q" (set rt_opts=%rt_opts:-q=%) & shift & goto CheckOpts +if NOT "%1"=="" (set regrtest_args=%regrtest_args% %1) & shift & goto CheckOpts + +echo on +call "%here%..\..\PCbuild\rt.bat" %rt_opts% -uall -rwW --slowest --timeout=1200 %regrtest_args% diff --git a/Tools/msi/build.bat b/Tools/msi/build.bat index 69f00c0bb43f84..59e0261c6d5236 100644 --- a/Tools/msi/build.bat +++ b/Tools/msi/build.bat @@ -1,79 +1,79 @@ -@echo off -setlocal -set D=%~dp0 -set PCBUILD=%D%..\..\PCBuild\ - -set BUILDX86= -set BUILDX64= -set BUILDDOC= -set BUILDTEST=--test-marker -set BUILDPACK= -set REBUILD= - -:CheckOpts -if "%~1" EQU "-h" goto Help -if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts -if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts -if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts -if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts -if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts -if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts - -if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) - -call "%D%get_externals.bat" - -call "%PCBUILD%env.bat" x86 - -if defined BUILDX86 ( - call "%PCBUILD%build.bat" -d -e %REBUILD% %BUILDTEST% - if errorlevel 1 goto :eof - call "%PCBUILD%build.bat" -e %REBUILD% %BUILDTEST% - if errorlevel 1 goto :eof -) -if defined BUILDX64 ( - call "%PCBUILD%build.bat" -p x64 -d -e %REBUILD% %BUILDTEST% - if errorlevel 1 goto :eof - call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST% - if errorlevel 1 goto :eof -) - -if defined BUILDDOC ( - call "%PCBUILD%..\Doc\make.bat" htmlhelp - if errorlevel 1 goto :eof -) - -rem Build the launcher MSI separately -msbuild "%D%launcher\launcher.wixproj" /p:Platform=x86 - -set BUILD_CMD="%D%bundle\snapshot.wixproj" -if defined BUILDTEST ( - set BUILD_CMD=%BUILD_CMD% /p:UseTestMarker=true -) -if defined BUILDPACK ( - set BUILD_CMD=%BUILD_CMD% /p:Pack=true -) -if defined REBUILD ( - set BUILD_CMD=%BUILD_CMD% /t:Rebuild -) - -if defined BUILDX86 ( - msbuild %BUILD_CMD% - if errorlevel 1 goto :eof -) -if defined BUILDX64 ( - msbuild /p:Platform=x64 %BUILD_CMD% - if errorlevel 1 goto :eof -) - -exit /B 0 - -:Help -echo build.bat [-x86] [-x64] [--doc] [-h] [--no-test-marker] [--pack] [-r] -echo. -echo -x86 Build x86 installers -echo -x64 Build x64 installers -echo --doc Build CHM documentation -echo --no-test-marker Build without test markers -echo --pack Embed core MSIs into installer -echo -r Rebuild rather than incremental build +@echo off +setlocal +set D=%~dp0 +set PCBUILD=%D%..\..\PCBuild\ + +set BUILDX86= +set BUILDX64= +set BUILDDOC= +set BUILDTEST=--test-marker +set BUILDPACK= +set REBUILD= + +:CheckOpts +if "%~1" EQU "-h" goto Help +if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts +if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts +if "%~1" EQU "--doc" (set BUILDDOC=1) && shift && goto CheckOpts +if "%~1" EQU "--no-test-marker" (set BUILDTEST=) && shift && goto CheckOpts +if "%~1" EQU "--pack" (set BUILDPACK=1) && shift && goto CheckOpts +if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts + +if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) + +call "%D%get_externals.bat" + +call "%PCBUILD%env.bat" x86 + +if defined BUILDX86 ( + call "%PCBUILD%build.bat" -d -e %REBUILD% %BUILDTEST% + if errorlevel 1 goto :eof + call "%PCBUILD%build.bat" -e %REBUILD% %BUILDTEST% + if errorlevel 1 goto :eof +) +if defined BUILDX64 ( + call "%PCBUILD%build.bat" -p x64 -d -e %REBUILD% %BUILDTEST% + if errorlevel 1 goto :eof + call "%PCBUILD%build.bat" -p x64 -e %REBUILD% %BUILDTEST% + if errorlevel 1 goto :eof +) + +if defined BUILDDOC ( + call "%PCBUILD%..\Doc\make.bat" htmlhelp + if errorlevel 1 goto :eof +) + +rem Build the launcher MSI separately +msbuild "%D%launcher\launcher.wixproj" /p:Platform=x86 + +set BUILD_CMD="%D%bundle\snapshot.wixproj" +if defined BUILDTEST ( + set BUILD_CMD=%BUILD_CMD% /p:UseTestMarker=true +) +if defined BUILDPACK ( + set BUILD_CMD=%BUILD_CMD% /p:Pack=true +) +if defined REBUILD ( + set BUILD_CMD=%BUILD_CMD% /t:Rebuild +) + +if defined BUILDX86 ( + msbuild %BUILD_CMD% + if errorlevel 1 goto :eof +) +if defined BUILDX64 ( + msbuild /p:Platform=x64 %BUILD_CMD% + if errorlevel 1 goto :eof +) + +exit /B 0 + +:Help +echo build.bat [-x86] [-x64] [--doc] [-h] [--no-test-marker] [--pack] [-r] +echo. +echo -x86 Build x86 installers +echo -x64 Build x64 installers +echo --doc Build CHM documentation +echo --no-test-marker Build without test markers +echo --pack Embed core MSIs into installer +echo -r Rebuild rather than incremental build diff --git a/Tools/msi/buildrelease.bat b/Tools/msi/buildrelease.bat index 4247f77cecc38b..c432c39d443c13 100644 --- a/Tools/msi/buildrelease.bat +++ b/Tools/msi/buildrelease.bat @@ -1,235 +1,235 @@ -@setlocal -@echo off - -rem This script is intended for building official releases of Python. -rem To use it to build alternative releases, you should clone this file -rem and modify the following three URIs. - -rem These two will ensure that your release can be installed -rem alongside an official Python release, by modifying the GUIDs used -rem for all components. -rem -rem The following substitutions will be applied to the release URI: -rem Variable Description Example -rem {arch} architecture amd64, win32 -set RELEASE_URI=http://www.python.org/{arch} - -rem This is the URL that will be used to download installation files. -rem The files available from the default URL *will* conflict with your -rem installer. Trust me, you don't want them, even if it seems like a -rem good idea. -rem -rem The following substitutions will be applied to the download URL: -rem Variable Description Example -rem {version} version number 3.5.0 -rem {arch} architecture amd64, win32 -rem {releasename} release name a1, b2, rc3 (or blank for final) -rem {msi} MSI filename core.msi -set DOWNLOAD_URL=https://www.python.org/ftp/python/{version}/{arch}{releasename}/{msi} - -set D=%~dp0 -set PCBUILD=%D%..\..\PCBuild\ -set EXTERNALS=%D%..\..\externals\windows-installer\ - -set BUILDX86= -set BUILDX64= -set TARGET=Rebuild -set TESTTARGETDIR= -set PGO=-m test -q --pgo -set BUILDNUGET=1 -set BUILDZIP=1 - - -:CheckOpts -if "%1" EQU "-h" goto Help -if "%1" EQU "-c" (set CERTNAME=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--certificate" (set CERTNAME=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-o" (set OUTDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--out" (set OUTDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-D" (set SKIPDOC=1) && shift && goto CheckOpts -if "%1" EQU "--skip-doc" (set SKIPDOC=1) && shift && goto CheckOpts -if "%1" EQU "-B" (set SKIPBUILD=1) && shift && goto CheckOpts -if "%1" EQU "--skip-build" (set SKIPBUILD=1) && shift && goto CheckOpts -if "%1" EQU "--download" (set DOWNLOAD_URL=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--test" (set TESTTARGETDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-b" (set TARGET=Build) && shift && goto CheckOpts -if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts -if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts -if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts -if "%1" EQU "--pgo" (set PGO=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--skip-pgo" (set PGO=) && shift && goto CheckOpts -if "%1" EQU "--skip-nuget" (set BUILDNUGET=) && shift && goto CheckOpts -if "%1" EQU "--skip-zip" (set BUILDZIP=) && shift && goto CheckOpts - -if "%1" NEQ "" echo Invalid option: "%1" && exit /B 1 - -if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) - -if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc" -if not exist "%GIT%" echo Cannot find Git on PATH && exit /B 1 - -call "%D%get_externals.bat" - -:builddoc -if "%SKIPBUILD%" EQU "1" goto skipdoc -if "%SKIPDOC%" EQU "1" goto skipdoc - -if not defined PYTHON where py -q || echo Cannot find py on path and PYTHON is not set. && exit /B 1 -if not defined SPHINXBUILD where sphinx-build -q || echo Cannot find sphinx-build on path and SPHINXBUILD is not set. && exit /B 1 - -call "%D%..\..\doc\make.bat" htmlhelp -if errorlevel 1 goto :eof -:skipdoc - -where dlltool /q && goto skipdlltoolsearch -set _DLLTOOL_PATH= -where /R "%EXTERNALS%\" dlltool > "%TEMP%\dlltool.loc" 2> nul && set /P _DLLTOOL_PATH= < "%TEMP%\dlltool.loc" & del "%TEMP%\dlltool.loc" -if not exist "%_DLLTOOL_PATH%" echo Cannot find binutils on PATH or in external && exit /B 1 -for %%f in (%_DLLTOOL_PATH%) do set PATH=%PATH%;%%~dpf -set _DLLTOOL_PATH= -:skipdlltoolsearch - -if defined BUILDX86 ( - call :build x86 - if errorlevel 1 exit /B -) - -if defined BUILDX64 ( - call :build x64 "%PGO%" - if errorlevel 1 exit /B -) - -if defined TESTTARGETDIR ( - call "%D%testrelease.bat" -t "%TESTTARGETDIR%" -) - -exit /B 0 - -:build -@setlocal -@echo off - -if "%1" EQU "x86" ( - set PGO= - set BUILD=%PCBUILD%win32\ - set BUILD_PLAT=Win32 - set OUTDIR_PLAT=win32 - set OBJDIR_PLAT=x86 -) else ( - set BUILD=%PCBUILD%amd64\ - set PGO=%~2 - set BUILD_PLAT=x64 - set OUTDIR_PLAT=amd64 - set OBJDIR_PLAT=x64 -) - -if exist "%BUILD%en-us" ( - echo Deleting %BUILD%en-us - rmdir /q/s "%BUILD%en-us" - if errorlevel 1 exit /B -) - -if exist "%D%obj\Debug_%OBJDIR_PLAT%" ( - echo Deleting "%D%obj\Debug_%OBJDIR_PLAT%" - rmdir /q/s "%D%obj\Debug_%OBJDIR_PLAT%" - if errorlevel 1 exit /B -) - -if exist "%D%obj\Release_%OBJDIR_PLAT%" ( - echo Deleting "%D%obj\Release_%OBJDIR_PLAT%" - rmdir /q/s "%D%obj\Release_%OBJDIR_PLAT%" - if errorlevel 1 exit /B -) - -if not "%CERTNAME%" EQU "" ( - set CERTOPTS="/p:SigningCertificate=%CERTNAME%" -) else ( - set CERTOPTS= -) -if not "%PGO%" EQU "" ( - set PGOOPTS=--pgo-job "%PGO%" -) else ( - set PGOOPTS= -) -if not "%SKIPBUILD%" EQU "1" ( - @echo call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %PGOOPTS% %CERTOPTS% - @call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %PGOOPTS% %CERTOPTS% - @if errorlevel 1 exit /B - @rem build.bat turns echo back on, so we disable it again - @echo off - - @echo call "%PCBUILD%build.bat" -d -e -p %BUILD_PLAT% -t %TARGET% - @call "%PCBUILD%build.bat" -d -e -p %BUILD_PLAT% -t %TARGET% - @if errorlevel 1 exit /B - @rem build.bat turns echo back on, so we disable it again - @echo off -) - -call "%PCBUILD%env.bat" -if "%OUTDIR_PLAT%" EQU "win32" ( - msbuild "%D%launcher\launcher.wixproj" /p:Platform=x86 %CERTOPTS% /p:ReleaseUri=%RELEASE_URI% - if errorlevel 1 exit /B -) else if not exist "%PCBUILD%win32\en-us\launcher.msi" ( - msbuild "%D%launcher\launcher.wixproj" /p:Platform=x86 %CERTOPTS% /p:ReleaseUri=%RELEASE_URI% - if errorlevel 1 exit /B -) - -set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_URL% /p:DownloadUrlBase=%DOWNLOAD_URL_BASE% /p:ReleaseUri=%RELEASE_URI% -msbuild "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true -if errorlevel 1 exit /B -msbuild "%D%bundle\releaseweb.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=false -if errorlevel 1 exit /B - -if defined BUILDZIP ( - msbuild "%D%make_zip.proj" /t:Build %BUILDOPTS% %CERTOPTS% /p:OutputPath="%BUILD%en-us" - if errorlevel 1 exit /B -) - -if defined BUILDNUGET ( - msbuild "%D%..\nuget\make_pkg.proj" /t:Build /p:Configuration=Release /p:Platform=%1 /p:OutputPath="%BUILD%en-us" - if errorlevel 1 exit /B -) - -if not "%OUTDIR%" EQU "" ( - mkdir "%OUTDIR%\%OUTDIR_PLAT%" - mkdir "%OUTDIR%\%OUTDIR_PLAT%\binaries" - mkdir "%OUTDIR%\%OUTDIR_PLAT%\symbols" - robocopy "%BUILD%en-us" "%OUTDIR%\%OUTDIR_PLAT%" /XF "*.wixpdb" - robocopy "%BUILD%\" "%OUTDIR%\%OUTDIR_PLAT%\binaries" *.exe *.dll *.pyd /XF "_test*" /XF "*_d.*" /XF "_freeze*" /XF "tcl*" /XF "tk*" /XF "*_test.*" - robocopy "%BUILD%\" "%OUTDIR%\%OUTDIR_PLAT%\symbols" *.pdb /XF "_test*" /XF "*_d.*" /XF "_freeze*" /XF "tcl*" /XF "tk*" /XF "*_test.*" -) - -exit /B 0 - -:Help -echo buildrelease.bat [--out DIR] [-x86] [-x64] [--certificate CERTNAME] [--build] [--pgo COMMAND] -echo [--skip-build] [--skip-doc] [--skip-nuget] [--skip-zip] [--skip-pgo] -echo [--download DOWNLOAD URL] [--test TARGETDIR] -echo [-h] -echo. -echo --out (-o) Specify an additional output directory for installers -echo -x86 Build x86 installers -echo -x64 Build x64 installers -echo --build (-b) Incrementally build Python rather than rebuilding -echo --skip-build (-B) Do not build Python (just do the installers) -echo --skip-doc (-D) Do not build documentation -echo --pgo Specify PGO command for x64 installers -echo --skip-pgo Build x64 installers without using PGO -echo --skip-nuget Do not build Nuget packages -echo --skip-zip Do not build embeddable package -echo --download Specify the full download URL for MSIs -echo --test Specify the test directory to run the installer tests -echo -h Display this help information -echo. -echo If no architecture is specified, all architectures will be built. -echo If --test is not specified, the installer tests are not run. -echo. -echo For the --pgo option, any Python command line can be used, or 'default' to -echo use the default task (-m test --pgo). -echo. -echo The following substitutions will be applied to the download URL: -echo Variable Description Example -echo {version} version number 3.5.0 -echo {arch} architecture amd64, win32 -echo {releasename} release name a1, b2, rc3 (or blank for final) -echo {msi} MSI filename core.msi +@setlocal +@echo off + +rem This script is intended for building official releases of Python. +rem To use it to build alternative releases, you should clone this file +rem and modify the following three URIs. + +rem These two will ensure that your release can be installed +rem alongside an official Python release, by modifying the GUIDs used +rem for all components. +rem +rem The following substitutions will be applied to the release URI: +rem Variable Description Example +rem {arch} architecture amd64, win32 +set RELEASE_URI=http://www.python.org/{arch} + +rem This is the URL that will be used to download installation files. +rem The files available from the default URL *will* conflict with your +rem installer. Trust me, you don't want them, even if it seems like a +rem good idea. +rem +rem The following substitutions will be applied to the download URL: +rem Variable Description Example +rem {version} version number 3.5.0 +rem {arch} architecture amd64, win32 +rem {releasename} release name a1, b2, rc3 (or blank for final) +rem {msi} MSI filename core.msi +set DOWNLOAD_URL=https://www.python.org/ftp/python/{version}/{arch}{releasename}/{msi} + +set D=%~dp0 +set PCBUILD=%D%..\..\PCBuild\ +set EXTERNALS=%D%..\..\externals\windows-installer\ + +set BUILDX86= +set BUILDX64= +set TARGET=Rebuild +set TESTTARGETDIR= +set PGO=-m test -q --pgo +set BUILDNUGET=1 +set BUILDZIP=1 + + +:CheckOpts +if "%1" EQU "-h" goto Help +if "%1" EQU "-c" (set CERTNAME=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--certificate" (set CERTNAME=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "-o" (set OUTDIR=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--out" (set OUTDIR=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "-D" (set SKIPDOC=1) && shift && goto CheckOpts +if "%1" EQU "--skip-doc" (set SKIPDOC=1) && shift && goto CheckOpts +if "%1" EQU "-B" (set SKIPBUILD=1) && shift && goto CheckOpts +if "%1" EQU "--skip-build" (set SKIPBUILD=1) && shift && goto CheckOpts +if "%1" EQU "--download" (set DOWNLOAD_URL=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--test" (set TESTTARGETDIR=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "-b" (set TARGET=Build) && shift && goto CheckOpts +if "%1" EQU "--build" (set TARGET=Build) && shift && goto CheckOpts +if "%1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts +if "%1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts +if "%1" EQU "--pgo" (set PGO=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--skip-pgo" (set PGO=) && shift && goto CheckOpts +if "%1" EQU "--skip-nuget" (set BUILDNUGET=) && shift && goto CheckOpts +if "%1" EQU "--skip-zip" (set BUILDZIP=) && shift && goto CheckOpts + +if "%1" NEQ "" echo Invalid option: "%1" && exit /B 1 + +if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) + +if not exist "%GIT%" where git > "%TEMP%\git.loc" 2> nul && set /P GIT= < "%TEMP%\git.loc" & del "%TEMP%\git.loc" +if not exist "%GIT%" echo Cannot find Git on PATH && exit /B 1 + +call "%D%get_externals.bat" + +:builddoc +if "%SKIPBUILD%" EQU "1" goto skipdoc +if "%SKIPDOC%" EQU "1" goto skipdoc + +if not defined PYTHON where py -q || echo Cannot find py on path and PYTHON is not set. && exit /B 1 +if not defined SPHINXBUILD where sphinx-build -q || echo Cannot find sphinx-build on path and SPHINXBUILD is not set. && exit /B 1 + +call "%D%..\..\doc\make.bat" htmlhelp +if errorlevel 1 goto :eof +:skipdoc + +where dlltool /q && goto skipdlltoolsearch +set _DLLTOOL_PATH= +where /R "%EXTERNALS%\" dlltool > "%TEMP%\dlltool.loc" 2> nul && set /P _DLLTOOL_PATH= < "%TEMP%\dlltool.loc" & del "%TEMP%\dlltool.loc" +if not exist "%_DLLTOOL_PATH%" echo Cannot find binutils on PATH or in external && exit /B 1 +for %%f in (%_DLLTOOL_PATH%) do set PATH=%PATH%;%%~dpf +set _DLLTOOL_PATH= +:skipdlltoolsearch + +if defined BUILDX86 ( + call :build x86 + if errorlevel 1 exit /B +) + +if defined BUILDX64 ( + call :build x64 "%PGO%" + if errorlevel 1 exit /B +) + +if defined TESTTARGETDIR ( + call "%D%testrelease.bat" -t "%TESTTARGETDIR%" +) + +exit /B 0 + +:build +@setlocal +@echo off + +if "%1" EQU "x86" ( + set PGO= + set BUILD=%PCBUILD%win32\ + set BUILD_PLAT=Win32 + set OUTDIR_PLAT=win32 + set OBJDIR_PLAT=x86 +) else ( + set BUILD=%PCBUILD%amd64\ + set PGO=%~2 + set BUILD_PLAT=x64 + set OUTDIR_PLAT=amd64 + set OBJDIR_PLAT=x64 +) + +if exist "%BUILD%en-us" ( + echo Deleting %BUILD%en-us + rmdir /q/s "%BUILD%en-us" + if errorlevel 1 exit /B +) + +if exist "%D%obj\Debug_%OBJDIR_PLAT%" ( + echo Deleting "%D%obj\Debug_%OBJDIR_PLAT%" + rmdir /q/s "%D%obj\Debug_%OBJDIR_PLAT%" + if errorlevel 1 exit /B +) + +if exist "%D%obj\Release_%OBJDIR_PLAT%" ( + echo Deleting "%D%obj\Release_%OBJDIR_PLAT%" + rmdir /q/s "%D%obj\Release_%OBJDIR_PLAT%" + if errorlevel 1 exit /B +) + +if not "%CERTNAME%" EQU "" ( + set CERTOPTS="/p:SigningCertificate=%CERTNAME%" +) else ( + set CERTOPTS= +) +if not "%PGO%" EQU "" ( + set PGOOPTS=--pgo-job "%PGO%" +) else ( + set PGOOPTS= +) +if not "%SKIPBUILD%" EQU "1" ( + @echo call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %PGOOPTS% %CERTOPTS% + @call "%PCBUILD%build.bat" -e -p %BUILD_PLAT% -t %TARGET% %PGOOPTS% %CERTOPTS% + @if errorlevel 1 exit /B + @rem build.bat turns echo back on, so we disable it again + @echo off + + @echo call "%PCBUILD%build.bat" -d -e -p %BUILD_PLAT% -t %TARGET% + @call "%PCBUILD%build.bat" -d -e -p %BUILD_PLAT% -t %TARGET% + @if errorlevel 1 exit /B + @rem build.bat turns echo back on, so we disable it again + @echo off +) + +call "%PCBUILD%env.bat" +if "%OUTDIR_PLAT%" EQU "win32" ( + msbuild "%D%launcher\launcher.wixproj" /p:Platform=x86 %CERTOPTS% /p:ReleaseUri=%RELEASE_URI% + if errorlevel 1 exit /B +) else if not exist "%PCBUILD%win32\en-us\launcher.msi" ( + msbuild "%D%launcher\launcher.wixproj" /p:Platform=x86 %CERTOPTS% /p:ReleaseUri=%RELEASE_URI% + if errorlevel 1 exit /B +) + +set BUILDOPTS=/p:Platform=%1 /p:BuildForRelease=true /p:DownloadUrl=%DOWNLOAD_URL% /p:DownloadUrlBase=%DOWNLOAD_URL_BASE% /p:ReleaseUri=%RELEASE_URI% +msbuild "%D%bundle\releaselocal.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=true +if errorlevel 1 exit /B +msbuild "%D%bundle\releaseweb.wixproj" /t:Rebuild %BUILDOPTS% %CERTOPTS% /p:RebuildAll=false +if errorlevel 1 exit /B + +if defined BUILDZIP ( + msbuild "%D%make_zip.proj" /t:Build %BUILDOPTS% %CERTOPTS% /p:OutputPath="%BUILD%en-us" + if errorlevel 1 exit /B +) + +if defined BUILDNUGET ( + msbuild "%D%..\nuget\make_pkg.proj" /t:Build /p:Configuration=Release /p:Platform=%1 /p:OutputPath="%BUILD%en-us" + if errorlevel 1 exit /B +) + +if not "%OUTDIR%" EQU "" ( + mkdir "%OUTDIR%\%OUTDIR_PLAT%" + mkdir "%OUTDIR%\%OUTDIR_PLAT%\binaries" + mkdir "%OUTDIR%\%OUTDIR_PLAT%\symbols" + robocopy "%BUILD%en-us" "%OUTDIR%\%OUTDIR_PLAT%" /XF "*.wixpdb" + robocopy "%BUILD%\" "%OUTDIR%\%OUTDIR_PLAT%\binaries" *.exe *.dll *.pyd /XF "_test*" /XF "*_d.*" /XF "_freeze*" /XF "tcl*" /XF "tk*" /XF "*_test.*" + robocopy "%BUILD%\" "%OUTDIR%\%OUTDIR_PLAT%\symbols" *.pdb /XF "_test*" /XF "*_d.*" /XF "_freeze*" /XF "tcl*" /XF "tk*" /XF "*_test.*" +) + +exit /B 0 + +:Help +echo buildrelease.bat [--out DIR] [-x86] [-x64] [--certificate CERTNAME] [--build] [--pgo COMMAND] +echo [--skip-build] [--skip-doc] [--skip-nuget] [--skip-zip] [--skip-pgo] +echo [--download DOWNLOAD URL] [--test TARGETDIR] +echo [-h] +echo. +echo --out (-o) Specify an additional output directory for installers +echo -x86 Build x86 installers +echo -x64 Build x64 installers +echo --build (-b) Incrementally build Python rather than rebuilding +echo --skip-build (-B) Do not build Python (just do the installers) +echo --skip-doc (-D) Do not build documentation +echo --pgo Specify PGO command for x64 installers +echo --skip-pgo Build x64 installers without using PGO +echo --skip-nuget Do not build Nuget packages +echo --skip-zip Do not build embeddable package +echo --download Specify the full download URL for MSIs +echo --test Specify the test directory to run the installer tests +echo -h Display this help information +echo. +echo If no architecture is specified, all architectures will be built. +echo If --test is not specified, the installer tests are not run. +echo. +echo For the --pgo option, any Python command line can be used, or 'default' to +echo use the default task (-m test --pgo). +echo. +echo The following substitutions will be applied to the download URL: +echo Variable Description Example +echo {version} version number 3.5.0 +echo {arch} architecture amd64, win32 +echo {releasename} release name a1, b2, rc3 (or blank for final) +echo {msi} MSI filename core.msi diff --git a/Tools/msi/get_externals.bat b/Tools/msi/get_externals.bat index 4ead75e757233e..e1d74de6ac78f5 100644 --- a/Tools/msi/get_externals.bat +++ b/Tools/msi/get_externals.bat @@ -1,27 +1,27 @@ -@echo off -setlocal -rem Simple script to fetch source for external tools - -where /Q svn -if ERRORLEVEL 1 ( - echo.svn.exe must be on your PATH to get external tools. - echo.Try TortoiseSVN (http://tortoisesvn.net/^) and be sure to check the - echo.command line tools option. - popd - exit /b 1 -) - -if not exist "%~dp0..\..\externals" mkdir "%~dp0..\..\externals" -pushd "%~dp0..\..\externals" - -if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/ - -if not exist "windows-installer\.svn" ( - echo.Checking out installer dependencies to %CD%\windows-installer - svn co %SVNROOT%windows-installer -) else ( - echo.Updating installer dependencies in %CD%\windows-installer - svn up windows-installer -) - -popd +@echo off +setlocal +rem Simple script to fetch source for external tools + +where /Q svn +if ERRORLEVEL 1 ( + echo.svn.exe must be on your PATH to get external tools. + echo.Try TortoiseSVN (http://tortoisesvn.net/^) and be sure to check the + echo.command line tools option. + popd + exit /b 1 +) + +if not exist "%~dp0..\..\externals" mkdir "%~dp0..\..\externals" +pushd "%~dp0..\..\externals" + +if "%SVNROOT%"=="" set SVNROOT=http://svn.python.org/projects/external/ + +if not exist "windows-installer\.svn" ( + echo.Checking out installer dependencies to %CD%\windows-installer + svn co %SVNROOT%windows-installer +) else ( + echo.Updating installer dependencies in %CD%\windows-installer + svn up windows-installer +) + +popd diff --git a/Tools/msi/testrelease.bat b/Tools/msi/testrelease.bat index a989575ed6f032..96fdf5eb86e480 100644 --- a/Tools/msi/testrelease.bat +++ b/Tools/msi/testrelease.bat @@ -1,117 +1,117 @@ -@setlocal enableextensions -@echo off - -set D=%~dp0 -set PCBUILD=%D%..\..\PCBuild\ - -set TARGETDIR=%TEMP% -set TESTX86= -set TESTX64= -set TESTALLUSER= -set TESTPERUSER= - -:CheckOpts -if "%1" EQU "-h" goto Help -if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts -if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts -if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts -if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts -if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts -if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts - -if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) -if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) - - -if defined TESTX86 ( - for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( - if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" - if errorlevel 1 exit /B - if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" - if errorlevel 1 exit /B - ) -) - -if defined TESTX64 ( - for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( - if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" - if errorlevel 1 exit /B - if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" - if errorlevel 1 exit /B - ) -) - -exit /B 0 - -:test -@setlocal -@echo on - -@if not exist "%~1" exit /B 1 - -@set EXE=%~1 -@if not "%EXE:embed=%"=="%EXE%" exit /B 0 - -@set EXITCODE=0 -@echo Installing %1 into %2 -"%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 - -@if not errorlevel 1 ( - @echo Printing version - "%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 -) - -@if not errorlevel 1 ( - @echo Capturing Start Menu - @dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 - @dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 - - @echo Capturing registry - @for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( - echo %%f >> "%~2\hkcr.txt" - reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 - ) - @reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 - @reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 - @reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 - cmd /k exit 0 -) - -@if not errorlevel 1 ( - @echo Installing package - "%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 - @if not errorlevel 1 ( - "%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 - ) -) -@if not errorlevel 1 ( - @echo Testing Tcl/tk - @set TCL_LIBRARY=%~2\Python\tcl\tcl8.6 - "%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 - @set TCL_LIBRARY= -) - -@set EXITCODE=%ERRORLEVEL% - -@echo Result was %EXITCODE% -@echo Removing %1 -"%~1" /passive /uninstall /log "%~2\uninstall\log.txt" - -@echo off -exit /B %EXITCODE% - -:Help -echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] -echo. -echo --target (-t) Specify the target directory for installs and logs -echo -x86 Run tests for x86 installers -echo -x64 Run tests for x64 installers -echo --alluser (-a) Run tests for all-user installs (requires Administrator) -echo --peruser (-p) Run tests for per-user installs -echo -h Display this help information -echo. -echo If no test architecture is specified, all architectures will be tested. -echo If no install type is selected, all install types will be tested. -echo. +@setlocal enableextensions +@echo off + +set D=%~dp0 +set PCBUILD=%D%..\..\PCBuild\ + +set TARGETDIR=%TEMP% +set TESTX86= +set TESTX64= +set TESTALLUSER= +set TESTPERUSER= + +:CheckOpts +if "%1" EQU "-h" goto Help +if "%1" EQU "-x86" (set TESTX86=1) && shift && goto CheckOpts +if "%1" EQU "-x64" (set TESTX64=1) && shift && goto CheckOpts +if "%1" EQU "-t" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--target" (set TARGETDIR=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "-a" (set TESTALLUSER=1) && shift && goto CheckOpts +if "%1" EQU "--alluser" (set TESTALLUSER=1) && shift && goto CheckOpts +if "%1" EQU "-p" (set TESTPERUSER=1) && shift && goto CheckOpts +if "%1" EQU "--peruser" (set TESTPERUSER=1) && shift && goto CheckOpts + +if not defined TESTX86 if not defined TESTX64 (set TESTX86=1) && (set TESTX64=1) +if not defined TESTALLUSER if not defined TESTPERUSER (set TESTALLUSER=1) && (set TESTPERUSER=1) + + +if defined TESTX86 ( + for %%f in ("%PCBUILD%win32\en-us\*.exe") do ( + if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" + if errorlevel 1 exit /B + if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" + if errorlevel 1 exit /B + ) +) + +if defined TESTX64 ( + for %%f in ("%PCBUILD%amd64\en-us\*.exe") do ( + if defined TESTALLUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-alluser" "InstallAllUsers=1 CompileAll=1" + if errorlevel 1 exit /B + if defined TESTPERUSER call :test "%%~ff" "%TARGETDIR%\%%~nf-peruser" "InstallAllUsers=0 CompileAll=0" + if errorlevel 1 exit /B + ) +) + +exit /B 0 + +:test +@setlocal +@echo on + +@if not exist "%~1" exit /B 1 + +@set EXE=%~1 +@if not "%EXE:embed=%"=="%EXE%" exit /B 0 + +@set EXITCODE=0 +@echo Installing %1 into %2 +"%~1" /passive /log "%~2\install\log.txt" TargetDir="%~2\Python" Include_debug=1 Include_symbols=1 %~3 + +@if not errorlevel 1 ( + @echo Printing version + "%~2\Python\python.exe" -c "import sys; print(sys.version)" > "%~2\version.txt" 2>&1 +) + +@if not errorlevel 1 ( + @echo Capturing Start Menu + @dir /s/b "%PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" > "%~2\startmenu.txt" 2>&1 + @dir /s/b "%APPDATA%\Microsoft\Windows\Start Menu\Programs" | findstr /ic:"python" >> "%~2\startmenu.txt" 2>&1 + + @echo Capturing registry + @for /F "usebackq" %%f in (`reg query HKCR /s /f python /k`) do @( + echo %%f >> "%~2\hkcr.txt" + reg query "%%f" /s >> "%~2\hkcr.txt" 2>&1 + ) + @reg query HKCU\Software\Python /s > "%~2\hkcu.txt" 2>&1 + @reg query HKLM\Software\Python /reg:32 /s > "%~2\hklm.txt" 2>&1 + @reg query HKLM\Software\Python /reg:64 /s >> "%~2\hklm.txt" 2>&1 + cmd /k exit 0 +) + +@if not errorlevel 1 ( + @echo Installing package + "%~2\Python\python.exe" -m pip install "azure<0.10" > "%~2\pip.txt" 2>&1 + @if not errorlevel 1 ( + "%~2\Python\python.exe" -m pip uninstall -y azure python-dateutil six >> "%~2\pip.txt" 2>&1 + ) +) +@if not errorlevel 1 ( + @echo Testing Tcl/tk + @set TCL_LIBRARY=%~2\Python\tcl\tcl8.6 + "%~2\Python\python.exe" -m test -uall -v test_ttk_guionly test_tk test_idle > "%~2\tcltk.txt" 2>&1 + @set TCL_LIBRARY= +) + +@set EXITCODE=%ERRORLEVEL% + +@echo Result was %EXITCODE% +@echo Removing %1 +"%~1" /passive /uninstall /log "%~2\uninstall\log.txt" + +@echo off +exit /B %EXITCODE% + +:Help +echo testrelease.bat [--target TARGET] [-x86] [-x64] [--alluser] [--peruser] [-h] +echo. +echo --target (-t) Specify the target directory for installs and logs +echo -x86 Run tests for x86 installers +echo -x64 Run tests for x64 installers +echo --alluser (-a) Run tests for all-user installs (requires Administrator) +echo --peruser (-p) Run tests for per-user installs +echo -h Display this help information +echo. +echo If no test architecture is specified, all architectures will be tested. +echo If no install type is selected, all install types will be tested. +echo. diff --git a/Tools/msi/uploadrelease.bat b/Tools/msi/uploadrelease.bat index 670836be8c1c8b..0873d55589f0db 100644 --- a/Tools/msi/uploadrelease.bat +++ b/Tools/msi/uploadrelease.bat @@ -1,76 +1,76 @@ -@setlocal -@echo off - -set D=%~dp0 -set PCBUILD=%D%..\..\PCBuild\ - -set HOST= -set USER= -set TARGET= -set DRYRUN=false -set NOGPG= -set PURGE_OPTION=/p:Purge=true -set NOTEST= - -:CheckOpts -if "%1" EQU "-h" goto Help -if "%1" EQU "-o" (set HOST=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--host" (set HOST=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-u" (set USER=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--user" (set USER=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "-t" (set TARGET=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--target" (set TARGET=%~2) && shift && shift && goto CheckOpts -if "%1" EQU "--dry-run" (set DRYRUN=true) && shift && goto CheckOpts -if "%1" EQU "--skip-gpg" (set NOGPG=true) && shift && goto CheckOpts -if "%1" EQU "--skip-purge" (set PURGE_OPTION=) && shift && godo CheckOpts -if "%1" EQU "--skip-test" (set NOTEST=true) && shift && godo CheckOpts -if "%1" EQU "-T" (set NOTEST=true) && shift && godo CheckOpts -if "%1" NEQ "" echo Unexpected argument "%1" & exit /B 1 - -if not defined PLINK where plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK where /R "%ProgramFiles(x86)%\PuTTY" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK where /R "%ProgramFiles(x86)%" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" -if not defined PLINK echo Cannot locate plink.exe & exit /B 1 -echo Found plink.exe at %PLINK% - -if not defined PSCP where pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP where /R "%ProgramFiles(x86)%\PuTTY" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP where /R "%ProgramFiles(x86)%" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" -if not defined PSCP echo Cannot locate pscp.exe & exit /B 1 -echo Found pscp.exe at %PSCP% - -if defined NOGPG ( - set GPG= - echo Skipping GPG signature generation because of --skip-gpg -) else ( - if not defined GPG where gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" - if not defined GPG where /R "%PCBUILD%..\externals\windows-installer" gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" - if not defined GPG echo Cannot locate gpg2.exe. Signatures will not be uploaded & pause - echo Found gpg2.exe at %GPG% -) - -call "%PCBUILD%env.bat" > nul 2> nul -pushd "%D%" -msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x86 %PURGE_OPTION% -msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x64 /p:IncludeDoc=false %PURGE_OPTION% -if not defined NOTEST ( - msbuild /v:m /nologo uploadrelease.proj /t:Test /p:Platform=x86 - msbuild /v:m /nologo uploadrelease.proj /t:Test /p:Platform=x64 -) -msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x86 -msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x64 /p:IncludeDoc=false -popd -exit /B 0 - -:Help -echo uploadrelease.bat --host HOST --user USERNAME [--target TARGET] [--dry-run] [-h] -echo. -echo --host (-o) Specify the upload host (required) -echo --user (-u) Specify the user on the host (required) -echo --target (-t) Specify the target directory on the host -echo --dry-run Display commands and filenames without executing them -echo --skip-gpg Does not generate GPG signatures before uploading -echo --skip-purge Does not perform CDN purge after uploading -echo --skip-test (-T) Does not perform post-upload tests -echo -h Display this help information -echo. +@setlocal +@echo off + +set D=%~dp0 +set PCBUILD=%D%..\..\PCBuild\ + +set HOST= +set USER= +set TARGET= +set DRYRUN=false +set NOGPG= +set PURGE_OPTION=/p:Purge=true +set NOTEST= + +:CheckOpts +if "%1" EQU "-h" goto Help +if "%1" EQU "-o" (set HOST=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--host" (set HOST=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "-u" (set USER=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--user" (set USER=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "-t" (set TARGET=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--target" (set TARGET=%~2) && shift && shift && goto CheckOpts +if "%1" EQU "--dry-run" (set DRYRUN=true) && shift && goto CheckOpts +if "%1" EQU "--skip-gpg" (set NOGPG=true) && shift && goto CheckOpts +if "%1" EQU "--skip-purge" (set PURGE_OPTION=) && shift && godo CheckOpts +if "%1" EQU "--skip-test" (set NOTEST=true) && shift && godo CheckOpts +if "%1" EQU "-T" (set NOTEST=true) && shift && godo CheckOpts +if "%1" NEQ "" echo Unexpected argument "%1" & exit /B 1 + +if not defined PLINK where plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" +if not defined PLINK where /R "%ProgramFiles(x86)%\PuTTY" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" +if not defined PLINK where /R "%ProgramFiles(x86)%" plink > "%TEMP%\plink.loc" 2> nul && set /P PLINK= < "%TEMP%\plink.loc" & del "%TEMP%\plink.loc" +if not defined PLINK echo Cannot locate plink.exe & exit /B 1 +echo Found plink.exe at %PLINK% + +if not defined PSCP where pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" +if not defined PSCP where /R "%ProgramFiles(x86)%\PuTTY" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" +if not defined PSCP where /R "%ProgramFiles(x86)%" pscp > "%TEMP%\pscp.loc" 2> nul && set /P pscp= < "%TEMP%\pscp.loc" & del "%TEMP%\pscp.loc" +if not defined PSCP echo Cannot locate pscp.exe & exit /B 1 +echo Found pscp.exe at %PSCP% + +if defined NOGPG ( + set GPG= + echo Skipping GPG signature generation because of --skip-gpg +) else ( + if not defined GPG where gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" + if not defined GPG where /R "%PCBUILD%..\externals\windows-installer" gpg2 > "%TEMP%\gpg.loc" 2> nul && set /P GPG= < "%TEMP%\gpg.loc" & del "%TEMP%\gpg.loc" + if not defined GPG echo Cannot locate gpg2.exe. Signatures will not be uploaded & pause + echo Found gpg2.exe at %GPG% +) + +call "%PCBUILD%env.bat" > nul 2> nul +pushd "%D%" +msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x86 %PURGE_OPTION% +msbuild /v:m /nologo uploadrelease.proj /t:Upload /p:Platform=x64 /p:IncludeDoc=false %PURGE_OPTION% +if not defined NOTEST ( + msbuild /v:m /nologo uploadrelease.proj /t:Test /p:Platform=x86 + msbuild /v:m /nologo uploadrelease.proj /t:Test /p:Platform=x64 +) +msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x86 +msbuild /v:m /nologo uploadrelease.proj /t:ShowHashes /p:Platform=x64 /p:IncludeDoc=false +popd +exit /B 0 + +:Help +echo uploadrelease.bat --host HOST --user USERNAME [--target TARGET] [--dry-run] [-h] +echo. +echo --host (-o) Specify the upload host (required) +echo --user (-u) Specify the user on the host (required) +echo --target (-t) Specify the target directory on the host +echo --dry-run Display commands and filenames without executing them +echo --skip-gpg Does not generate GPG signatures before uploading +echo --skip-purge Does not perform CDN purge after uploading +echo --skip-test (-T) Does not perform post-upload tests +echo -h Display this help information +echo. diff --git a/Tools/nuget/build.bat b/Tools/nuget/build.bat index 120b38cb38ce61..5068c17244456e 100644 --- a/Tools/nuget/build.bat +++ b/Tools/nuget/build.bat @@ -1,55 +1,55 @@ -@echo off -setlocal -set D=%~dp0 -set PCBUILD=%D%..\..\PCBuild\ - -set BUILDX86= -set BUILDX64= -set REBUILD= -set OUTPUT= -set PACKAGES= - -:CheckOpts -if "%~1" EQU "-h" goto Help -if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts -if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts -if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts -if "%~1" EQU "-o" (set OUTPUT="/p:OutputPath=%~2") && shift && shift && goto CheckOpts -if "%~1" EQU "--out" (set OUTPUT="/p:OutputPath=%~2") && shift && shift && goto CheckOpts -if "%~1" EQU "-p" (set PACKAGES=%PACKAGES% %~2) && shift && shift && goto CheckOpts - -if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) - -call "%D%..\msi\get_externals.bat" -call "%PCBUILD%env.bat" x86 - -if defined PACKAGES set PACKAGES="/p:Packages=%PACKAGES%" - -if defined BUILDX86 ( - if defined REBUILD ( call "%PCBUILD%build.bat" -e -r - ) else if not exist "%PCBUILD%win32\python.exe" call "%PCBUILD%build.bat" -e - if errorlevel 1 goto :eof - - msbuild "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=x86 %OUTPUT% %PACKAGES% - if errorlevel 1 goto :eof -) - -if defined BUILDX64 ( - if defined REBUILD ( call "%PCBUILD%build.bat" -p x64 -e -r - ) else if not exist "%PCBUILD%amd64\python.exe" call "%PCBUILD%build.bat" -p x64 -e - if errorlevel 1 goto :eof - - msbuild "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=x64 %OUTPUT% %PACKAGES% - if errorlevel 1 goto :eof -) - -exit /B 0 - -:Help -echo build.bat [-x86] [-x64] [--out DIR] [-r] [-h] -echo. -echo -x86 Build x86 installers -echo -x64 Build x64 installers -echo -r Rebuild rather than incremental build -echo --out [DIR] Override output directory -echo -h Show usage +@echo off +setlocal +set D=%~dp0 +set PCBUILD=%D%..\..\PCBuild\ + +set BUILDX86= +set BUILDX64= +set REBUILD= +set OUTPUT= +set PACKAGES= + +:CheckOpts +if "%~1" EQU "-h" goto Help +if "%~1" EQU "-x86" (set BUILDX86=1) && shift && goto CheckOpts +if "%~1" EQU "-x64" (set BUILDX64=1) && shift && goto CheckOpts +if "%~1" EQU "-r" (set REBUILD=-r) && shift && goto CheckOpts +if "%~1" EQU "-o" (set OUTPUT="/p:OutputPath=%~2") && shift && shift && goto CheckOpts +if "%~1" EQU "--out" (set OUTPUT="/p:OutputPath=%~2") && shift && shift && goto CheckOpts +if "%~1" EQU "-p" (set PACKAGES=%PACKAGES% %~2) && shift && shift && goto CheckOpts + +if not defined BUILDX86 if not defined BUILDX64 (set BUILDX86=1) && (set BUILDX64=1) + +call "%D%..\msi\get_externals.bat" +call "%PCBUILD%env.bat" x86 + +if defined PACKAGES set PACKAGES="/p:Packages=%PACKAGES%" + +if defined BUILDX86 ( + if defined REBUILD ( call "%PCBUILD%build.bat" -e -r + ) else if not exist "%PCBUILD%win32\python.exe" call "%PCBUILD%build.bat" -e + if errorlevel 1 goto :eof + + msbuild "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=x86 %OUTPUT% %PACKAGES% + if errorlevel 1 goto :eof +) + +if defined BUILDX64 ( + if defined REBUILD ( call "%PCBUILD%build.bat" -p x64 -e -r + ) else if not exist "%PCBUILD%amd64\python.exe" call "%PCBUILD%build.bat" -p x64 -e + if errorlevel 1 goto :eof + + msbuild "%D%make_pkg.proj" /p:Configuration=Release /p:Platform=x64 %OUTPUT% %PACKAGES% + if errorlevel 1 goto :eof +) + +exit /B 0 + +:Help +echo build.bat [-x86] [-x64] [--out DIR] [-r] [-h] +echo. +echo -x86 Build x86 installers +echo -x64 Build x64 installers +echo -r Rebuild rather than incremental build +echo --out [DIR] Override output directory +echo -h Show usage diff --git a/Tools/unicode/genwincodecs.bat b/Tools/unicode/genwincodecs.bat index ad45c6c4438014..43cab0d6f8e71a 100644 --- a/Tools/unicode/genwincodecs.bat +++ b/Tools/unicode/genwincodecs.bat @@ -1,7 +1,7 @@ -@rem Recreate some python charmap codecs from the Windows function -@rem MultiByteToWideChar. - -@cd /d %~dp0 -@mkdir build -@rem Arabic DOS code page -c:\python30\python genwincodec.py 720 > build/cp720.py +@rem Recreate some python charmap codecs from the Windows function +@rem MultiByteToWideChar. + +@cd /d %~dp0 +@mkdir build +@rem Arabic DOS code page +c:\python30\python genwincodec.py 720 > build/cp720.py diff --git a/configure b/configure index 8b824b24365113..ec42e08f8961c1 100755 --- a/configure +++ b/configure @@ -834,6 +834,8 @@ with_thread enable_ipv6 with_doc_strings with_pymalloc +with_c_locale_coercion +with_c_locale_warning with_valgrind with_dtrace with_fpectl @@ -1528,6 +1530,12 @@ Optional Packages: deprecated; use --with(out)-threads --with(out)-doc-strings disable/enable documentation strings --with(out)-pymalloc disable/enable specialized mallocs + --with(out)-c-locale-coercion + disable/enable C locale coercion to a UTF-8 based + locale + --with(out)-c-locale-warning + disable/enable locale compatibility warning in the C + locale --with-valgrind Enable Valgrind support --with(out)-dtrace disable/enable DTrace support --with-fpectl enable SIGFPE catching @@ -11047,6 +11055,52 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5 $as_echo "$with_pymalloc" >&6; } +# Check for --with-c-locale-coercion +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-coercion" >&5 +$as_echo_n "checking for --with-c-locale-coercion... " >&6; } + +# Check whether --with-c-locale-coercion was given. +if test "${with_c_locale_coercion+set}" = set; then : + withval=$with_c_locale_coercion; +fi + + +if test -z "$with_c_locale_coercion" +then + with_c_locale_coercion="yes" +fi +if test "$with_c_locale_coercion" != "no" +then + +$as_echo "#define PY_COERCE_C_LOCALE 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_c_locale_coercion" >&5 +$as_echo "$with_c_locale_coercion" >&6; } + +# Check for --with-c-locale-warning +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-warning" >&5 +$as_echo_n "checking for --with-c-locale-warning... " >&6; } + +# Check whether --with-c-locale-warning was given. +if test "${with_c_locale_warning+set}" = set; then : + withval=$with_c_locale_warning; +fi + + +if test -z "$with_c_locale_warning" +then + with_c_locale_warning="yes" +fi +if test "$with_c_locale_warning" != "no" +then + +$as_echo "#define PY_WARN_ON_C_LOCALE 1" >>confdefs.h + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_c_locale_warning" >&5 +$as_echo "$with_c_locale_warning" >&6; } + # Check for Valgrind support { $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-valgrind" >&5 $as_echo_n "checking for --with-valgrind... " >&6; } diff --git a/configure.ac b/configure.ac index d5b6399cc04014..18b940ab329172 100644 --- a/configure.ac +++ b/configure.ac @@ -3325,6 +3325,40 @@ then fi AC_MSG_RESULT($with_pymalloc) +# Check for --with-c-locale-coercion +AC_MSG_CHECKING(for --with-c-locale-coercion) +AC_ARG_WITH(c-locale-coercion, + AS_HELP_STRING([--with(out)-c-locale-coercion], + [disable/enable C locale coercion to a UTF-8 based locale])) + +if test -z "$with_c_locale_coercion" +then + with_c_locale_coercion="yes" +fi +if test "$with_c_locale_coercion" != "no" +then + AC_DEFINE(PY_COERCE_C_LOCALE, 1, + [Define if you want to coerce the C locale to a UTF-8 based locale]) +fi +AC_MSG_RESULT($with_c_locale_coercion) + +# Check for --with-c-locale-warning +AC_MSG_CHECKING(for --with-c-locale-warning) +AC_ARG_WITH(c-locale-warning, + AS_HELP_STRING([--with(out)-c-locale-warning], + [disable/enable locale compatibility warning in the C locale])) + +if test -z "$with_c_locale_warning" +then + with_c_locale_warning="yes" +fi +if test "$with_c_locale_warning" != "no" +then + AC_DEFINE(PY_WARN_ON_C_LOCALE, 1, + [Define to emit a locale compatibility warning in the C locale]) +fi +AC_MSG_RESULT($with_c_locale_warning) + # Check for Valgrind support AC_MSG_CHECKING([for --with-valgrind]) AC_ARG_WITH([valgrind], diff --git a/pyconfig.h.in b/pyconfig.h.in index 0a3d59ef9ae602..fa2792b18ad419 100644 --- a/pyconfig.h.in +++ b/pyconfig.h.in @@ -1247,9 +1247,15 @@ /* Define as the preferred size in bits of long digits */ #undef PYLONG_BITS_IN_DIGIT +/* Define if you want to coerce the C locale to a UTF-8 based locale */ +#undef PY_COERCE_C_LOCALE + /* Define to printf format modifier for Py_ssize_t */ #undef PY_FORMAT_SIZE_T +/* Define to emit a locale compatibility warning in the C locale */ +#undef PY_WARN_ON_C_LOCALE + /* Define if you want to build an interpreter with many run-time checks. */ #undef Py_DEBUG