From 7544508f0245173bff5866aa1598c8f6cce1fc5f Mon Sep 17 00:00:00 2001 From: Yury Selivanov Date: Mon, 11 May 2015 22:57:16 -0400 Subject: [PATCH] PEP 0492 -- Coroutines with async and await syntax. Issue #24017. --- Doc/includes/typestruct.h | 2 +- Doc/library/dis.rst | 42 +- Grammar/Grammar | 11 +- Include/Python-ast.h | 59 +- Include/ceval.h | 2 + Include/code.h | 5 + Include/genobject.h | 7 + Include/graminit.h | 155 +- Include/object.h | 11 +- Include/opcode.h | 130 +- Include/pyerrors.h | 1 + Include/pystate.h | 2 + Include/token.h | 6 +- Include/typeslots.h | 3 + Lib/_collections_abc.py | 76 +- Lib/dis.py | 2 + Lib/inspect.py | 26 +- Lib/lib2to3/Grammar.txt | 8 +- Lib/lib2to3/pgen2/token.py | 6 +- Lib/lib2to3/pgen2/tokenize.py | 63 +- Lib/lib2to3/tests/test_parser.py | 32 +- Lib/opcode.py | 10 +- Lib/test/badsyntax_async1.py | 3 + Lib/test/badsyntax_async2.py | 3 + Lib/test/badsyntax_async3.py | 2 + Lib/test/badsyntax_async4.py | 2 + Lib/test/badsyntax_async5.py | 2 + Lib/test/badsyntax_async6.py | 2 + Lib/test/badsyntax_async7.py | 2 + Lib/test/badsyntax_async8.py | 2 + Lib/test/badsyntax_async9.py | 2 + Lib/test/exception_hierarchy.txt | 1 + Lib/test/test_ast.py | 9 + Lib/test/test_collections.py | 80 + Lib/test/test_coroutines.py | 862 ++++++ Lib/test/test_dis.py | 46 +- Lib/test/test_grammar.py | 87 + Lib/test/test_inspect.py | 72 +- Lib/test/test_minidom.py | 15 + Lib/test/test_parser.py | 16 + Lib/test/test_pickle.py | 4 +- Lib/test/test_sys.py | 4 +- Lib/test/test_tokenize.py | 186 ++ Lib/test/test_types.py | 35 +- Lib/token.py | 6 +- Lib/tokenize.py | 56 +- Lib/types.py | 24 + Lib/xml/dom/xmlbuilder.py | 26 +- Modules/_testcapimodule.c | 97 + Modules/parsermodule.c | 115 +- Objects/exceptions.c | 9 + Objects/frameobject.c | 8 +- Objects/genobject.c | 102 +- Objects/typeobject.c | 91 +- Objects/typeslots.inc | 3 + Objects/typeslots.py | 2 + Parser/Python.asdl | 8 +- Parser/tokenizer.c | 68 + Parser/tokenizer.h | 7 + Python/Python-ast.c | 473 +++ Python/ast.c | 174 +- Python/ceval.c | 231 +- Python/compile.c | 288 +- Python/graminit.c | 2714 ++++++++--------- Python/importlib.h | 3480 +++++++++++----------- Python/importlib_external.h | 4773 +++++++++++++++--------------- Python/opcode_targets.h | 14 +- Python/peephole.c | 3 + Python/pystate.c | 4 + Python/symtable.c | 49 +- Python/sysmodule.c | 47 + Tools/parser/unparse.py | 32 +- 72 files changed, 9261 insertions(+), 5739 deletions(-) create mode 100644 Lib/test/badsyntax_async1.py create mode 100644 Lib/test/badsyntax_async2.py create mode 100644 Lib/test/badsyntax_async3.py create mode 100644 Lib/test/badsyntax_async4.py create mode 100644 Lib/test/badsyntax_async5.py create mode 100644 Lib/test/badsyntax_async6.py create mode 100644 Lib/test/badsyntax_async7.py create mode 100644 Lib/test/badsyntax_async8.py create mode 100644 Lib/test/badsyntax_async9.py create mode 100644 Lib/test/test_coroutines.py diff --git a/Doc/includes/typestruct.h b/Doc/includes/typestruct.h index fcb846acca5..5c9f8f5d9f7 100644 --- a/Doc/includes/typestruct.h +++ b/Doc/includes/typestruct.h @@ -9,7 +9,7 @@ typedef struct _typeobject { printfunc tp_print; getattrfunc tp_getattr; setattrfunc tp_setattr; - void *tp_reserved; + PyAsyncMethods *tp_as_async; reprfunc tp_repr; /* Method suites for standard classes */ diff --git a/Doc/library/dis.rst b/Doc/library/dis.rst index b00d619d83f..5ef5e8d1ede 100644 --- a/Doc/library/dis.rst +++ b/Doc/library/dis.rst @@ -508,6 +508,38 @@ the original TOS1. Implements ``del TOS1[TOS]``. +**Coroutines opcodes** + +.. opcode:: GET_AWAITABLE + + Implements ``TOS = get_awaitable(TOS)``; where ``get_awaitable(o)`` + returns ``o`` if ``o`` is a coroutine object; or resolved ``o.__await__``. + + +.. opcode:: GET_AITER + + Implements ``TOS = get_awaitable(TOS.__aiter__())``. See ``GET_AWAITABLE`` + for details about ``get_awaitable`` + + +.. opcode:: GET_ANEXT + + Implements ``PUSH(get_awaitable(TOS.__anext__()))``. See ``GET_AWAITABLE`` + for details about ``get_awaitable`` + + +.. opcode:: BEFORE_ASYNC_WITH + + Resolves ``__aenter__`` and ``__aexit__`` from the object on top of the + stack. Pushes ``__aexit__`` and result of ``__aenter__()`` to the stack. + + +.. opcode:: SETUP_ASYNC_WITH + + Creates a new frame object. + + + **Miscellaneous opcodes** .. opcode:: PRINT_EXPR @@ -612,7 +644,7 @@ iterations of the loop. :opcode:`UNPACK_SEQUENCE`). -.. opcode:: WITH_CLEANUP +.. opcode:: WITH_CLEANUP_START Cleans up the stack when a :keyword:`with` statement block exits. TOS is the context manager's :meth:`__exit__` bound method. Below TOS are 1--3 values @@ -624,7 +656,13 @@ iterations of the loop. * (SECOND, THIRD, FOURTH) = exc_info() In the last case, ``TOS(SECOND, THIRD, FOURTH)`` is called, otherwise - ``TOS(None, None, None)``. In addition, TOS is removed from the stack. + ``TOS(None, None, None)``. Pushes SECOND and result of the call + to the stack. + + +.. opcode:: WITH_CLEANUP_FINISH + + Pops exception type and result of 'exit' function call from the stack. If the stack represents an exception, *and* the function call returns a 'true' value, this information is "zapped" and replaced with a single diff --git a/Grammar/Grammar b/Grammar/Grammar index 6915f5fde1c..4b193b949a8 100644 --- a/Grammar/Grammar +++ b/Grammar/Grammar @@ -21,8 +21,11 @@ eval_input: testlist NEWLINE* ENDMARKER decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE decorators: decorator+ -decorated: decorators (classdef | funcdef) +decorated: decorators (classdef | funcdef | async_funcdef) + +async_funcdef: ASYNC funcdef funcdef: 'def' NAME parameters ['->' test] ':' suite + parameters: '(' [typedargslist] ')' typedargslist: (tfpdef ['=' test] (',' tfpdef ['=' test])* [',' ['*' [tfpdef] (',' tfpdef ['=' test])* [',' '**' tfpdef] | '**' tfpdef]] @@ -65,7 +68,8 @@ global_stmt: 'global' NAME (',' NAME)* nonlocal_stmt: 'nonlocal' NAME (',' NAME)* assert_stmt: 'assert' test [',' test] -compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt +async_stmt: ASYNC (funcdef | with_stmt | for_stmt) if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] while_stmt: 'while' test ':' suite ['else' ':' suite] for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] @@ -99,7 +103,8 @@ shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* term: factor (('*'|'@'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power -power: atom trailer* ['**' factor] +power: atom_expr ['**' factor] +atom_expr: [AWAIT] atom trailer* atom: ('(' [yield_expr|testlist_comp] ')' | '[' [testlist_comp] ']' | '{' [dictorsetmaker] '}' | diff --git a/Include/Python-ast.h b/Include/Python-ast.h index a938aad8f30..3bc015fe78b 100644 --- a/Include/Python-ast.h +++ b/Include/Python-ast.h @@ -63,12 +63,13 @@ struct _mod { } v; }; -enum _stmt_kind {FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3, - Delete_kind=4, Assign_kind=5, AugAssign_kind=6, For_kind=7, - While_kind=8, If_kind=9, With_kind=10, Raise_kind=11, - Try_kind=12, Assert_kind=13, Import_kind=14, - ImportFrom_kind=15, Global_kind=16, Nonlocal_kind=17, - Expr_kind=18, Pass_kind=19, Break_kind=20, Continue_kind=21}; +enum _stmt_kind {FunctionDef_kind=1, AsyncFunctionDef_kind=2, ClassDef_kind=3, + Return_kind=4, Delete_kind=5, Assign_kind=6, + AugAssign_kind=7, For_kind=8, AsyncFor_kind=9, While_kind=10, + If_kind=11, With_kind=12, AsyncWith_kind=13, Raise_kind=14, + Try_kind=15, Assert_kind=16, Import_kind=17, + ImportFrom_kind=18, Global_kind=19, Nonlocal_kind=20, + Expr_kind=21, Pass_kind=22, Break_kind=23, Continue_kind=24}; struct _stmt { enum _stmt_kind kind; union { @@ -80,6 +81,14 @@ struct _stmt { expr_ty returns; } FunctionDef; + struct { + identifier name; + arguments_ty args; + asdl_seq *body; + asdl_seq *decorator_list; + expr_ty returns; + } AsyncFunctionDef; + struct { identifier name; asdl_seq *bases; @@ -114,6 +123,13 @@ struct _stmt { asdl_seq *orelse; } For; + struct { + expr_ty target; + expr_ty iter; + asdl_seq *body; + asdl_seq *orelse; + } AsyncFor; + struct { expr_ty test; asdl_seq *body; @@ -131,6 +147,11 @@ struct _stmt { asdl_seq *body; } With; + struct { + asdl_seq *items; + asdl_seq *body; + } AsyncWith; + struct { expr_ty exc; expr_ty cause; @@ -178,11 +199,11 @@ struct _stmt { enum _expr_kind {BoolOp_kind=1, BinOp_kind=2, UnaryOp_kind=3, Lambda_kind=4, IfExp_kind=5, Dict_kind=6, Set_kind=7, ListComp_kind=8, SetComp_kind=9, DictComp_kind=10, GeneratorExp_kind=11, - Yield_kind=12, YieldFrom_kind=13, Compare_kind=14, - Call_kind=15, Num_kind=16, Str_kind=17, Bytes_kind=18, - NameConstant_kind=19, Ellipsis_kind=20, Attribute_kind=21, - Subscript_kind=22, Starred_kind=23, Name_kind=24, - List_kind=25, Tuple_kind=26}; + Await_kind=12, Yield_kind=13, YieldFrom_kind=14, + Compare_kind=15, Call_kind=16, Num_kind=17, Str_kind=18, + Bytes_kind=19, NameConstant_kind=20, Ellipsis_kind=21, + Attribute_kind=22, Subscript_kind=23, Starred_kind=24, + Name_kind=25, List_kind=26, Tuple_kind=27}; struct _expr { enum _expr_kind kind; union { @@ -243,6 +264,10 @@ struct _expr { asdl_seq *generators; } GeneratorExp; + struct { + expr_ty value; + } Await; + struct { expr_ty value; } Yield; @@ -402,6 +427,10 @@ mod_ty _Py_Suite(asdl_seq * body, PyArena *arena); stmt_ty _Py_FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * decorator_list, expr_ty returns, int lineno, int col_offset, PyArena *arena); +#define AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_AsyncFunctionDef(a0, a1, a2, a3, a4, a5, a6, a7) +stmt_ty _Py_AsyncFunctionDef(identifier name, arguments_ty args, asdl_seq * + body, asdl_seq * decorator_list, expr_ty returns, + int lineno, int col_offset, PyArena *arena); #define ClassDef(a0, a1, a2, a3, a4, a5, a6, a7) _Py_ClassDef(a0, a1, a2, a3, a4, a5, a6, a7) stmt_ty _Py_ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, asdl_seq * body, asdl_seq * decorator_list, int lineno, @@ -420,6 +449,9 @@ stmt_ty _Py_AugAssign(expr_ty target, operator_ty op, expr_ty value, int #define For(a0, a1, a2, a3, a4, a5, a6) _Py_For(a0, a1, a2, a3, a4, a5, a6) stmt_ty _Py_For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int lineno, int col_offset, PyArena *arena); +#define AsyncFor(a0, a1, a2, a3, a4, a5, a6) _Py_AsyncFor(a0, a1, a2, a3, a4, a5, a6) +stmt_ty _Py_AsyncFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * + orelse, int lineno, int col_offset, PyArena *arena); #define While(a0, a1, a2, a3, a4, a5) _Py_While(a0, a1, a2, a3, a4, a5) stmt_ty _Py_While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int col_offset, PyArena *arena); @@ -429,6 +461,9 @@ stmt_ty _Py_If(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, #define With(a0, a1, a2, a3, a4) _Py_With(a0, a1, a2, a3, a4) stmt_ty _Py_With(asdl_seq * items, asdl_seq * body, int lineno, int col_offset, PyArena *arena); +#define AsyncWith(a0, a1, a2, a3, a4) _Py_AsyncWith(a0, a1, a2, a3, a4) +stmt_ty _Py_AsyncWith(asdl_seq * items, asdl_seq * body, int lineno, int + col_offset, PyArena *arena); #define Raise(a0, a1, a2, a3, a4) _Py_Raise(a0, a1, a2, a3, a4) stmt_ty _Py_Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, PyArena *arena); @@ -491,6 +526,8 @@ expr_ty _Py_DictComp(expr_ty key, expr_ty value, asdl_seq * generators, int #define GeneratorExp(a0, a1, a2, a3, a4) _Py_GeneratorExp(a0, a1, a2, a3, a4) expr_ty _Py_GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, PyArena *arena); +#define Await(a0, a1, a2, a3) _Py_Await(a0, a1, a2, a3) +expr_ty _Py_Await(expr_ty value, int lineno, int col_offset, PyArena *arena); #define Yield(a0, a1, a2, a3) _Py_Yield(a0, a1, a2, a3) expr_ty _Py_Yield(expr_ty value, int lineno, int col_offset, PyArena *arena); #define YieldFrom(a0, a1, a2, a3) _Py_YieldFrom(a0, a1, a2, a3) diff --git a/Include/ceval.h b/Include/ceval.h index 6811367d762..d3292b8e2c7 100644 --- a/Include/ceval.h +++ b/Include/ceval.h @@ -23,6 +23,8 @@ PyAPI_FUNC(PyObject *) PyEval_CallMethod(PyObject *obj, #ifndef Py_LIMITED_API PyAPI_FUNC(void) PyEval_SetProfile(Py_tracefunc, PyObject *); PyAPI_FUNC(void) PyEval_SetTrace(Py_tracefunc, PyObject *); +PyAPI_FUNC(void) PyEval_SetCoroutineWrapper(PyObject *wrapper); +PyAPI_FUNC(PyObject *) PyEval_GetCoroutineWrapper(); #endif struct _frame; /* Avoid including frameobject.h */ diff --git a/Include/code.h b/Include/code.h index 131de501dcc..56e6ec18afe 100644 --- a/Include/code.h +++ b/Include/code.h @@ -51,6 +51,11 @@ typedef struct { */ #define CO_NOFREE 0x0040 +/* The CO_COROUTINE flag is set for coroutine functions (defined with + ``async def`` keywords) */ +#define CO_COROUTINE 0x0080 +#define CO_ITERABLE_COROUTINE 0x0100 + /* These are no longer used. */ #if 0 #define CO_GENERATOR_ALLOWED 0x1000 diff --git a/Include/genobject.h b/Include/genobject.h index 23571e663bc..ee0b1305a7d 100644 --- a/Include/genobject.h +++ b/Include/genobject.h @@ -38,6 +38,12 @@ PyAPI_DATA(PyTypeObject) PyGen_Type; #define PyGen_Check(op) PyObject_TypeCheck(op, &PyGen_Type) #define PyGen_CheckExact(op) (Py_TYPE(op) == &PyGen_Type) +#define PyGen_CheckCoroutineExact(op) (PyGen_CheckExact(op) && \ + (((PyCodeObject*) \ + ((PyGenObject*)op)->gi_code) \ + ->co_flags & (CO_ITERABLE_COROUTINE | \ + CO_COROUTINE))) + PyAPI_FUNC(PyObject *) PyGen_New(struct _frame *); PyAPI_FUNC(PyObject *) PyGen_NewWithQualName(struct _frame *, PyObject *name, PyObject *qualname); @@ -46,6 +52,7 @@ PyAPI_FUNC(int) _PyGen_FetchStopIterationValue(PyObject **); PyObject *_PyGen_Send(PyGenObject *, PyObject *); PyAPI_FUNC(void) _PyGen_Finalize(PyObject *self); +PyObject *_PyGen_GetAwaitableIter(PyObject *o); #ifdef __cplusplus } diff --git a/Include/graminit.h b/Include/graminit.h index 3ec949ab462..d030bc3d293 100644 --- a/Include/graminit.h +++ b/Include/graminit.h @@ -6,79 +6,82 @@ #define decorator 259 #define decorators 260 #define decorated 261 -#define funcdef 262 -#define parameters 263 -#define typedargslist 264 -#define tfpdef 265 -#define varargslist 266 -#define vfpdef 267 -#define stmt 268 -#define simple_stmt 269 -#define small_stmt 270 -#define expr_stmt 271 -#define testlist_star_expr 272 -#define augassign 273 -#define del_stmt 274 -#define pass_stmt 275 -#define flow_stmt 276 -#define break_stmt 277 -#define continue_stmt 278 -#define return_stmt 279 -#define yield_stmt 280 -#define raise_stmt 281 -#define import_stmt 282 -#define import_name 283 -#define import_from 284 -#define import_as_name 285 -#define dotted_as_name 286 -#define import_as_names 287 -#define dotted_as_names 288 -#define dotted_name 289 -#define global_stmt 290 -#define nonlocal_stmt 291 -#define assert_stmt 292 -#define compound_stmt 293 -#define if_stmt 294 -#define while_stmt 295 -#define for_stmt 296 -#define try_stmt 297 -#define with_stmt 298 -#define with_item 299 -#define except_clause 300 -#define suite 301 -#define test 302 -#define test_nocond 303 -#define lambdef 304 -#define lambdef_nocond 305 -#define or_test 306 -#define and_test 307 -#define not_test 308 -#define comparison 309 -#define comp_op 310 -#define star_expr 311 -#define expr 312 -#define xor_expr 313 -#define and_expr 314 -#define shift_expr 315 -#define arith_expr 316 -#define term 317 -#define factor 318 -#define power 319 -#define atom 320 -#define testlist_comp 321 -#define trailer 322 -#define subscriptlist 323 -#define subscript 324 -#define sliceop 325 -#define exprlist 326 -#define testlist 327 -#define dictorsetmaker 328 -#define classdef 329 -#define arglist 330 -#define argument 331 -#define comp_iter 332 -#define comp_for 333 -#define comp_if 334 -#define encoding_decl 335 -#define yield_expr 336 -#define yield_arg 337 +#define async_funcdef 262 +#define funcdef 263 +#define parameters 264 +#define typedargslist 265 +#define tfpdef 266 +#define varargslist 267 +#define vfpdef 268 +#define stmt 269 +#define simple_stmt 270 +#define small_stmt 271 +#define expr_stmt 272 +#define testlist_star_expr 273 +#define augassign 274 +#define del_stmt 275 +#define pass_stmt 276 +#define flow_stmt 277 +#define break_stmt 278 +#define continue_stmt 279 +#define return_stmt 280 +#define yield_stmt 281 +#define raise_stmt 282 +#define import_stmt 283 +#define import_name 284 +#define import_from 285 +#define import_as_name 286 +#define dotted_as_name 287 +#define import_as_names 288 +#define dotted_as_names 289 +#define dotted_name 290 +#define global_stmt 291 +#define nonlocal_stmt 292 +#define assert_stmt 293 +#define compound_stmt 294 +#define async_stmt 295 +#define if_stmt 296 +#define while_stmt 297 +#define for_stmt 298 +#define try_stmt 299 +#define with_stmt 300 +#define with_item 301 +#define except_clause 302 +#define suite 303 +#define test 304 +#define test_nocond 305 +#define lambdef 306 +#define lambdef_nocond 307 +#define or_test 308 +#define and_test 309 +#define not_test 310 +#define comparison 311 +#define comp_op 312 +#define star_expr 313 +#define expr 314 +#define xor_expr 315 +#define and_expr 316 +#define shift_expr 317 +#define arith_expr 318 +#define term 319 +#define factor 320 +#define power 321 +#define atom_expr 322 +#define atom 323 +#define testlist_comp 324 +#define trailer 325 +#define subscriptlist 326 +#define subscript 327 +#define sliceop 328 +#define exprlist 329 +#define testlist 330 +#define dictorsetmaker 331 +#define classdef 332 +#define arglist 333 +#define argument 334 +#define comp_iter 335 +#define comp_for 336 +#define comp_if 337 +#define encoding_decl 338 +#define yield_expr 339 +#define yield_arg 340 diff --git a/Include/object.h b/Include/object.h index 5716f66ffde..e1734386c67 100644 --- a/Include/object.h +++ b/Include/object.h @@ -173,6 +173,9 @@ typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t); typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *); typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *); typedef int(*objobjargproc)(PyObject *, PyObject *, PyObject *); +typedef PyObject *(*getawaitablefunc) (PyObject *); +typedef PyObject *(*getaiterfunc) (PyObject *); +typedef PyObject *(*aiternextfunc) (PyObject *); #ifndef Py_LIMITED_API /* buffer interface */ @@ -301,6 +304,11 @@ typedef struct { objobjargproc mp_ass_subscript; } PyMappingMethods; +typedef struct { + getawaitablefunc am_await; + getaiterfunc am_aiter; + aiternextfunc am_anext; +} PyAsyncMethods; typedef struct { getbufferproc bf_getbuffer; @@ -346,7 +354,7 @@ typedef struct _typeobject { printfunc tp_print; getattrfunc tp_getattr; setattrfunc tp_setattr; - void *tp_reserved; /* formerly known as tp_compare */ + PyAsyncMethods *tp_as_async; /* formerly known as tp_compare or tp_reserved */ reprfunc tp_repr; /* Method suites for standard classes */ @@ -453,6 +461,7 @@ typedef struct _heaptypeobject { /* Note: there's a dependency on the order of these members in slotptr() in typeobject.c . */ PyTypeObject ht_type; + PyAsyncMethods as_async; PyNumberMethods as_number; PyMappingMethods as_mapping; PySequenceMethods as_sequence; /* as_sequence comes after as_mapping, diff --git a/Include/opcode.h b/Include/opcode.h index 510dfe86a92..e2a3ba96a48 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -7,68 +7,73 @@ extern "C" { /* Instruction opcodes for compiled code */ -#define POP_TOP 1 -#define ROT_TWO 2 -#define ROT_THREE 3 -#define DUP_TOP 4 -#define DUP_TOP_TWO 5 -#define NOP 9 -#define UNARY_POSITIVE 10 -#define UNARY_NEGATIVE 11 -#define UNARY_NOT 12 -#define UNARY_INVERT 15 -#define BINARY_MATRIX_MULTIPLY 16 -#define INPLACE_MATRIX_MULTIPLY 17 -#define BINARY_POWER 19 -#define BINARY_MULTIPLY 20 -#define BINARY_MODULO 22 -#define BINARY_ADD 23 -#define BINARY_SUBTRACT 24 -#define BINARY_SUBSCR 25 -#define BINARY_FLOOR_DIVIDE 26 -#define BINARY_TRUE_DIVIDE 27 -#define INPLACE_FLOOR_DIVIDE 28 -#define INPLACE_TRUE_DIVIDE 29 -#define STORE_MAP 54 -#define INPLACE_ADD 55 -#define INPLACE_SUBTRACT 56 -#define INPLACE_MULTIPLY 57 -#define INPLACE_MODULO 59 -#define STORE_SUBSCR 60 -#define DELETE_SUBSCR 61 -#define BINARY_LSHIFT 62 -#define BINARY_RSHIFT 63 -#define BINARY_AND 64 -#define BINARY_XOR 65 -#define BINARY_OR 66 -#define INPLACE_POWER 67 -#define GET_ITER 68 -#define PRINT_EXPR 70 -#define LOAD_BUILD_CLASS 71 -#define YIELD_FROM 72 -#define INPLACE_LSHIFT 75 -#define INPLACE_RSHIFT 76 -#define INPLACE_AND 77 -#define INPLACE_XOR 78 -#define INPLACE_OR 79 -#define BREAK_LOOP 80 -#define WITH_CLEANUP 81 -#define RETURN_VALUE 83 -#define IMPORT_STAR 84 -#define YIELD_VALUE 86 -#define POP_BLOCK 87 -#define END_FINALLY 88 -#define POP_EXCEPT 89 -#define HAVE_ARGUMENT 90 -#define STORE_NAME 90 -#define DELETE_NAME 91 -#define UNPACK_SEQUENCE 92 -#define FOR_ITER 93 -#define UNPACK_EX 94 -#define STORE_ATTR 95 -#define DELETE_ATTR 96 -#define STORE_GLOBAL 97 -#define DELETE_GLOBAL 98 +#define POP_TOP 1 +#define ROT_TWO 2 +#define ROT_THREE 3 +#define DUP_TOP 4 +#define DUP_TOP_TWO 5 +#define NOP 9 +#define UNARY_POSITIVE 10 +#define UNARY_NEGATIVE 11 +#define UNARY_NOT 12 +#define UNARY_INVERT 15 +#define BINARY_MATRIX_MULTIPLY 16 +#define INPLACE_MATRIX_MULTIPLY 17 +#define BINARY_POWER 19 +#define BINARY_MULTIPLY 20 +#define BINARY_MODULO 22 +#define BINARY_ADD 23 +#define BINARY_SUBTRACT 24 +#define BINARY_SUBSCR 25 +#define BINARY_FLOOR_DIVIDE 26 +#define BINARY_TRUE_DIVIDE 27 +#define INPLACE_FLOOR_DIVIDE 28 +#define INPLACE_TRUE_DIVIDE 29 +#define GET_AITER 50 +#define GET_ANEXT 51 +#define BEFORE_ASYNC_WITH 52 +#define STORE_MAP 54 +#define INPLACE_ADD 55 +#define INPLACE_SUBTRACT 56 +#define INPLACE_MULTIPLY 57 +#define INPLACE_MODULO 59 +#define STORE_SUBSCR 60 +#define DELETE_SUBSCR 61 +#define BINARY_LSHIFT 62 +#define BINARY_RSHIFT 63 +#define BINARY_AND 64 +#define BINARY_XOR 65 +#define BINARY_OR 66 +#define INPLACE_POWER 67 +#define GET_ITER 68 +#define PRINT_EXPR 70 +#define LOAD_BUILD_CLASS 71 +#define YIELD_FROM 72 +#define GET_AWAITABLE 73 +#define INPLACE_LSHIFT 75 +#define INPLACE_RSHIFT 76 +#define INPLACE_AND 77 +#define INPLACE_XOR 78 +#define INPLACE_OR 79 +#define BREAK_LOOP 80 +#define WITH_CLEANUP_START 81 +#define WITH_CLEANUP_FINISH 82 +#define RETURN_VALUE 83 +#define IMPORT_STAR 84 +#define YIELD_VALUE 86 +#define POP_BLOCK 87 +#define END_FINALLY 88 +#define POP_EXCEPT 89 +#define HAVE_ARGUMENT 90 +#define STORE_NAME 90 +#define DELETE_NAME 91 +#define UNPACK_SEQUENCE 92 +#define FOR_ITER 93 +#define UNPACK_EX 94 +#define STORE_ATTR 95 +#define DELETE_ATTR 96 +#define STORE_GLOBAL 97 +#define DELETE_GLOBAL 98 #define LOAD_CONST 100 #define LOAD_NAME 101 #define BUILD_TUPLE 102 @@ -116,6 +121,7 @@ extern "C" { #define BUILD_MAP_UNPACK_WITH_CALL 151 #define BUILD_TUPLE_UNPACK 152 #define BUILD_SET_UNPACK 153 +#define SETUP_ASYNC_WITH 154 /* EXCEPT_HANDLER is a special, implicit block type which is created when entering an except handler. It is not an opcode but we define it here diff --git a/Include/pyerrors.h b/Include/pyerrors.h index 8a7e4f419ce..a0198659a1a 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -147,6 +147,7 @@ PyAPI_FUNC(void) _PyErr_ChainExceptions(PyObject *, PyObject *, PyObject *); PyAPI_DATA(PyObject *) PyExc_BaseException; PyAPI_DATA(PyObject *) PyExc_Exception; +PyAPI_DATA(PyObject *) PyExc_StopAsyncIteration; PyAPI_DATA(PyObject *) PyExc_StopIteration; PyAPI_DATA(PyObject *) PyExc_GeneratorExit; PyAPI_DATA(PyObject *) PyExc_ArithmeticError; diff --git a/Include/pystate.h b/Include/pystate.h index 8539b65013d..2ee81df7b58 100644 --- a/Include/pystate.h +++ b/Include/pystate.h @@ -134,6 +134,8 @@ typedef struct _ts { void (*on_delete)(void *); void *on_delete_data; + PyObject *coroutine_wrapper; + /* XXX signal handlers should also be here */ } PyThreadState; diff --git a/Include/token.h b/Include/token.h index 2b213eeb32f..595afa01580 100644 --- a/Include/token.h +++ b/Include/token.h @@ -64,8 +64,10 @@ extern "C" { #define ELLIPSIS 52 /* Don't forget to update the table _PyParser_TokenNames in tokenizer.c! */ #define OP 53 -#define ERRORTOKEN 54 -#define N_TOKENS 55 +#define AWAIT 54 +#define ASYNC 55 +#define ERRORTOKEN 56 +#define N_TOKENS 57 /* Special definitions for cooperation with parser */ diff --git a/Include/typeslots.h b/Include/typeslots.h index da2e87cb719..f56749dbedb 100644 --- a/Include/typeslots.h +++ b/Include/typeslots.h @@ -76,3 +76,6 @@ #define Py_tp_free 74 #define Py_nb_matrix_multiply 75 #define Py_nb_inplace_matrix_multiply 76 +#define Py_am_await 77 +#define Py_am_aiter 78 +#define Py_am_anext 79 diff --git a/Lib/_collections_abc.py b/Lib/_collections_abc.py index cb87e6b730d..ea804031d5e 100644 --- a/Lib/_collections_abc.py +++ b/Lib/_collections_abc.py @@ -9,7 +9,8 @@ Unit tests are in test_collections. from abc import ABCMeta, abstractmethod import sys -__all__ = ["Hashable", "Iterable", "Iterator", "Generator", +__all__ = ["Awaitable", "Coroutine", + "Hashable", "Iterable", "Iterator", "Generator", "Sized", "Container", "Callable", "Set", "MutableSet", "Mapping", "MutableMapping", @@ -74,6 +75,79 @@ class Hashable(metaclass=ABCMeta): return NotImplemented +class _CoroutineMeta(ABCMeta): + + def __instancecheck__(cls, instance): + # 0x80 = CO_COROUTINE + # 0x100 = CO_ITERABLE_COROUTINE + # We don't want to import 'inspect' module, as + # a dependency for 'collections.abc'. + CO_COROUTINES = 0x80 | 0x100 + + if (isinstance(instance, generator) and + instance.gi_code.co_flags & CO_COROUTINES): + + return True + + return super().__instancecheck__(instance) + + +class Coroutine(metaclass=_CoroutineMeta): + + __slots__ = () + + @abstractmethod + def send(self, value): + """Send a value into the coroutine. + Return next yielded value or raise StopIteration. + """ + raise StopIteration + + @abstractmethod + def throw(self, typ, val=None, tb=None): + """Raise an exception in the coroutine. + Return next yielded value or raise StopIteration. + """ + if val is None: + if tb is None: + raise typ + val = typ() + if tb is not None: + val = val.with_traceback(tb) + raise val + + def close(self): + """Raise GeneratorExit inside coroutine. + """ + try: + self.throw(GeneratorExit) + except (GeneratorExit, StopIteration): + pass + else: + raise RuntimeError("coroutine ignored GeneratorExit") + + +class Awaitable(metaclass=_CoroutineMeta): + + __slots__ = () + + @abstractmethod + def __await__(self): + yield + + @classmethod + def __subclasshook__(cls, C): + if cls is Awaitable: + for B in C.__mro__: + if "__await__" in B.__dict__: + if B.__dict__["__await__"]: + return True + break + return NotImplemented + +Awaitable.register(Coroutine) + + class Iterable(metaclass=ABCMeta): __slots__ = () diff --git a/Lib/dis.py b/Lib/dis.py index d215bc59e4a..af37cdf0c67 100644 --- a/Lib/dis.py +++ b/Lib/dis.py @@ -84,6 +84,8 @@ COMPILER_FLAG_NAMES = { 16: "NESTED", 32: "GENERATOR", 64: "NOFREE", + 128: "COROUTINE", + 256: "ITERABLE_COROUTINE", } def pretty_flags(flags): diff --git a/Lib/inspect.py b/Lib/inspect.py index 60890f2eec0..e52d86e5cc9 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -33,6 +33,7 @@ __author__ = ('Ka-Ping Yee ', import ast import dis +import collections.abc import enum import importlib.machinery import itertools @@ -174,7 +175,22 @@ def isgeneratorfunction(object): See help(isfunction) for attributes listing.""" return bool((isfunction(object) or ismethod(object)) and - object.__code__.co_flags & CO_GENERATOR) + object.__code__.co_flags & CO_GENERATOR and + not object.__code__.co_flags & CO_COROUTINE) + +def iscoroutinefunction(object): + """Return true if the object is a coroutine function. + + Coroutine functions are defined with "async def" syntax, + or generators decorated with "types.coroutine". + """ + return bool((isfunction(object) or ismethod(object)) and + object.__code__.co_flags & (CO_ITERABLE_COROUTINE | + CO_COROUTINE)) + +def isawaitable(object): + """Return true if the object can be used in "await" expression.""" + return isinstance(object, collections.abc.Awaitable) def isgenerator(object): """Return true if the object is a generator. @@ -191,7 +207,13 @@ def isgenerator(object): send resumes the generator and "sends" a value that becomes the result of the current yield-expression throw used to raise an exception inside the generator""" - return isinstance(object, types.GeneratorType) + return (isinstance(object, types.GeneratorType) and + not object.gi_code.co_flags & CO_COROUTINE) + +def iscoroutine(object): + """Return true if the object is a coroutine.""" + return (isinstance(object, types.GeneratorType) and + object.gi_code.co_flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE)) def istraceback(object): """Return true if the object is a traceback. diff --git a/Lib/lib2to3/Grammar.txt b/Lib/lib2to3/Grammar.txt index ce95d26beb6..c954669e8a7 100644 --- a/Lib/lib2to3/Grammar.txt +++ b/Lib/lib2to3/Grammar.txt @@ -33,7 +33,8 @@ eval_input: testlist NEWLINE* ENDMARKER decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE decorators: decorator+ -decorated: decorators (classdef | funcdef) +decorated: decorators (classdef | funcdef | async_funcdef) +async_funcdef: ASYNC funcdef funcdef: 'def' NAME parameters ['->' test] ':' suite parameters: '(' [typedargslist] ')' typedargslist: ((tfpdef ['=' test] ',')* @@ -82,7 +83,8 @@ global_stmt: ('global' | 'nonlocal') NAME (',' NAME)* exec_stmt: 'exec' expr ['in' test [',' test]] assert_stmt: 'assert' test [',' test] -compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated +compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt | with_stmt | funcdef | classdef | decorated | async_stmt +async_stmt: ASYNC (funcdef | with_stmt | for_stmt) if_stmt: 'if' test ':' suite ('elif' test ':' suite)* ['else' ':' suite] while_stmt: 'while' test ':' suite ['else' ':' suite] for_stmt: 'for' exprlist 'in' testlist ':' suite ['else' ':' suite] @@ -121,7 +123,7 @@ shift_expr: arith_expr (('<<'|'>>') arith_expr)* arith_expr: term (('+'|'-') term)* term: factor (('*'|'@'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power -power: atom trailer* ['**' factor] +power: [AWAIT] atom trailer* ['**' factor] atom: ('(' [yield_expr|testlist_gexp] ')' | '[' [listmaker] ']' | '{' [dictsetmaker] '}' | diff --git a/Lib/lib2to3/pgen2/token.py b/Lib/lib2to3/pgen2/token.py index 7599396611b..1a679554d2d 100755 --- a/Lib/lib2to3/pgen2/token.py +++ b/Lib/lib2to3/pgen2/token.py @@ -62,8 +62,10 @@ OP = 52 COMMENT = 53 NL = 54 RARROW = 55 -ERRORTOKEN = 56 -N_TOKENS = 57 +AWAIT = 56 +ASYNC = 57 +ERRORTOKEN = 58 +N_TOKENS = 59 NT_OFFSET = 256 #--end constants-- diff --git a/Lib/lib2to3/pgen2/tokenize.py b/Lib/lib2to3/pgen2/tokenize.py index 3dd1ee99680..690fec4921a 100644 --- a/Lib/lib2to3/pgen2/tokenize.py +++ b/Lib/lib2to3/pgen2/tokenize.py @@ -220,7 +220,7 @@ class Untokenizer: for tok in iterable: toknum, tokval = tok[:2] - if toknum in (NAME, NUMBER): + if toknum in (NAME, NUMBER, ASYNC, AWAIT): tokval += ' ' if toknum == INDENT: @@ -366,6 +366,10 @@ def generate_tokens(readline): contline = None indents = [0] + # 'stashed' and 'ctx' are used for async/await parsing + stashed = None + ctx = [('sync', 0)] + while 1: # loop over lines in stream try: line = readline() @@ -406,6 +410,10 @@ def generate_tokens(readline): pos = pos + 1 if pos == max: break + if stashed: + yield stashed + stashed = None + if line[pos] in '#\r\n': # skip comments or blank lines if line[pos] == '#': comment_token = line[pos:].rstrip('\r\n') @@ -449,9 +457,15 @@ def generate_tokens(readline): newline = NEWLINE if parenlev > 0: newline = NL + if stashed: + yield stashed + stashed = None yield (newline, token, spos, epos, line) elif initial == '#': assert not token.endswith("\n") + if stashed: + yield stashed + stashed = None yield (COMMENT, token, spos, epos, line) elif token in triple_quoted: endprog = endprogs[token] @@ -459,6 +473,9 @@ def generate_tokens(readline): if endmatch: # all on one line pos = endmatch.end(0) token = line[start:pos] + if stashed: + yield stashed + stashed = None yield (STRING, token, spos, (lnum, pos), line) else: strstart = (lnum, start) # multiple lines @@ -476,22 +493,64 @@ def generate_tokens(readline): contline = line break else: # ordinary string + if stashed: + yield stashed + stashed = None yield (STRING, token, spos, epos, line) elif initial in namechars: # ordinary name - yield (NAME, token, spos, epos, line) + if token in ('async', 'await'): + if ctx[-1][0] == 'async' and ctx[-1][1] < indents[-1]: + yield (ASYNC if token == 'async' else AWAIT, + token, spos, epos, line) + continue + + tok = (NAME, token, spos, epos, line) + if token == 'async' and not stashed: + stashed = tok + continue + + if token == 'def': + if (stashed + and stashed[0] == NAME + and stashed[1] == 'async'): + + ctx.append(('async', indents[-1])) + + yield (ASYNC, stashed[1], + stashed[2], stashed[3], + stashed[4]) + stashed = None + else: + ctx.append(('sync', indents[-1])) + + if stashed: + yield stashed + stashed = None + + yield tok elif initial == '\\': # continued stmt # This yield is new; needed for better idempotency: + if stashed: + yield stashed + stashed = None yield (NL, token, spos, (lnum, pos), line) continued = 1 else: if initial in '([{': parenlev = parenlev + 1 elif initial in ')]}': parenlev = parenlev - 1 + if stashed: + yield stashed + stashed = None yield (OP, token, spos, epos, line) else: yield (ERRORTOKEN, line[pos], (lnum, pos), (lnum, pos+1), line) pos = pos + 1 + if stashed: + yield stashed + stashed = None + for indent in indents[1:]: # pop remaining indent levels yield (DEDENT, '', (lnum, 0), (lnum, 0), '') yield (ENDMARKER, '', (lnum, 0), (lnum, 0), '') diff --git a/Lib/lib2to3/tests/test_parser.py b/Lib/lib2to3/tests/test_parser.py index 5bb9d2becb7..107b5ab68b8 100644 --- a/Lib/lib2to3/tests/test_parser.py +++ b/Lib/lib2to3/tests/test_parser.py @@ -55,12 +55,42 @@ class TestMatrixMultiplication(GrammarTest): class TestYieldFrom(GrammarTest): - def test_matrix_multiplication_operator(self): + def test_yield_from(self): self.validate("yield from x") self.validate("(yield from x) + y") self.invalid_syntax("yield from") +class TestAsyncAwait(GrammarTest): + def test_await_expr(self): + self.validate("""async def foo(): + await x + """) + + self.invalid_syntax("await x") + self.invalid_syntax("""def foo(): + await x""") + + def test_async_var(self): + self.validate("""async = 1""") + self.validate("""await = 1""") + self.validate("""def async(): pass""") + + def test_async_with(self): + self.validate("""async def foo(): + async for a in b: pass""") + + self.invalid_syntax("""def foo(): + async for a in b: pass""") + + def test_async_for(self): + self.validate("""async def foo(): + async with a: pass""") + + self.invalid_syntax("""def foo(): + async with a: pass""") + + class TestRaiseChanges(GrammarTest): def test_2x_style_1(self): self.validate("raise") diff --git a/Lib/opcode.py b/Lib/opcode.py index c25afd44a75..24e6c3f3d2e 100644 --- a/Lib/opcode.py +++ b/Lib/opcode.py @@ -85,6 +85,10 @@ def_op('BINARY_TRUE_DIVIDE', 27) def_op('INPLACE_FLOOR_DIVIDE', 28) def_op('INPLACE_TRUE_DIVIDE', 29) +def_op('GET_AITER', 50) +def_op('GET_ANEXT', 51) +def_op('BEFORE_ASYNC_WITH', 52) + def_op('STORE_MAP', 54) def_op('INPLACE_ADD', 55) def_op('INPLACE_SUBTRACT', 56) @@ -104,6 +108,7 @@ def_op('GET_ITER', 68) def_op('PRINT_EXPR', 70) def_op('LOAD_BUILD_CLASS', 71) def_op('YIELD_FROM', 72) +def_op('GET_AWAITABLE', 73) def_op('INPLACE_LSHIFT', 75) def_op('INPLACE_RSHIFT', 76) @@ -111,7 +116,8 @@ def_op('INPLACE_AND', 77) def_op('INPLACE_XOR', 78) def_op('INPLACE_OR', 79) def_op('BREAK_LOOP', 80) -def_op('WITH_CLEANUP', 81) +def_op('WITH_CLEANUP_START', 81) +def_op('WITH_CLEANUP_FINISH', 82) def_op('RETURN_VALUE', 83) def_op('IMPORT_STAR', 84) @@ -197,6 +203,8 @@ def_op('MAP_ADD', 147) def_op('LOAD_CLASSDEREF', 148) hasfree.append(148) +jrel_op('SETUP_ASYNC_WITH', 154) + def_op('EXTENDED_ARG', 144) EXTENDED_ARG = 144 diff --git a/Lib/test/badsyntax_async1.py b/Lib/test/badsyntax_async1.py new file mode 100644 index 00000000000..970445d45f0 --- /dev/null +++ b/Lib/test/badsyntax_async1.py @@ -0,0 +1,3 @@ +async def foo(): + def foo(a=await something()): + pass diff --git a/Lib/test/badsyntax_async2.py b/Lib/test/badsyntax_async2.py new file mode 100644 index 00000000000..1e62a3e50af --- /dev/null +++ b/Lib/test/badsyntax_async2.py @@ -0,0 +1,3 @@ +async def foo(): + def foo(a:await something()): + pass diff --git a/Lib/test/badsyntax_async3.py b/Lib/test/badsyntax_async3.py new file mode 100644 index 00000000000..dde1bc59557 --- /dev/null +++ b/Lib/test/badsyntax_async3.py @@ -0,0 +1,2 @@ +async def foo(): + [i async for i in els] diff --git a/Lib/test/badsyntax_async4.py b/Lib/test/badsyntax_async4.py new file mode 100644 index 00000000000..4afda406e9c --- /dev/null +++ b/Lib/test/badsyntax_async4.py @@ -0,0 +1,2 @@ +async def foo(): + async def foo(): await something() diff --git a/Lib/test/badsyntax_async5.py b/Lib/test/badsyntax_async5.py new file mode 100644 index 00000000000..9d19af6109c --- /dev/null +++ b/Lib/test/badsyntax_async5.py @@ -0,0 +1,2 @@ +def foo(): + await something() diff --git a/Lib/test/badsyntax_async6.py b/Lib/test/badsyntax_async6.py new file mode 100644 index 00000000000..cb0a23d5f0c --- /dev/null +++ b/Lib/test/badsyntax_async6.py @@ -0,0 +1,2 @@ +async def foo(): + yield diff --git a/Lib/test/badsyntax_async7.py b/Lib/test/badsyntax_async7.py new file mode 100644 index 00000000000..51e4bf9b5b2 --- /dev/null +++ b/Lib/test/badsyntax_async7.py @@ -0,0 +1,2 @@ +async def foo(): + yield from [] diff --git a/Lib/test/badsyntax_async8.py b/Lib/test/badsyntax_async8.py new file mode 100644 index 00000000000..3c636f9ac4a --- /dev/null +++ b/Lib/test/badsyntax_async8.py @@ -0,0 +1,2 @@ +async def foo(): + await await fut diff --git a/Lib/test/badsyntax_async9.py b/Lib/test/badsyntax_async9.py new file mode 100644 index 00000000000..d033b281148 --- /dev/null +++ b/Lib/test/badsyntax_async9.py @@ -0,0 +1,2 @@ +async def foo(): + await diff --git a/Lib/test/exception_hierarchy.txt b/Lib/test/exception_hierarchy.txt index 1c1f69f36b3..6632826afaa 100644 --- a/Lib/test/exception_hierarchy.txt +++ b/Lib/test/exception_hierarchy.txt @@ -4,6 +4,7 @@ BaseException +-- GeneratorExit +-- Exception +-- StopIteration + +-- StopAsyncIteration +-- ArithmeticError | +-- FloatingPointError | +-- OverflowError diff --git a/Lib/test/test_ast.py b/Lib/test/test_ast.py index 1d9de2c4b57..c220a3cac2c 100644 --- a/Lib/test/test_ast.py +++ b/Lib/test/test_ast.py @@ -106,6 +106,12 @@ exec_tests = [ "{r for l in x if g}", # setcomp with naked tuple "{r for l,m in x}", + # AsyncFunctionDef + "async def f():\n await something()", + # AsyncFor + "async def f():\n async for e in i: 1\n else: 2", + # AsyncWith + "async def f():\n async with a as b: 1", ] # These are compiled through "single" @@ -974,6 +980,9 @@ exec_results = [ ('Module', [('Expr', (1, 0), ('DictComp', (1, 1), ('Name', (1, 1), 'a', ('Load',)), ('Name', (1, 5), 'b', ('Load',)), [('comprehension', ('Tuple', (1, 11), [('Name', (1, 11), 'v', ('Store',)), ('Name', (1, 13), 'w', ('Store',))], ('Store',)), ('Name', (1, 18), 'x', ('Load',)), [])]))]), ('Module', [('Expr', (1, 0), ('SetComp', (1, 1), ('Name', (1, 1), 'r', ('Load',)), [('comprehension', ('Name', (1, 7), 'l', ('Store',)), ('Name', (1, 12), 'x', ('Load',)), [('Name', (1, 17), 'g', ('Load',))])]))]), ('Module', [('Expr', (1, 0), ('SetComp', (1, 1), ('Name', (1, 1), 'r', ('Load',)), [('comprehension', ('Tuple', (1, 7), [('Name', (1, 7), 'l', ('Store',)), ('Name', (1, 9), 'm', ('Store',))], ('Store',)), ('Name', (1, 14), 'x', ('Load',)), [])]))]), +('Module', [('AsyncFunctionDef', (1, 6), 'f', ('arguments', [], None, [], [], None, []), [('Expr', (2, 1), ('Await', (2, 1), ('Call', (2, 7), ('Name', (2, 7), 'something', ('Load',)), [], [])))], [], None)]), +('Module', [('AsyncFunctionDef', (1, 6), 'f', ('arguments', [], None, [], [], None, []), [('AsyncFor', (2, 7), ('Name', (2, 11), 'e', ('Store',)), ('Name', (2, 16), 'i', ('Load',)), [('Expr', (2, 19), ('Num', (2, 19), 1))], [('Expr', (3, 7), ('Num', (3, 7), 2))])], [], None)]), +('Module', [('AsyncFunctionDef', (1, 6), 'f', ('arguments', [], None, [], [], None, []), [('AsyncWith', (2, 7), [('withitem', ('Name', (2, 12), 'a', ('Load',)), ('Name', (2, 17), 'b', ('Store',)))], [('Expr', (2, 20), ('Num', (2, 20), 1))])], [], None)]), ] single_results = [ ('Interactive', [('Expr', (1, 0), ('BinOp', (1, 0), ('Num', (1, 0), 1), ('Add',), ('Num', (1, 2), 2)))]), diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py index 5b2e81fd0c9..ad94fddfbeb 100644 --- a/Lib/test/test_collections.py +++ b/Lib/test/test_collections.py @@ -11,9 +11,11 @@ from random import randrange, shuffle import keyword import re import sys +import types from collections import UserDict from collections import ChainMap from collections import deque +from collections.abc import Awaitable, Coroutine from collections.abc import Hashable, Iterable, Iterator, Generator from collections.abc import Sized, Container, Callable from collections.abc import Set, MutableSet @@ -446,6 +448,84 @@ class ABCTestCase(unittest.TestCase): class TestOneTrickPonyABCs(ABCTestCase): + def test_Awaitable(self): + def gen(): + yield + + @types.coroutine + def coro(): + yield + + async def new_coro(): + pass + + class Bar: + def __await__(self): + yield + + class MinimalCoro(Coroutine): + def send(self, value): + return value + def throw(self, typ, val=None, tb=None): + super().throw(typ, val, tb) + + non_samples = [None, int(), gen(), object()] + for x in non_samples: + self.assertNotIsInstance(x, Awaitable) + self.assertFalse(issubclass(type(x), Awaitable), repr(type(x))) + + samples = [Bar(), MinimalCoro()] + for x in samples: + self.assertIsInstance(x, Awaitable) + self.assertTrue(issubclass(type(x), Awaitable)) + + c = coro() + self.assertIsInstance(c, Awaitable) + c.close() # awoid RuntimeWarning that coro() was not awaited + + c = new_coro() + self.assertIsInstance(c, Awaitable) + c.close() # awoid RuntimeWarning that coro() was not awaited + + def test_Coroutine(self): + def gen(): + yield + + @types.coroutine + def coro(): + yield + + async def new_coro(): + pass + + class Bar: + def __await__(self): + yield + + class MinimalCoro(Coroutine): + def send(self, value): + return value + def throw(self, typ, val=None, tb=None): + super().throw(typ, val, tb) + + non_samples = [None, int(), gen(), object(), Bar()] + for x in non_samples: + self.assertNotIsInstance(x, Coroutine) + self.assertFalse(issubclass(type(x), Coroutine), repr(type(x))) + + samples = [MinimalCoro()] + for x in samples: + self.assertIsInstance(x, Awaitable) + self.assertTrue(issubclass(type(x), Awaitable)) + + c = coro() + self.assertIsInstance(c, Coroutine) + c.close() # awoid RuntimeWarning that coro() was not awaited + + c = new_coro() + self.assertIsInstance(c, Coroutine) + c.close() # awoid RuntimeWarning that coro() was not awaited + def test_Hashable(self): # Check some non-hashables non_samples = [bytearray(), list(), set(), dict()] diff --git a/Lib/test/test_coroutines.py b/Lib/test/test_coroutines.py new file mode 100644 index 00000000000..2a452257d74 --- /dev/null +++ b/Lib/test/test_coroutines.py @@ -0,0 +1,862 @@ +import contextlib +import gc +import sys +import types +import unittest +import warnings +from test import support + + +class AsyncYieldFrom: + def __init__(self, obj): + self.obj = obj + + def __await__(self): + yield from self.obj + + +class AsyncYield: + def __init__(self, value): + self.value = value + + def __await__(self): + yield self.value + + +def run_async(coro): + assert coro.__class__ is types.GeneratorType + + buffer = [] + result = None + while True: + try: + buffer.append(coro.send(None)) + except StopIteration as ex: + result = ex.args[0] if ex.args else None + break + return buffer, result + + +@contextlib.contextmanager +def silence_coro_gc(): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + yield + support.gc_collect() + + +class AsyncBadSyntaxTest(unittest.TestCase): + + def test_badsyntax_1(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async1 + + def test_badsyntax_2(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async2 + + def test_badsyntax_3(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async3 + + def test_badsyntax_4(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async4 + + def test_badsyntax_5(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async5 + + def test_badsyntax_6(self): + with self.assertRaisesRegex( + SyntaxError, "'yield' inside async function"): + + import test.badsyntax_async6 + + def test_badsyntax_7(self): + with self.assertRaisesRegex( + SyntaxError, "'yield from' inside async function"): + + import test.badsyntax_async7 + + def test_badsyntax_8(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async8 + + def test_badsyntax_9(self): + with self.assertRaisesRegex(SyntaxError, 'invalid syntax'): + import test.badsyntax_async9 + + +class CoroutineTest(unittest.TestCase): + + def test_gen_1(self): + def gen(): yield + self.assertFalse(hasattr(gen, '__await__')) + + def test_func_1(self): + async def foo(): + return 10 + + f = foo() + self.assertIsInstance(f, types.GeneratorType) + self.assertTrue(bool(foo.__code__.co_flags & 0x80)) + self.assertTrue(bool(foo.__code__.co_flags & 0x20)) + self.assertTrue(bool(f.gi_code.co_flags & 0x80)) + self.assertTrue(bool(f.gi_code.co_flags & 0x20)) + self.assertEqual(run_async(f), ([], 10)) + + def bar(): pass + self.assertFalse(bool(bar.__code__.co_flags & 0x80)) + + def test_func_2(self): + async def foo(): + raise StopIteration + + with self.assertRaisesRegex( + RuntimeError, "generator raised StopIteration"): + + run_async(foo()) + + def test_func_3(self): + async def foo(): + raise StopIteration + + with silence_coro_gc(): + self.assertRegex(repr(foo()), '^$') + + def test_func_4(self): + async def foo(): + raise StopIteration + + check = lambda: self.assertRaisesRegex( + TypeError, "coroutine-objects do not support iteration") + + with check(): + list(foo()) + + with check(): + tuple(foo()) + + with check(): + sum(foo()) + + with check(): + iter(foo()) + + with check(): + next(foo()) + + with silence_coro_gc(), check(): + for i in foo(): + pass + + with silence_coro_gc(), check(): + [i for i in foo()] + + def test_func_5(self): + @types.coroutine + def bar(): + yield 1 + + async def foo(): + await bar() + + check = lambda: self.assertRaisesRegex( + TypeError, "coroutine-objects do not support iteration") + + with check(): + for el in foo(): pass + + # the following should pass without an error + for el in bar(): + self.assertEqual(el, 1) + self.assertEqual([el for el in bar()], [1]) + self.assertEqual(tuple(bar()), (1,)) + self.assertEqual(next(iter(bar())), 1) + + def test_func_6(self): + @types.coroutine + def bar(): + yield 1 + yield 2 + + async def foo(): + await bar() + + f = foo() + self.assertEquals(f.send(None), 1) + self.assertEquals(f.send(None), 2) + with self.assertRaises(StopIteration): + f.send(None) + + def test_func_7(self): + async def bar(): + return 10 + + def foo(): + yield from bar() + + with silence_coro_gc(), self.assertRaisesRegex( + TypeError, + "cannot 'yield from' a coroutine object from a generator"): + + list(foo()) + + def test_func_8(self): + @types.coroutine + def bar(): + return (yield from foo()) + + async def foo(): + return 'spam' + + self.assertEqual(run_async(bar()), ([], 'spam') ) + + def test_func_9(self): + async def foo(): pass + + with self.assertWarnsRegex( + RuntimeWarning, "coroutine '.*test_func_9.*foo' was never awaited"): + + foo() + support.gc_collect() + + def test_await_1(self): + + async def foo(): + await 1 + with self.assertRaisesRegex(TypeError, "object int can.t.*await"): + run_async(foo()) + + def test_await_2(self): + async def foo(): + await [] + with self.assertRaisesRegex(TypeError, "object list can.t.*await"): + run_async(foo()) + + def test_await_3(self): + async def foo(): + await AsyncYieldFrom([1, 2, 3]) + + self.assertEqual(run_async(foo()), ([1, 2, 3], None)) + + def test_await_4(self): + async def bar(): + return 42 + + async def foo(): + return await bar() + + self.assertEqual(run_async(foo()), ([], 42)) + + def test_await_5(self): + class Awaitable: + def __await__(self): + return + + async def foo(): + return (await Awaitable()) + + with self.assertRaisesRegex( + TypeError, "__await__.*returned non-iterator of type"): + + run_async(foo()) + + def test_await_6(self): + class Awaitable: + def __await__(self): + return iter([52]) + + async def foo(): + return (await Awaitable()) + + self.assertEqual(run_async(foo()), ([52], None)) + + def test_await_7(self): + class Awaitable: + def __await__(self): + yield 42 + return 100 + + async def foo(): + return (await Awaitable()) + + self.assertEqual(run_async(foo()), ([42], 100)) + + def test_await_8(self): + class Awaitable: + pass + + async def foo(): + return (await Awaitable()) + + with self.assertRaisesRegex( + TypeError, "object Awaitable can't be used in 'await' expression"): + + run_async(foo()) + + def test_await_9(self): + def wrap(): + return bar + + async def bar(): + return 42 + + async def foo(): + b = bar() + + db = {'b': lambda: wrap} + + class DB: + b = wrap + + return (await bar() + await wrap()() + await db['b']()()() + + await bar() * 1000 + await DB.b()()) + + async def foo2(): + return -await bar() + + self.assertEqual(run_async(foo()), ([], 42168)) + self.assertEqual(run_async(foo2()), ([], -42)) + + def test_await_10(self): + async def baz(): + return 42 + + async def bar(): + return baz() + + async def foo(): + return await (await bar()) + + self.assertEqual(run_async(foo()), ([], 42)) + + def test_await_11(self): + def ident(val): + return val + + async def bar(): + return 'spam' + + async def foo(): + return ident(val=await bar()) + + async def foo2(): + return await bar(), 'ham' + + self.assertEqual(run_async(foo2()), ([], ('spam', 'ham'))) + + def test_await_12(self): + async def coro(): + return 'spam' + + class Awaitable: + def __await__(self): + return coro() + + async def foo(): + return await Awaitable() + + with self.assertRaisesRegex( + TypeError, "__await__\(\) returned a coroutine"): + + run_async(foo()) + + def test_await_13(self): + class Awaitable: + def __await__(self): + return self + + async def foo(): + return await Awaitable() + + with self.assertRaisesRegex( + TypeError, "__await__.*returned non-iterator of type"): + + run_async(foo()) + + def test_with_1(self): + class Manager: + def __init__(self, name): + self.name = name + + async def __aenter__(self): + await AsyncYieldFrom(['enter-1-' + self.name, + 'enter-2-' + self.name]) + return self + + async def __aexit__(self, *args): + await AsyncYieldFrom(['exit-1-' + self.name, + 'exit-2-' + self.name]) + + if self.name == 'B': + return True + + + async def foo(): + async with Manager("A") as a, Manager("B") as b: + await AsyncYieldFrom([('managers', a.name, b.name)]) + 1/0 + + f = foo() + result, _ = run_async(f) + + self.assertEqual( + result, ['enter-1-A', 'enter-2-A', 'enter-1-B', 'enter-2-B', + ('managers', 'A', 'B'), + 'exit-1-B', 'exit-2-B', 'exit-1-A', 'exit-2-A'] + ) + + async def foo(): + async with Manager("A") as a, Manager("C") as c: + await AsyncYieldFrom([('managers', a.name, c.name)]) + 1/0 + + with self.assertRaises(ZeroDivisionError): + run_async(foo()) + + def test_with_2(self): + class CM: + def __aenter__(self): + pass + + async def foo(): + async with CM(): + pass + + with self.assertRaisesRegex(AttributeError, '__aexit__'): + run_async(foo()) + + def test_with_3(self): + class CM: + def __aexit__(self): + pass + + async def foo(): + async with CM(): + pass + + with self.assertRaisesRegex(AttributeError, '__aenter__'): + run_async(foo()) + + def test_with_4(self): + class CM: + def __enter__(self): + pass + + def __exit__(self): + pass + + async def foo(): + async with CM(): + pass + + with self.assertRaisesRegex(AttributeError, '__aexit__'): + run_async(foo()) + + def test_with_5(self): + # While this test doesn't make a lot of sense, + # it's a regression test for an early bug with opcodes + # generation + + class CM: + async def __aenter__(self): + return self + + async def __aexit__(self, *exc): + pass + + async def func(): + async with CM(): + assert (1, ) == 1 + + with self.assertRaises(AssertionError): + run_async(func()) + + def test_with_6(self): + class CM: + def __aenter__(self): + return 123 + + def __aexit__(self, *e): + return 456 + + async def foo(): + async with CM(): + pass + + with self.assertRaisesRegex( + TypeError, "object int can't be used in 'await' expression"): + # it's important that __aexit__ wasn't called + run_async(foo()) + + def test_with_7(self): + class CM: + async def __aenter__(self): + return self + + def __aexit__(self, *e): + return 456 + + async def foo(): + async with CM(): + pass + + with self.assertRaisesRegex( + TypeError, "object int can't be used in 'await' expression"): + + run_async(foo()) + + def test_for_1(self): + aiter_calls = 0 + + class AsyncIter: + def __init__(self): + self.i = 0 + + async def __aiter__(self): + nonlocal aiter_calls + aiter_calls += 1 + return self + + async def __anext__(self): + self.i += 1 + + if not (self.i % 10): + await AsyncYield(self.i * 10) + + if self.i > 100: + raise StopAsyncIteration + + return self.i, self.i + + + buffer = [] + async def test1(): + async for i1, i2 in AsyncIter(): + buffer.append(i1 + i2) + + yielded, _ = run_async(test1()) + # Make sure that __aiter__ was called only once + self.assertEqual(aiter_calls, 1) + self.assertEqual(yielded, [i * 100 for i in range(1, 11)]) + self.assertEqual(buffer, [i*2 for i in range(1, 101)]) + + + buffer = [] + async def test2(): + nonlocal buffer + async for i in AsyncIter(): + buffer.append(i[0]) + if i[0] == 20: + break + else: + buffer.append('what?') + buffer.append('end') + + yielded, _ = run_async(test2()) + # Make sure that __aiter__ was called only once + self.assertEqual(aiter_calls, 2) + self.assertEqual(yielded, [100, 200]) + self.assertEqual(buffer, [i for i in range(1, 21)] + ['end']) + + + buffer = [] + async def test3(): + nonlocal buffer + async for i in AsyncIter(): + if i[0] > 20: + continue + buffer.append(i[0]) + else: + buffer.append('what?') + buffer.append('end') + + yielded, _ = run_async(test3()) + # Make sure that __aiter__ was called only once + self.assertEqual(aiter_calls, 3) + self.assertEqual(yielded, [i * 100 for i in range(1, 11)]) + self.assertEqual(buffer, [i for i in range(1, 21)] + + ['what?', 'end']) + + def test_for_2(self): + tup = (1, 2, 3) + refs_before = sys.getrefcount(tup) + + async def foo(): + async for i in tup: + print('never going to happen') + + with self.assertRaisesRegex( + TypeError, "async for' requires an object.*__aiter__.*tuple"): + + run_async(foo()) + + self.assertEqual(sys.getrefcount(tup), refs_before) + + def test_for_3(self): + class I: + def __aiter__(self): + return self + + aiter = I() + refs_before = sys.getrefcount(aiter) + + async def foo(): + async for i in aiter: + print('never going to happen') + + with self.assertRaisesRegex( + TypeError, + "async for' received an invalid object.*__aiter.*\: I"): + + run_async(foo()) + + self.assertEqual(sys.getrefcount(aiter), refs_before) + + def test_for_4(self): + class I: + async def __aiter__(self): + return self + + def __anext__(self): + return () + + aiter = I() + refs_before = sys.getrefcount(aiter) + + async def foo(): + async for i in aiter: + print('never going to happen') + + with self.assertRaisesRegex( + TypeError, + "async for' received an invalid object.*__anext__.*tuple"): + + run_async(foo()) + + self.assertEqual(sys.getrefcount(aiter), refs_before) + + def test_for_5(self): + class I: + async def __aiter__(self): + return self + + def __anext__(self): + return 123 + + async def foo(): + async for i in I(): + print('never going to happen') + + with self.assertRaisesRegex( + TypeError, + "async for' received an invalid object.*__anext.*int"): + + run_async(foo()) + + def test_for_6(self): + I = 0 + + class Manager: + async def __aenter__(self): + nonlocal I + I += 10000 + + async def __aexit__(self, *args): + nonlocal I + I += 100000 + + class Iterable: + def __init__(self): + self.i = 0 + + async def __aiter__(self): + return self + + async def __anext__(self): + if self.i > 10: + raise StopAsyncIteration + self.i += 1 + return self.i + + ############## + + manager = Manager() + iterable = Iterable() + mrefs_before = sys.getrefcount(manager) + irefs_before = sys.getrefcount(iterable) + + async def main(): + nonlocal I + + async with manager: + async for i in iterable: + I += 1 + I += 1000 + + run_async(main()) + self.assertEqual(I, 111011) + + self.assertEqual(sys.getrefcount(manager), mrefs_before) + self.assertEqual(sys.getrefcount(iterable), irefs_before) + + ############## + + async def main(): + nonlocal I + + async with Manager(): + async for i in Iterable(): + I += 1 + I += 1000 + + async with Manager(): + async for i in Iterable(): + I += 1 + I += 1000 + + run_async(main()) + self.assertEqual(I, 333033) + + ############## + + async def main(): + nonlocal I + + async with Manager(): + I += 100 + async for i in Iterable(): + I += 1 + else: + I += 10000000 + I += 1000 + + async with Manager(): + I += 100 + async for i in Iterable(): + I += 1 + else: + I += 10000000 + I += 1000 + + run_async(main()) + self.assertEqual(I, 20555255) + + +class CoroAsyncIOCompatTest(unittest.TestCase): + + def test_asyncio_1(self): + import asyncio + + class MyException(Exception): + pass + + buffer = [] + + class CM: + async def __aenter__(self): + buffer.append(1) + await asyncio.sleep(0.01) + buffer.append(2) + return self + + async def __aexit__(self, exc_type, exc_val, exc_tb): + await asyncio.sleep(0.01) + buffer.append(exc_type.__name__) + + async def f(): + async with CM() as c: + await asyncio.sleep(0.01) + raise MyException + buffer.append('unreachable') + + loop = asyncio.get_event_loop() + try: + loop.run_until_complete(f()) + except MyException: + pass + finally: + loop.close() + + self.assertEqual(buffer, [1, 2, 'MyException']) + + +class SysSetCoroWrapperTest(unittest.TestCase): + + def test_set_wrapper_1(self): + async def foo(): + return 'spam' + + wrapped = None + def wrap(gen): + nonlocal wrapped + wrapped = gen + return gen + + self.assertIsNone(sys.get_coroutine_wrapper()) + + sys.set_coroutine_wrapper(wrap) + self.assertIs(sys.get_coroutine_wrapper(), wrap) + try: + f = foo() + self.assertTrue(wrapped) + + self.assertEqual(run_async(f), ([], 'spam')) + finally: + sys.set_coroutine_wrapper(None) + + self.assertIsNone(sys.get_coroutine_wrapper()) + + wrapped = None + with silence_coro_gc(): + foo() + self.assertFalse(wrapped) + + def test_set_wrapper_2(self): + self.assertIsNone(sys.get_coroutine_wrapper()) + with self.assertRaisesRegex(TypeError, "callable expected, got int"): + sys.set_coroutine_wrapper(1) + self.assertIsNone(sys.get_coroutine_wrapper()) + + +class CAPITest(unittest.TestCase): + + def test_tp_await_1(self): + from _testcapi import awaitType as at + + async def foo(): + future = at(iter([1])) + return (await future) + + self.assertEqual(foo().send(None), 1) + + def test_tp_await_2(self): + # Test tp_await to __await__ mapping + from _testcapi import awaitType as at + future = at(iter([1])) + self.assertEqual(next(future.__await__()), 1) + + def test_tp_await_3(self): + from _testcapi import awaitType as at + + async def foo(): + future = at(1) + return (await future) + + with self.assertRaisesRegex( + TypeError, "__await__.*returned non-iterator of type 'int'"): + self.assertEqual(foo().send(None), 1) + + +def test_main(): + support.run_unittest(AsyncBadSyntaxTest, + CoroutineTest, + CoroAsyncIOCompatTest, + SysSetCoroWrapperTest, + CAPITest) + + +if __name__=="__main__": + test_main() diff --git a/Lib/test/test_dis.py b/Lib/test/test_dis.py index 7890b1fc92c..421bbad6c60 100644 --- a/Lib/test/test_dis.py +++ b/Lib/test/test_dis.py @@ -480,6 +480,24 @@ Constants: Names: 0: x""" + +async def async_def(): + await 1 + async for a in b: pass + async with c as d: pass + +code_info_async_def = """\ +Name: async_def +Filename: (.*) +Argument count: 0 +Kw-only arguments: 0 +Number of locals: 2 +Stack size: 17 +Flags: OPTIMIZED, NEWLOCALS, GENERATOR, NOFREE, COROUTINE +Constants: + 0: None + 1: 1""" + class CodeInfoTests(unittest.TestCase): test_pairs = [ (dis.code_info, code_info_code_info), @@ -488,6 +506,7 @@ class CodeInfoTests(unittest.TestCase): (expr_str, code_info_expr_str), (simple_stmt_str, code_info_simple_stmt_str), (compound_stmt_str, code_info_compound_stmt_str), + (async_def, code_info_async_def) ] def test_code_info(self): @@ -697,7 +716,7 @@ expected_opinfo_jumpy = [ Instruction(opname='LOAD_CONST', opcode=100, arg=6, argval='Who let lolcatz into this test suite?', argrepr="'Who let lolcatz into this test suite?'", offset=135, starts_line=None, is_jump_target=False), Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', offset=138, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=141, starts_line=None, is_jump_target=False), - Instruction(opname='SETUP_FINALLY', opcode=122, arg=72, argval=217, argrepr='to 217', offset=142, starts_line=20, is_jump_target=True), + Instruction(opname='SETUP_FINALLY', opcode=122, arg=73, argval=218, argrepr='to 218', offset=142, starts_line=20, is_jump_target=True), Instruction(opname='SETUP_EXCEPT', opcode=121, arg=12, argval=160, argrepr='to 160', offset=145, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=5, argval=1, argrepr='1', offset=148, starts_line=21, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=7, argval=0, argrepr='0', offset=151, starts_line=None, is_jump_target=False), @@ -717,7 +736,7 @@ expected_opinfo_jumpy = [ Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', offset=179, starts_line=None, is_jump_target=False), Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=182, starts_line=None, is_jump_target=False), Instruction(opname='POP_EXCEPT', opcode=89, arg=None, argval=None, argrepr='', offset=183, starts_line=None, is_jump_target=False), - Instruction(opname='JUMP_FORWARD', opcode=110, arg=26, argval=213, argrepr='to 213', offset=184, starts_line=None, is_jump_target=False), + Instruction(opname='JUMP_FORWARD', opcode=110, arg=27, argval=214, argrepr='to 214', offset=184, starts_line=None, is_jump_target=False), Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None, argrepr='', offset=187, starts_line=None, is_jump_target=True), Instruction(opname='LOAD_FAST', opcode=124, arg=0, argval='i', argrepr='i', offset=188, starts_line=25, is_jump_target=True), Instruction(opname='SETUP_WITH', opcode=143, arg=17, argval=211, argrepr='to 211', offset=191, starts_line=None, is_jump_target=False), @@ -728,17 +747,18 @@ expected_opinfo_jumpy = [ Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=206, starts_line=None, is_jump_target=False), Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=207, starts_line=None, is_jump_target=False), Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=208, starts_line=None, is_jump_target=False), - Instruction(opname='WITH_CLEANUP', opcode=81, arg=None, argval=None, argrepr='', offset=211, starts_line=None, is_jump_target=True), - Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None, argrepr='', offset=212, starts_line=None, is_jump_target=False), - Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=213, starts_line=None, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=214, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=217, starts_line=28, is_jump_target=True), - Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=220, starts_line=None, is_jump_target=False), - Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', offset=223, starts_line=None, is_jump_target=False), - Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=226, starts_line=None, is_jump_target=False), - Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None, argrepr='', offset=227, starts_line=None, is_jump_target=False), - Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=228, starts_line=None, is_jump_target=False), - Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=231, starts_line=None, is_jump_target=False), + Instruction(opname='WITH_CLEANUP_START', opcode=81, arg=None, argval=None, argrepr='', offset=211, starts_line=None, is_jump_target=True), + Instruction(opname='WITH_CLEANUP_FINISH', opcode=82, arg=None, argval=None, argrepr='', offset=212, starts_line=None, is_jump_target=False), + Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None, argrepr='', offset=213, starts_line=None, is_jump_target=False), + Instruction(opname='POP_BLOCK', opcode=87, arg=None, argval=None, argrepr='', offset=214, starts_line=None, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=215, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_GLOBAL', opcode=116, arg=1, argval='print', argrepr='print', offset=218, starts_line=28, is_jump_target=True), + Instruction(opname='LOAD_CONST', opcode=100, arg=10, argval="OK, now we're done", argrepr='"OK, now we\'re done"', offset=221, starts_line=None, is_jump_target=False), + Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', offset=224, starts_line=None, is_jump_target=False), + Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=227, starts_line=None, is_jump_target=False), + Instruction(opname='END_FINALLY', opcode=88, arg=None, argval=None, argrepr='', offset=228, starts_line=None, is_jump_target=False), + Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval=None, argrepr='None', offset=229, starts_line=None, is_jump_target=False), + Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=232, starts_line=None, is_jump_target=False), ] # One last piece of inspect fodder to check the default line number handling diff --git a/Lib/test/test_grammar.py b/Lib/test/test_grammar.py index 28b1f044f2c..e46a232677c 100644 --- a/Lib/test/test_grammar.py +++ b/Lib/test/test_grammar.py @@ -2,6 +2,7 @@ # This just tests whether the parser accepts them all. from test.support import check_syntax_error +import inspect import unittest import sys # testing import * @@ -1034,6 +1035,92 @@ class GrammarTests(unittest.TestCase): m @= 42 self.assertEqual(m.other, 42) + def test_async_await(self): + async = 1 + await = 2 + self.assertEqual(async, 1) + + def async(): + nonlocal await + await = 10 + async() + self.assertEqual(await, 10) + + self.assertFalse(bool(async.__code__.co_flags & inspect.CO_COROUTINE)) + + async def test(): + def sum(): + async = 1 + await = 41 + return async + await + + if 1: + await someobj() + + self.assertEqual(test.__name__, 'test') + self.assertTrue(bool(test.__code__.co_flags & inspect.CO_COROUTINE)) + + def decorator(func): + setattr(func, '_marked', True) + return func + + @decorator + async def test2(): + return 22 + self.assertTrue(test2._marked) + self.assertEqual(test2.__name__, 'test2') + self.assertTrue(bool(test2.__code__.co_flags & inspect.CO_COROUTINE)) + + def test_async_for(self): + class Done(Exception): pass + + class AIter: + async def __aiter__(self): + return self + async def __anext__(self): + raise StopAsyncIteration + + async def foo(): + async for i in AIter(): + pass + async for i, j in AIter(): + pass + async for i in AIter(): + pass + else: + pass + raise Done + + with self.assertRaises(Done): + foo().send(None) + + def test_async_with(self): + class Done(Exception): pass + + class manager: + async def __aenter__(self): + return (1, 2) + async def __aexit__(self, *exc): + return False + + async def foo(): + async with manager(): + pass + async with manager() as x: + pass + async with manager() as (x, y): + pass + async with manager(), manager(): + pass + async with manager() as x, manager() as y: + pass + async with manager() as x, manager(): + pass + raise Done + + with self.assertRaises(Done): + foo().send(None) + if __name__ == '__main__': unittest.main() diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py index 43ef75556bc..20df755a46b 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -18,6 +18,7 @@ import textwrap import unicodedata import unittest import unittest.mock +import warnings try: from concurrent.futures import ThreadPoolExecutor @@ -62,14 +63,16 @@ class IsTestBase(unittest.TestCase): predicates = set([inspect.isbuiltin, inspect.isclass, inspect.iscode, inspect.isframe, inspect.isfunction, inspect.ismethod, inspect.ismodule, inspect.istraceback, - inspect.isgenerator, inspect.isgeneratorfunction]) + inspect.isgenerator, inspect.isgeneratorfunction, + inspect.iscoroutine, inspect.iscoroutinefunction]) def istest(self, predicate, exp): obj = eval(exp) self.assertTrue(predicate(obj), '%s(%s)' % (predicate.__name__, exp)) for other in self.predicates - set([predicate]): - if predicate == inspect.isgeneratorfunction and\ + if (predicate == inspect.isgeneratorfunction or \ + predicate == inspect.iscoroutinefunction) and \ other == inspect.isfunction: continue self.assertFalse(other(obj), 'not %s(%s)' % (other.__name__, exp)) @@ -78,13 +81,21 @@ def generator_function_example(self): for i in range(2): yield i +async def coroutine_function_example(self): + return 'spam' + +@types.coroutine +def gen_coroutine_function_example(self): + yield + return 'spam' + class TestPredicates(IsTestBase): - def test_sixteen(self): + def test_eightteen(self): count = len([x for x in dir(inspect) if x.startswith('is')]) # This test is here for remember you to update Doc/library/inspect.rst # which claims there are 16 such functions - expected = 16 + expected = 19 err_msg = "There are %d (not %d) is* functions" % (count, expected) self.assertEqual(count, expected, err_msg) @@ -115,11 +126,64 @@ class TestPredicates(IsTestBase): self.istest(inspect.isdatadescriptor, 'collections.defaultdict.default_factory') self.istest(inspect.isgenerator, '(x for x in range(2))') self.istest(inspect.isgeneratorfunction, 'generator_function_example') + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + self.istest(inspect.iscoroutine, 'coroutine_function_example(1)') + self.istest(inspect.iscoroutinefunction, 'coroutine_function_example') + if hasattr(types, 'MemberDescriptorType'): self.istest(inspect.ismemberdescriptor, 'datetime.timedelta.days') else: self.assertFalse(inspect.ismemberdescriptor(datetime.timedelta.days)) + def test_iscoroutine(self): + gen_coro = gen_coroutine_function_example(1) + coro = coroutine_function_example(1) + + self.assertTrue( + inspect.iscoroutinefunction(gen_coroutine_function_example)) + self.assertTrue(inspect.iscoroutine(gen_coro)) + + self.assertTrue( + inspect.isgeneratorfunction(gen_coroutine_function_example)) + self.assertTrue(inspect.isgenerator(gen_coro)) + + self.assertTrue( + inspect.iscoroutinefunction(coroutine_function_example)) + self.assertTrue(inspect.iscoroutine(coro)) + + self.assertFalse( + inspect.isgeneratorfunction(coroutine_function_example)) + self.assertFalse(inspect.isgenerator(coro)) + + coro.close(); gen_coro.close() # silence warnings + + def test_isawaitable(self): + def gen(): yield + self.assertFalse(inspect.isawaitable(gen())) + + coro = coroutine_function_example(1) + gen_coro = gen_coroutine_function_example(1) + + self.assertTrue( + inspect.isawaitable(coro)) + self.assertTrue( + inspect.isawaitable(gen_coro)) + + class Future: + def __await__(): + pass + self.assertTrue(inspect.isawaitable(Future())) + self.assertFalse(inspect.isawaitable(Future)) + + class NotFuture: pass + not_fut = NotFuture() + not_fut.__await__ = lambda: None + self.assertFalse(inspect.isawaitable(not_fut)) + + coro.close(); gen_coro.close() # silence warnings + def test_isroutine(self): self.assertTrue(inspect.isroutine(mod.spam)) self.assertTrue(inspect.isroutine([].count)) diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py index 686638c6415..e8ca497144c 100644 --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -49,6 +49,21 @@ class MinidomTest(unittest.TestCase): t = node.wholeText self.confirm(t == s, "looking for %r, found %r" % (s, t)) + def testDocumentAsyncAttr(self): + doc = Document() + self.assertFalse(doc.async_) + with self.assertWarns(DeprecationWarning): + self.assertFalse(getattr(doc, 'async', True)) + with self.assertWarns(DeprecationWarning): + setattr(doc, 'async', True) + with self.assertWarns(DeprecationWarning): + self.assertTrue(getattr(doc, 'async', False)) + self.assertTrue(doc.async_) + + self.assertFalse(Document.async_) + with self.assertWarns(DeprecationWarning): + self.assertFalse(getattr(Document, 'async', True)) + def testParseFromBinaryFile(self): with open(tstfile, 'rb') as file: dom = parse(file) diff --git a/Lib/test/test_parser.py b/Lib/test/test_parser.py index 56b5d950f7a..7082273b8f6 100644 --- a/Lib/test/test_parser.py +++ b/Lib/test/test_parser.py @@ -63,6 +63,22 @@ class RoundtripLegalSyntaxTestCase(unittest.TestCase): " if (yield):\n" " yield x\n") + def test_await_statement(self): + self.check_suite("async def f():\n await smth()") + self.check_suite("async def f():\n foo = await smth()") + self.check_suite("async def f():\n foo, bar = await smth()") + self.check_suite("async def f():\n (await smth())") + self.check_suite("async def f():\n foo((await smth()))") + self.check_suite("async def f():\n await foo(); return 42") + + def test_async_with_statement(self): + self.check_suite("async def f():\n async with 1: pass") + self.check_suite("async def f():\n async with a as b, c as d: pass") + + def test_async_for_statement(self): + self.check_suite("async def f():\n async for i in (): pass") + self.check_suite("async def f():\n async for i, b in (): pass") + def test_nonlocal_statement(self): self.check_suite("def f():\n" " x = 0\n" diff --git a/Lib/test/test_pickle.py b/Lib/test/test_pickle.py index f5add272de5..a9853c1dab6 100644 --- a/Lib/test/test_pickle.py +++ b/Lib/test/test_pickle.py @@ -351,7 +351,9 @@ class CompatPickleTests(unittest.TestCase): for name, exc in get_exceptions(builtins): with self.subTest(name): - if exc in (BlockingIOError, ResourceWarning): + if exc in (BlockingIOError, + ResourceWarning, + StopAsyncIteration): continue if exc is not OSError and issubclass(exc, OSError): self.assertEqual(reverse_mapping('builtins', name), diff --git a/Lib/test/test_sys.py b/Lib/test/test_sys.py index 6d2763b1490..494a53bf24d 100644 --- a/Lib/test/test_sys.py +++ b/Lib/test/test_sys.py @@ -1025,9 +1025,9 @@ class SizeofTest(unittest.TestCase): # static type: PyTypeObject s = vsize('P2n15Pl4Pn9Pn11PIP') check(int, s) - # (PyTypeObject + PyNumberMethods + PyMappingMethods + + # (PyTypeObject + PyAsyncMethods + PyNumberMethods + PyMappingMethods + # PySequenceMethods + PyBufferProcs + 4P) - s = vsize('P2n17Pl4Pn9Pn11PIP') + struct.calcsize('34P 3P 10P 2P 4P') + s = vsize('P2n17Pl4Pn9Pn11PIP') + struct.calcsize('34P 3P 3P 10P 2P 4P') # Separate block for PyDictKeysObject with 4 entries s += struct.calcsize("2nPn") + 4*struct.calcsize("n2P") # class diff --git a/Lib/test/test_tokenize.py b/Lib/test/test_tokenize.py index 03f614879f3..ed75171c387 100644 --- a/Lib/test/test_tokenize.py +++ b/Lib/test/test_tokenize.py @@ -641,6 +641,192 @@ Legacy unicode literals: NAME 'grün' (2, 0) (2, 4) OP '=' (2, 5) (2, 6) STRING "U'green'" (2, 7) (2, 15) + +Async/await extension: + + >>> dump_tokens("async = 1") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + OP '=' (1, 6) (1, 7) + NUMBER '1' (1, 8) (1, 9) + + >>> dump_tokens("a = (async = 1)") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'a' (1, 0) (1, 1) + OP '=' (1, 2) (1, 3) + OP '(' (1, 4) (1, 5) + NAME 'async' (1, 5) (1, 10) + OP '=' (1, 11) (1, 12) + NUMBER '1' (1, 13) (1, 14) + OP ')' (1, 14) (1, 15) + + >>> dump_tokens("async()") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + OP '(' (1, 5) (1, 6) + OP ')' (1, 6) (1, 7) + + >>> dump_tokens("class async(Bar):pass") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'class' (1, 0) (1, 5) + NAME 'async' (1, 6) (1, 11) + OP '(' (1, 11) (1, 12) + NAME 'Bar' (1, 12) (1, 15) + OP ')' (1, 15) (1, 16) + OP ':' (1, 16) (1, 17) + NAME 'pass' (1, 17) (1, 21) + + >>> dump_tokens("class async:pass") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'class' (1, 0) (1, 5) + NAME 'async' (1, 6) (1, 11) + OP ':' (1, 11) (1, 12) + NAME 'pass' (1, 12) (1, 16) + + >>> dump_tokens("await = 1") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'await' (1, 0) (1, 5) + OP '=' (1, 6) (1, 7) + NUMBER '1' (1, 8) (1, 9) + + >>> dump_tokens("foo.async") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'foo' (1, 0) (1, 3) + OP '.' (1, 3) (1, 4) + NAME 'async' (1, 4) (1, 9) + + >>> dump_tokens("async for a in b: pass") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + NAME 'for' (1, 6) (1, 9) + NAME 'a' (1, 10) (1, 11) + NAME 'in' (1, 12) (1, 14) + NAME 'b' (1, 15) (1, 16) + OP ':' (1, 16) (1, 17) + NAME 'pass' (1, 18) (1, 22) + + >>> dump_tokens("async with a as b: pass") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + NAME 'with' (1, 6) (1, 10) + NAME 'a' (1, 11) (1, 12) + NAME 'as' (1, 13) (1, 15) + NAME 'b' (1, 16) (1, 17) + OP ':' (1, 17) (1, 18) + NAME 'pass' (1, 19) (1, 23) + + >>> dump_tokens("async.foo") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + OP '.' (1, 5) (1, 6) + NAME 'foo' (1, 6) (1, 9) + + >>> dump_tokens("async") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + + >>> dump_tokens("async\\n#comment\\nawait") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + NEWLINE '\\n' (1, 5) (1, 6) + COMMENT '#comment' (2, 0) (2, 8) + NL '\\n' (2, 8) (2, 9) + NAME 'await' (3, 0) (3, 5) + + >>> dump_tokens("async\\n...\\nawait") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + NEWLINE '\\n' (1, 5) (1, 6) + OP '...' (2, 0) (2, 3) + NEWLINE '\\n' (2, 3) (2, 4) + NAME 'await' (3, 0) (3, 5) + + >>> dump_tokens("async\\nawait") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'async' (1, 0) (1, 5) + NEWLINE '\\n' (1, 5) (1, 6) + NAME 'await' (2, 0) (2, 5) + + >>> dump_tokens("foo.async + 1") + ENCODING 'utf-8' (0, 0) (0, 0) + NAME 'foo' (1, 0) (1, 3) + OP '.' (1, 3) (1, 4) + NAME 'async' (1, 4) (1, 9) + OP '+' (1, 10) (1, 11) + NUMBER '1' (1, 12) (1, 13) + + >>> dump_tokens("async def foo(): pass") + ENCODING 'utf-8' (0, 0) (0, 0) + ASYNC 'async' (1, 0) (1, 5) + NAME 'def' (1, 6) (1, 9) + NAME 'foo' (1, 10) (1, 13) + OP '(' (1, 13) (1, 14) + OP ')' (1, 14) (1, 15) + OP ':' (1, 15) (1, 16) + NAME 'pass' (1, 17) (1, 21) + + >>> dump_tokens('''async def foo(): + ... def foo(await): + ... await = 1 + ... if 1: + ... await + ... async += 1 + ... ''') + ENCODING 'utf-8' (0, 0) (0, 0) + ASYNC 'async' (1, 0) (1, 5) + NAME 'def' (1, 6) (1, 9) + NAME 'foo' (1, 10) (1, 13) + OP '(' (1, 13) (1, 14) + OP ')' (1, 14) (1, 15) + OP ':' (1, 15) (1, 16) + NEWLINE '\\n' (1, 16) (1, 17) + INDENT ' ' (2, 0) (2, 2) + NAME 'def' (2, 2) (2, 5) + NAME 'foo' (2, 6) (2, 9) + OP '(' (2, 9) (2, 10) + NAME 'await' (2, 10) (2, 15) + OP ')' (2, 15) (2, 16) + OP ':' (2, 16) (2, 17) + NEWLINE '\\n' (2, 17) (2, 18) + INDENT ' ' (3, 0) (3, 4) + NAME 'await' (3, 4) (3, 9) + OP '=' (3, 10) (3, 11) + NUMBER '1' (3, 12) (3, 13) + NEWLINE '\\n' (3, 13) (3, 14) + DEDENT '' (4, 2) (4, 2) + NAME 'if' (4, 2) (4, 4) + NUMBER '1' (4, 5) (4, 6) + OP ':' (4, 6) (4, 7) + NEWLINE '\\n' (4, 7) (4, 8) + INDENT ' ' (5, 0) (5, 4) + AWAIT 'await' (5, 4) (5, 9) + NEWLINE '\\n' (5, 9) (5, 10) + DEDENT '' (6, 0) (6, 0) + DEDENT '' (6, 0) (6, 0) + NAME 'async' (6, 0) (6, 5) + OP '+=' (6, 6) (6, 8) + NUMBER '1' (6, 9) (6, 10) + NEWLINE '\\n' (6, 10) (6, 11) + + >>> dump_tokens('''async def foo(): + ... async for i in 1: pass''') + ENCODING 'utf-8' (0, 0) (0, 0) + ASYNC 'async' (1, 0) (1, 5) + NAME 'def' (1, 6) (1, 9) + NAME 'foo' (1, 10) (1, 13) + OP '(' (1, 13) (1, 14) + OP ')' (1, 14) (1, 15) + OP ':' (1, 15) (1, 16) + NEWLINE '\\n' (1, 16) (1, 17) + INDENT ' ' (2, 0) (2, 2) + ASYNC 'async' (2, 2) (2, 7) + NAME 'for' (2, 8) (2, 11) + NAME 'i' (2, 12) (2, 13) + NAME 'in' (2, 14) (2, 16) + NUMBER '1' (2, 17) (2, 18) + OP ':' (2, 18) (2, 19) + NAME 'pass' (2, 20) (2, 24) + DEDENT '' (3, 0) (3, 0) """ from test import support diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 8cdecb03d3e..c5a35f9e7e5 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -1,7 +1,8 @@ # Python test set -- part 6, built-in types from test.support import run_with_locale -import collections +import collections.abc +import inspect import pickle import locale import sys @@ -1172,5 +1173,37 @@ class SimpleNamespaceTests(unittest.TestCase): self.assertEqual(ns, ns_roundtrip, pname) +class CoroutineTests(unittest.TestCase): + def test_wrong_args(self): + class Foo: + def __call__(self): + pass + def bar(): pass + + samples = [Foo, Foo(), bar, None, int, 1] + for sample in samples: + with self.assertRaisesRegex(TypeError, 'expects a generator'): + types.coroutine(sample) + + def test_genfunc(self): + def gen(): + yield + + self.assertFalse(isinstance(gen(), collections.abc.Coroutine)) + self.assertFalse(isinstance(gen(), collections.abc.Awaitable)) + + self.assertIs(types.coroutine(gen), gen) + + self.assertTrue(gen.__code__.co_flags & inspect.CO_ITERABLE_COROUTINE) + self.assertFalse(gen.__code__.co_flags & inspect.CO_COROUTINE) + + g = gen() + self.assertTrue(g.gi_code.co_flags & inspect.CO_ITERABLE_COROUTINE) + self.assertFalse(g.gi_code.co_flags & inspect.CO_COROUTINE) + self.assertTrue(isinstance(g, collections.abc.Coroutine)) + self.assertTrue(isinstance(g, collections.abc.Awaitable)) + g.close() # silence warning + + if __name__ == '__main__': unittest.main() diff --git a/Lib/token.py b/Lib/token.py index a95d9b777af..5fdb2221333 100644 --- a/Lib/token.py +++ b/Lib/token.py @@ -64,8 +64,10 @@ ATEQUAL = 50 RARROW = 51 ELLIPSIS = 52 OP = 53 -ERRORTOKEN = 54 -N_TOKENS = 55 +AWAIT = 54 +ASYNC = 55 +ERRORTOKEN = 56 +N_TOKENS = 57 NT_OFFSET = 256 #--end constants-- diff --git a/Lib/tokenize.py b/Lib/tokenize.py index 8bc83fda545..d65325e62e2 100644 --- a/Lib/tokenize.py +++ b/Lib/tokenize.py @@ -274,7 +274,7 @@ class Untokenizer: self.encoding = tokval continue - if toknum in (NAME, NUMBER): + if toknum in (NAME, NUMBER, ASYNC, AWAIT): tokval += ' ' # Insert a space between two consecutive strings @@ -477,6 +477,10 @@ def _tokenize(readline, encoding): contline = None indents = [0] + # 'stashed' and 'ctx' are used for async/await parsing + stashed = None + ctx = [('sync', 0)] + if encoding is not None: if encoding == "utf-8-sig": # BOM will already have been stripped. @@ -552,6 +556,11 @@ def _tokenize(readline, encoding): "unindent does not match any outer indentation level", ("", lnum, pos, line)) indents = indents[:-1] + + cur_indent = indents[-1] + while len(ctx) > 1 and ctx[-1][1] >= cur_indent: + ctx.pop() + yield TokenInfo(DEDENT, '', (lnum, pos), (lnum, pos), line) else: # continued statement @@ -572,10 +581,16 @@ def _tokenize(readline, encoding): (initial == '.' and token != '.' and token != '...')): yield TokenInfo(NUMBER, token, spos, epos, line) elif initial in '\r\n': + if stashed: + yield stashed + stashed = None yield TokenInfo(NL if parenlev > 0 else NEWLINE, token, spos, epos, line) elif initial == '#': assert not token.endswith("\n") + if stashed: + yield stashed + stashed = None yield TokenInfo(COMMENT, token, spos, epos, line) elif token in triple_quoted: endprog = _compile(endpats[token]) @@ -603,7 +618,37 @@ def _tokenize(readline, encoding): else: # ordinary string yield TokenInfo(STRING, token, spos, epos, line) elif initial.isidentifier(): # ordinary name - yield TokenInfo(NAME, token, spos, epos, line) + if token in ('async', 'await'): + if ctx[-1][0] == 'async' and ctx[-1][1] < indents[-1]: + yield TokenInfo( + ASYNC if token == 'async' else AWAIT, + token, spos, epos, line) + continue + + tok = TokenInfo(NAME, token, spos, epos, line) + if token == 'async' and not stashed: + stashed = tok + continue + + if token == 'def': + if (stashed + and stashed.type == NAME + and stashed.string == 'async'): + + ctx.append(('async', indents[-1])) + + yield TokenInfo(ASYNC, stashed.string, + stashed.start, stashed.end, + stashed.line) + stashed = None + else: + ctx.append(('sync', indents[-1])) + + if stashed: + yield stashed + stashed = None + + yield tok elif initial == '\\': # continued stmt continued = 1 else: @@ -611,12 +656,19 @@ def _tokenize(readline, encoding): parenlev += 1 elif initial in ')]}': parenlev -= 1 + if stashed: + yield stashed + stashed = None yield TokenInfo(OP, token, spos, epos, line) else: yield TokenInfo(ERRORTOKEN, line[pos], (lnum, pos), (lnum, pos+1), line) pos += 1 + if stashed: + yield stashed + stashed = None + for indent in indents[1:]: # pop remaining indent levels yield TokenInfo(DEDENT, '', (lnum, 0), (lnum, 0), '') yield TokenInfo(ENDMARKER, '', (lnum, 0), (lnum, 0), '') diff --git a/Lib/types.py b/Lib/types.py index 4fb2defb8ca..49e4d04cb17 100644 --- a/Lib/types.py +++ b/Lib/types.py @@ -43,6 +43,30 @@ MemberDescriptorType = type(FunctionType.__globals__) del sys, _f, _g, _C, # Not for export +_CO_GENERATOR = 0x20 +_CO_ITERABLE_COROUTINE = 0x100 + +def coroutine(func): + """Convert regular generator function to a coroutine.""" + + # TODO: Implement this in C. + + if (not isinstance(func, (FunctionType, MethodType)) or + not isinstance(getattr(func, '__code__', None), CodeType) or + not (func.__code__.co_flags & _CO_GENERATOR)): + raise TypeError('coroutine() expects a generator function') + + co = func.__code__ + func.__code__ = CodeType( + co.co_argcount, co.co_kwonlyargcount, co.co_nlocals, co.co_stacksize, + co.co_flags | _CO_ITERABLE_COROUTINE, + co.co_code, + co.co_consts, co.co_names, co.co_varnames, co.co_filename, co.co_name, + co.co_firstlineno, co.co_lnotab, co.co_freevars, co.co_cellvars) + + return func + + # Provide a PEP 3115 compliant mechanism for class creation def new_class(name, bases=(), kwds=None, exec_body=None): """Create a class object dynamically using the appropriate metaclass.""" diff --git a/Lib/xml/dom/xmlbuilder.py b/Lib/xml/dom/xmlbuilder.py index d7986247091..444f0b2a57d 100644 --- a/Lib/xml/dom/xmlbuilder.py +++ b/Lib/xml/dom/xmlbuilder.py @@ -1,6 +1,7 @@ """Implementation of the DOM Level 3 'LS-Load' feature.""" import copy +import warnings import xml.dom from xml.dom.NodeFilter import NodeFilter @@ -331,13 +332,33 @@ class DOMBuilderFilter: del NodeFilter +class _AsyncDeprecatedProperty: + def warn(self, cls): + clsname = cls.__name__ + warnings.warn( + "{cls}.async is deprecated; use {cls}.async_".format(cls=clsname), + DeprecationWarning) + + def __get__(self, instance, cls): + self.warn(cls) + if instance is not None: + return instance.async_ + return False + + def __set__(self, instance, value): + self.warn(type(instance)) + setattr(instance, 'async_', value) + + class DocumentLS: """Mixin to create documents that conform to the load/save spec.""" - async = False + async = _AsyncDeprecatedProperty() + async_ = False def _get_async(self): return False + def _set_async(self, async): if async: raise xml.dom.NotSupportedErr( @@ -363,6 +384,9 @@ class DocumentLS: return snode.toxml() +del _AsyncDeprecatedProperty + + class DOMImplementationLS: MODE_SYNCHRONOUS = 1 MODE_ASYNCHRONOUS = 2 diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index d77d1dbcd98..77167b2c1e3 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -3944,6 +3944,98 @@ static PyTypeObject matmulType = { }; +typedef struct { + PyObject_HEAD + PyObject *ao_iterator; +} awaitObject; + + +static PyObject * +awaitObject_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + PyObject *v; + awaitObject *ao; + + if (!PyArg_UnpackTuple(args, "awaitObject", 1, 1, &v)) + return NULL; + + ao = (awaitObject *)type->tp_alloc(type, 0); + if (ao == NULL) { + return NULL; + } + + Py_INCREF(v); + ao->ao_iterator = v; + + return (PyObject *)ao; +} + + +static void +awaitObject_dealloc(awaitObject *ao) +{ + Py_CLEAR(ao->ao_iterator); + Py_TYPE(ao)->tp_free(ao); +} + + +static PyObject * +awaitObject_await(awaitObject *ao) +{ + Py_INCREF(ao->ao_iterator); + return ao->ao_iterator; +} + +static PyAsyncMethods awaitType_as_async = { + (getawaitablefunc)awaitObject_await, /* am_await */ + 0, /* am_aiter */ + 0 /* am_anext */ +}; + + +static PyTypeObject awaitType = { + PyVarObject_HEAD_INIT(NULL, 0) + "awaitType", + sizeof(awaitObject), /* tp_basicsize */ + 0, /* tp_itemsize */ + (destructor)awaitObject_dealloc, /* destructor tp_dealloc */ + 0, /* tp_print */ + 0, /* tp_getattr */ + 0, /* tp_setattr */ + &awaitType_as_async, /* tp_as_async */ + 0, /* tp_repr */ + 0, /* tp_as_number */ + 0, /* tp_as_sequence */ + 0, /* tp_as_mapping */ + 0, /* tp_hash */ + 0, /* tp_call */ + 0, /* tp_str */ + PyObject_GenericGetAttr, /* tp_getattro */ + PyObject_GenericSetAttr, /* tp_setattro */ + 0, /* tp_as_buffer */ + 0, /* tp_flags */ + "C level type with tp_as_async", + 0, /* traverseproc tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* tp_methods */ + 0, /* tp_members */ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + awaitObject_new, /* tp_new */ + PyObject_Del, /* tp_free */ +}; + + static struct PyModuleDef _testcapimodule = { PyModuleDef_HEAD_INIT, "_testcapi", @@ -3977,6 +4069,11 @@ PyInit__testcapi(void) Py_INCREF(&matmulType); PyModule_AddObject(m, "matmulType", (PyObject *)&matmulType); + if (PyType_Ready(&awaitType) < 0) + return NULL; + Py_INCREF(&awaitType); + PyModule_AddObject(m, "awaitType", (PyObject *)&awaitType); + PyModule_AddObject(m, "CHAR_MAX", PyLong_FromLong(CHAR_MAX)); PyModule_AddObject(m, "CHAR_MIN", PyLong_FromLong(CHAR_MIN)); PyModule_AddObject(m, "UCHAR_MAX", PyLong_FromLong(UCHAR_MAX)); diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c index 828f46b928c..876e57d9ddc 100644 --- a/Modules/parsermodule.c +++ b/Modules/parsermodule.c @@ -1041,6 +1041,8 @@ VALIDATER(testlist_comp); VALIDATER(yield_expr); VALIDATER(or_test); VALIDATER(test_nocond); VALIDATER(lambdef_nocond); VALIDATER(yield_arg); +VALIDATER(async_funcdef); VALIDATER(async_stmt); +VALIDATER(atom_expr); #undef VALIDATER @@ -1608,6 +1610,7 @@ validate_compound_stmt(node *tree) || (ntype == try_stmt) || (ntype == with_stmt) || (ntype == funcdef) + || (ntype == async_stmt) || (ntype == classdef) || (ntype == decorated)) res = validate_node(tree); @@ -2440,27 +2443,60 @@ validate_factor(node *tree) /* power: * - * power: atom trailer* ('**' factor)* + * power: atom_expr trailer* ['**' factor] */ static int validate_power(node *tree) { - int pos = 1; int nch = NCH(tree); int res = (validate_ntype(tree, power) && (nch >= 1) - && validate_atom(CHILD(tree, 0))); + && validate_atom_expr(CHILD(tree, 0))); - while (res && (pos < nch) && (TYPE(CHILD(tree, pos)) == trailer)) - res = validate_trailer(CHILD(tree, pos++)); - if (res && (pos < nch)) { - if (!is_even(nch - pos)) { + if (nch > 1) { + if (nch != 3) { err_string("illegal number of nodes for 'power'"); return (0); } - for ( ; res && (pos < (nch - 1)); pos += 2) - res = (validate_doublestar(CHILD(tree, pos)) - && validate_factor(CHILD(tree, pos + 1))); + res = (validate_doublestar(CHILD(tree, 1)) + && validate_factor(CHILD(tree, 2))); } + + return (res); +} + + +/* atom_expr: + * + * atom_expr: [AWAIT] atom trailer* + */ +static int +validate_atom_expr(node *tree) +{ + int start = 0; + int nch = NCH(tree); + int res; + int pos; + + res = validate_ntype(tree, atom_expr) && (nch >= 1); + if (!res) { + return (res); + } + + if (TYPE(CHILD(tree, 0)) == AWAIT) { + start = 1; + if (nch < 2) { + err_string("illegal number of nodes for 'atom_expr'"); + return (0); + } + } + + res = validate_atom(CHILD(tree, start)); + if (res) { + pos = start + 1; + while (res && (pos < nch) && (TYPE(CHILD(tree, pos)) == trailer)) + res = validate_trailer(CHILD(tree, pos++)); + } + return (res); } @@ -2482,9 +2518,9 @@ validate_atom(node *tree) if (res && (nch == 3)) { if (TYPE(CHILD(tree, 1))==yield_expr) - res = validate_yield_expr(CHILD(tree, 1)); + res = validate_yield_expr(CHILD(tree, 1)); else - res = validate_testlist_comp(CHILD(tree, 1)); + res = validate_testlist_comp(CHILD(tree, 1)); } break; case LSQB: @@ -2658,6 +2694,55 @@ validate_funcdef(node *tree) return res; } +/* async_funcdef: ASYNC funcdef */ + +static int +validate_async_funcdef(node *tree) +{ + int nch = NCH(tree); + int res = validate_ntype(tree, async_funcdef); + if (res) { + if (nch == 2) { + res = (validate_ntype(CHILD(tree, 0), ASYNC) + && validate_funcdef(CHILD(tree, 1))); + } + else { + res = 0; + err_string("illegal number of children for async_funcdef"); + } + } + return res; +} + + +/* async_stmt: ASYNC (funcdef | with_stmt | for_stmt) */ + +static int +validate_async_stmt(node *tree) +{ + int nch = NCH(tree); + int res = (validate_ntype(tree, async_stmt) + && validate_ntype(CHILD(tree, 0), ASYNC)); + + if (nch != 2) { + res = 0; + err_string("illegal number of children for async_stmt"); + } else { + if (TYPE(CHILD(tree, 1)) == funcdef) { + res = validate_funcdef(CHILD(tree, 1)); + } + else if (TYPE(CHILD(tree, 1)) == with_stmt) { + res = validate_with_stmt(CHILD(tree, 1)); + } + else if (TYPE(CHILD(tree, 1)) == for_stmt) { + res = validate_for(CHILD(tree, 1)); + } + } + + return res; +} + + /* decorated * decorators (classdef | funcdef) @@ -3085,6 +3170,12 @@ validate_node(node *tree) /* * Definition nodes. */ + case async_funcdef: + res = validate_async_funcdef(tree); + break; + case async_stmt: + res = validate_async_stmt(tree); + break; case funcdef: res = validate_funcdef(tree); break; diff --git a/Objects/exceptions.c b/Objects/exceptions.c index e09d384faae..d494995ddef 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -472,6 +472,13 @@ SimpleExtendsException(PyExc_Exception, TypeError, "Inappropriate argument type."); +/* + * StopAsyncIteration extends Exception + */ +SimpleExtendsException(PyExc_Exception, StopAsyncIteration, + "Signal the end from iterator.__anext__()."); + + /* * StopIteration extends Exception */ @@ -2468,6 +2475,7 @@ _PyExc_Init(PyObject *bltinmod) PRE_INIT(BaseException) PRE_INIT(Exception) PRE_INIT(TypeError) + PRE_INIT(StopAsyncIteration) PRE_INIT(StopIteration) PRE_INIT(GeneratorExit) PRE_INIT(SystemExit) @@ -2538,6 +2546,7 @@ _PyExc_Init(PyObject *bltinmod) POST_INIT(BaseException) POST_INIT(Exception) POST_INIT(TypeError) + POST_INIT(StopAsyncIteration) POST_INIT(StopIteration) POST_INIT(GeneratorExit) POST_INIT(SystemExit) diff --git a/Objects/frameobject.c b/Objects/frameobject.c index 55ee5630f67..172f2cb61b8 100644 --- a/Objects/frameobject.c +++ b/Objects/frameobject.c @@ -196,6 +196,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno) case SETUP_EXCEPT: case SETUP_FINALLY: case SETUP_WITH: + case SETUP_ASYNC_WITH: blockstack[blockstack_top++] = addr; in_finally[blockstack_top-1] = 0; break; @@ -203,7 +204,8 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno) case POP_BLOCK: assert(blockstack_top > 0); setup_op = code[blockstack[blockstack_top-1]]; - if (setup_op == SETUP_FINALLY || setup_op == SETUP_WITH) { + if (setup_op == SETUP_FINALLY || setup_op == SETUP_WITH + || setup_op == SETUP_ASYNC_WITH) { in_finally[blockstack_top-1] = 1; } else { @@ -218,7 +220,8 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno) * be seeing such an END_FINALLY.) */ if (blockstack_top > 0) { setup_op = code[blockstack[blockstack_top-1]]; - if (setup_op == SETUP_FINALLY || setup_op == SETUP_WITH) { + if (setup_op == SETUP_FINALLY || setup_op == SETUP_WITH + || setup_op == SETUP_ASYNC_WITH) { blockstack_top--; } } @@ -281,6 +284,7 @@ frame_setlineno(PyFrameObject *f, PyObject* p_new_lineno) case SETUP_EXCEPT: case SETUP_FINALLY: case SETUP_WITH: + case SETUP_ASYNC_WITH: delta_iblock++; break; diff --git a/Objects/genobject.c b/Objects/genobject.c index 82b629cfea8..2a5a0d9c1cd 100644 --- a/Objects/genobject.c +++ b/Objects/genobject.c @@ -24,6 +24,19 @@ _PyGen_Finalize(PyObject *self) PyObject *res; PyObject *error_type, *error_value, *error_traceback; + /* If `gen` is a coroutine, and if it was never awaited on, + issue a RuntimeWarning. */ + if (gen->gi_code != NULL + && ((PyCodeObject *)gen->gi_code)->co_flags & (CO_COROUTINE + | CO_ITERABLE_COROUTINE) + && gen->gi_frame != NULL + && gen->gi_frame->f_lasti == -1 + && !PyErr_Occurred() + && PyErr_WarnFormat(PyExc_RuntimeWarning, 1, + "coroutine '%.50S' was never awaited", + gen->gi_qualname)) + return; + if (gen->gi_frame == NULL || gen->gi_frame->f_stacktop == NULL) /* Generator isn't paused, so no need to close */ return; @@ -135,7 +148,7 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc) * a leaking StopIteration into RuntimeError (with its cause * set appropriately). */ if ((((PyCodeObject *)gen->gi_code)->co_flags & - CO_FUTURE_GENERATOR_STOP) + (CO_FUTURE_GENERATOR_STOP | CO_COROUTINE | CO_ITERABLE_COROUTINE)) && PyErr_ExceptionMatches(PyExc_StopIteration)) { PyObject *exc, *val, *val2, *tb; @@ -402,6 +415,12 @@ failed_throw: static PyObject * gen_iternext(PyGenObject *gen) { + if (((PyCodeObject*)gen->gi_code)->co_flags & CO_COROUTINE) { + PyErr_SetString(PyExc_TypeError, + "coroutine-objects do not support iteration"); + return NULL; + } + return gen_send_ex(gen, NULL, 0); } @@ -459,8 +478,14 @@ _PyGen_FetchStopIterationValue(PyObject **pvalue) { static PyObject * gen_repr(PyGenObject *gen) { - return PyUnicode_FromFormat("", - gen->gi_qualname, gen); + if (PyGen_CheckCoroutineExact(gen)) { + return PyUnicode_FromFormat("", + gen->gi_qualname, gen); + } + else { + return PyUnicode_FromFormat("", + gen->gi_qualname, gen); + } } static PyObject * @@ -496,6 +521,19 @@ gen_get_qualname(PyGenObject *op) return op->gi_qualname; } +static PyObject * +gen_get_iter(PyGenObject *gen) +{ + if (((PyCodeObject*)gen->gi_code)->co_flags & CO_COROUTINE) { + PyErr_SetString(PyExc_TypeError, + "coroutine-objects do not support iteration"); + return NULL; + } + + Py_INCREF(gen); + return gen; +} + static int gen_set_qualname(PyGenObject *op, PyObject *value) { @@ -547,7 +585,7 @@ PyTypeObject PyGen_Type = { 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ - 0, /* tp_reserved */ + 0, /* tp_as_async */ (reprfunc)gen_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ @@ -565,7 +603,7 @@ PyTypeObject PyGen_Type = { 0, /* tp_clear */ 0, /* tp_richcompare */ offsetof(PyGenObject, gi_weakreflist), /* tp_weaklistoffset */ - PyObject_SelfIter, /* tp_iter */ + (getiterfunc)gen_get_iter, /* tp_iter */ (iternextfunc)gen_iternext, /* tp_iternext */ gen_methods, /* tp_methods */ gen_memberlist, /* tp_members */ @@ -642,3 +680,57 @@ PyGen_NeedsFinalizing(PyGenObject *gen) /* No blocks except loops, it's safe to skip finalization. */ return 0; } + +/* + * This helper function returns an awaitable for `o`: + * - `o` if `o` is a coroutine-object; + * - `type(o)->tp_as_async->am_await(o)` + * + * Raises a TypeError if it's not possible to return + * an awaitable and returns NULL. + */ +PyObject * +_PyGen_GetAwaitableIter(PyObject *o) +{ + getawaitablefunc getter = NULL; + PyTypeObject *ot; + + if (PyGen_CheckCoroutineExact(o)) { + /* Fast path. It's a central function for 'await'. */ + Py_INCREF(o); + return o; + } + + ot = Py_TYPE(o); + if (ot->tp_as_async != NULL) { + getter = ot->tp_as_async->am_await; + } + if (getter != NULL) { + PyObject *res = (*getter)(o); + if (res != NULL) { + if (!PyIter_Check(res)) { + PyErr_Format(PyExc_TypeError, + "__await__() returned non-iterator " + "of type '%.100s'", + Py_TYPE(res)->tp_name); + Py_CLEAR(res); + } + else { + if (PyGen_CheckCoroutineExact(res)) { + /* __await__ must return an *iterator*, not + a coroutine or another awaitable (see PEP 492) */ + PyErr_SetString(PyExc_TypeError, + "__await__() returned a coroutine"); + Py_CLEAR(res); + } + } + } + return res; + } + + PyErr_Format(PyExc_TypeError, + "object %.100s can't be used in 'await' expression", + ot->tp_name); + + return NULL; +} diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 4b992878bf6..9522ac5809f 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -2506,6 +2506,7 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds) type->tp_flags |= Py_TPFLAGS_HAVE_GC; /* Initialize essential fields */ + type->tp_as_async = &et->as_async; type->tp_as_number = &et->as_number; type->tp_as_sequence = &et->as_sequence; type->tp_as_mapping = &et->as_mapping; @@ -2751,6 +2752,7 @@ PyType_FromSpecWithBases(PyType_Spec *spec, PyObject *bases) } /* Initialize essential fields */ + type->tp_as_async = &res->as_async; type->tp_as_number = &res->as_number; type->tp_as_sequence = &res->as_sequence; type->tp_as_mapping = &res->as_mapping; @@ -4566,6 +4568,7 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base) #define COPYSLOT(SLOT) \ if (!type->SLOT && SLOTDEFINED(SLOT)) type->SLOT = base->SLOT +#define COPYASYNC(SLOT) COPYSLOT(tp_as_async->SLOT) #define COPYNUM(SLOT) COPYSLOT(tp_as_number->SLOT) #define COPYSEQ(SLOT) COPYSLOT(tp_as_sequence->SLOT) #define COPYMAP(SLOT) COPYSLOT(tp_as_mapping->SLOT) @@ -4615,6 +4618,15 @@ inherit_slots(PyTypeObject *type, PyTypeObject *base) COPYNUM(nb_inplace_matrix_multiply); } + if (type->tp_as_async != NULL && base->tp_as_async != NULL) { + basebase = base->tp_base; + if (basebase->tp_as_async == NULL) + basebase = NULL; + COPYASYNC(am_await); + COPYASYNC(am_aiter); + COPYASYNC(am_anext); + } + if (type->tp_as_sequence != NULL && base->tp_as_sequence != NULL) { basebase = base->tp_base; if (basebase->tp_as_sequence == NULL) @@ -4884,6 +4896,8 @@ PyType_Ready(PyTypeObject *type) /* Some more special stuff */ base = type->tp_base; if (base != NULL) { + if (type->tp_as_async == NULL) + type->tp_as_async = base->tp_as_async; if (type->tp_as_number == NULL) type->tp_as_number = base->tp_as_number; if (type->tp_as_sequence == NULL) @@ -4904,16 +4918,6 @@ PyType_Ready(PyTypeObject *type) goto error; } - /* Warn for a type that implements tp_compare (now known as - tp_reserved) but not tp_richcompare. */ - if (type->tp_reserved && !type->tp_richcompare) { - PyErr_Format(PyExc_TypeError, - "Type %.100s defines tp_reserved (formerly tp_compare) " - "but not tp_richcompare. Comparisons may not behave as intended.", - type->tp_name); - goto error; - } - /* All done -- set the ready flag */ assert(type->tp_dict != NULL); type->tp_flags = @@ -6265,6 +6269,59 @@ slot_tp_finalize(PyObject *self) PyErr_Restore(error_type, error_value, error_traceback); } +static PyObject * +slot_am_await(PyObject *self) +{ + PyObject *func, *res; + _Py_IDENTIFIER(__await__); + + func = lookup_method(self, &PyId___await__); + if (func != NULL) { + res = PyEval_CallObject(func, NULL); + Py_DECREF(func); + return res; + } + PyErr_Format(PyExc_AttributeError, + "object %.50s does not have __await__ method", + Py_TYPE(self)->tp_name); + return NULL; +} + +static PyObject * +slot_am_aiter(PyObject *self) +{ + PyObject *func, *res; + _Py_IDENTIFIER(__aiter__); + + func = lookup_method(self, &PyId___aiter__); + if (func != NULL) { + res = PyEval_CallObject(func, NULL); + Py_DECREF(func); + return res; + } + PyErr_Format(PyExc_AttributeError, + "object %.50s does not have __aiter__ method", + Py_TYPE(self)->tp_name); + return NULL; +} + +static PyObject * +slot_am_anext(PyObject *self) +{ + PyObject *func, *res; + _Py_IDENTIFIER(__anext__); + + func = lookup_method(self, &PyId___anext__); + if (func != NULL) { + res = PyEval_CallObject(func, NULL); + Py_DECREF(func); + return res; + } + PyErr_Format(PyExc_AttributeError, + "object %.50s does not have __anext__ method", + Py_TYPE(self)->tp_name); + return NULL; +} /* Table mapping __foo__ names to tp_foo offsets and slot_tp_foo wrapper functions. @@ -6281,6 +6338,7 @@ typedef struct wrapperbase slotdef; #undef TPSLOT #undef FLSLOT +#undef AMSLOT #undef ETSLOT #undef SQSLOT #undef MPSLOT @@ -6299,6 +6357,8 @@ typedef struct wrapperbase slotdef; #define ETSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \ {NAME, offsetof(PyHeapTypeObject, SLOT), (void *)(FUNCTION), WRAPPER, \ PyDoc_STR(DOC)} +#define AMSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \ + ETSLOT(NAME, as_async.SLOT, FUNCTION, WRAPPER, DOC) #define SQSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \ ETSLOT(NAME, as_sequence.SLOT, FUNCTION, WRAPPER, DOC) #define MPSLOT(NAME, SLOT, FUNCTION, WRAPPER, DOC) \ @@ -6378,6 +6438,13 @@ static slotdef slotdefs[] = { "Create and return new object. See help(type) for accurate signature."), TPSLOT("__del__", tp_finalize, slot_tp_finalize, (wrapperfunc)wrap_del, ""), + AMSLOT("__await__", am_await, slot_am_await, wrap_unaryfunc, + "__await__($self, /)\n--\n\nReturn an iterator to be used in await expression."), + AMSLOT("__aiter__", am_aiter, slot_am_aiter, wrap_unaryfunc, + "__aiter__($self, /)\n--\n\nReturn an awaitable, that resolves in asynchronous iterator."), + AMSLOT("__anext__", am_anext, slot_am_anext, wrap_unaryfunc, + "__anext__($self, /)\n--\n\nReturn a value or raise StopAsyncIteration."), + BINSLOT("__add__", nb_add, slot_nb_add, "+"), RBINSLOT("__radd__", nb_add, slot_nb_add, @@ -6530,6 +6597,10 @@ slotptr(PyTypeObject *type, int ioffset) ptr = (char *)type->tp_as_number; offset -= offsetof(PyHeapTypeObject, as_number); } + else if ((size_t)offset >= offsetof(PyHeapTypeObject, as_async)) { + ptr = (char *)type->tp_as_async; + offset -= offsetof(PyHeapTypeObject, as_async); + } else { ptr = (char *)type; } diff --git a/Objects/typeslots.inc b/Objects/typeslots.inc index 2ed99d894df..bcbe0af3b8f 100644 --- a/Objects/typeslots.inc +++ b/Objects/typeslots.inc @@ -75,3 +75,6 @@ offsetof(PyHeapTypeObject, ht_type.tp_getset), offsetof(PyHeapTypeObject, ht_type.tp_free), offsetof(PyHeapTypeObject, as_number.nb_matrix_multiply), offsetof(PyHeapTypeObject, as_number.nb_inplace_matrix_multiply), +offsetof(PyHeapTypeObject, as_async.am_await), +offsetof(PyHeapTypeObject, as_async.am_aiter), +offsetof(PyHeapTypeObject, as_async.am_anext), diff --git a/Objects/typeslots.py b/Objects/typeslots.py index b24c7f40401..ba37c403975 100755 --- a/Objects/typeslots.py +++ b/Objects/typeslots.py @@ -12,6 +12,8 @@ for line in sys.stdin: member = m.group(1) if member.startswith("tp_"): member = "ht_type."+member + elif member.startswith("am_"): + member = "as_async."+member elif member.startswith("nb_"): member = "as_number."+member elif member.startswith("mp_"): diff --git a/Parser/Python.asdl b/Parser/Python.asdl index 5476c537655..cd0832da8d0 100644 --- a/Parser/Python.asdl +++ b/Parser/Python.asdl @@ -10,7 +10,10 @@ module Python | Suite(stmt* body) stmt = FunctionDef(identifier name, arguments args, - stmt* body, expr* decorator_list, expr? returns) + stmt* body, expr* decorator_list, expr? returns) + | AsyncFunctionDef(identifier name, arguments args, + stmt* body, expr* decorator_list, expr? returns) + | ClassDef(identifier name, expr* bases, keyword* keywords, @@ -24,9 +27,11 @@ module Python -- use 'orelse' because else is a keyword in target languages | For(expr target, expr iter, stmt* body, stmt* orelse) + | AsyncFor(expr target, expr iter, stmt* body, stmt* orelse) | While(expr test, stmt* body, stmt* orelse) | If(expr test, stmt* body, stmt* orelse) | With(withitem* items, stmt* body) + | AsyncWith(withitem* items, stmt* body) | Raise(expr? exc, expr? cause) | Try(stmt* body, excepthandler* handlers, stmt* orelse, stmt* finalbody) @@ -57,6 +62,7 @@ module Python | DictComp(expr key, expr value, comprehension* generators) | GeneratorExp(expr elt, comprehension* generators) -- the grammar constrains where yield expressions can occur + | Await(expr value) | Yield(expr? value) | YieldFrom(expr value) -- need sequences for compare to distinguish between diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index ac413a8455b..798758dc2db 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -103,6 +103,8 @@ const char *_PyParser_TokenNames[] = { "ELLIPSIS", /* This table must match the #defines in token.h! */ "OP", + "AWAIT", + "ASYNC", "", "" }; @@ -124,6 +126,11 @@ tok_new(void) tok->tabsize = TABSIZE; tok->indent = 0; tok->indstack[0] = 0; + + tok->def = 0; + tok->defstack[0] = 0; + tok->deftypestack[0] = 0; + tok->atbol = 1; tok->pendin = 0; tok->prompt = tok->nextprompt = NULL; @@ -1335,6 +1342,11 @@ tok_get(struct tok_state *tok, char **p_start, char **p_end) int c; int blankline, nonascii; + int tok_len; + struct tok_state ahead_tok; + char *ahead_tok_start = NULL, *ahead_top_end = NULL; + int ahead_tok_kind; + *p_start = *p_end = NULL; nextline: tok->start = NULL; @@ -1422,6 +1434,11 @@ tok_get(struct tok_state *tok, char **p_start, char **p_end) if (tok->pendin != 0) { if (tok->pendin < 0) { tok->pendin++; + + while (tok->def && tok->defstack[tok->def] >= tok->indent) { + tok->def--; + } + return DEDENT; } else { @@ -1481,6 +1498,57 @@ tok_get(struct tok_state *tok, char **p_start, char **p_end) return ERRORTOKEN; *p_start = tok->start; *p_end = tok->cur; + + tok_len = tok->cur - tok->start; + if (tok_len == 3 && memcmp(tok->start, "def", 3) == 0) { + + if (tok->def + 1 >= MAXINDENT) { + tok->done = E_TOODEEP; + tok->cur = tok->inp; + return ERRORTOKEN; + } + + if (tok->def && tok->deftypestack[tok->def] == 3) { + tok->deftypestack[tok->def] = 2; + } + else { + tok->def++; + tok->defstack[tok->def] = tok->indent; + tok->deftypestack[tok->def] = 1; + } + } + else if (tok_len == 5) { + if (memcmp(tok->start, "async", 5) == 0) { + memcpy(&ahead_tok, tok, sizeof(ahead_tok)); + + ahead_tok_kind = tok_get(&ahead_tok, &ahead_tok_start, + &ahead_top_end); + + if (ahead_tok_kind == NAME && + ahead_tok.cur - ahead_tok.start == 3 && + memcmp(ahead_tok.start, "def", 3) == 0) { + + tok->def++; + tok->defstack[tok->def] = tok->indent; + tok->deftypestack[tok->def] = 3; + + return ASYNC; + } + else if (tok->def && tok->deftypestack[tok->def] == 2 + && tok->defstack[tok->def] < tok->indent) { + + return ASYNC; + } + + } + else if (memcmp(tok->start, "await", 5) == 0 + && tok->def && tok->deftypestack[tok->def] == 2 + && tok->defstack[tok->def] < tok->indent) { + + return AWAIT; + } + } + return NAME; } diff --git a/Parser/tokenizer.h b/Parser/tokenizer.h index 1ce6eeba8ca..3bcdad6d0ec 100644 --- a/Parser/tokenizer.h +++ b/Parser/tokenizer.h @@ -65,6 +65,13 @@ struct tok_state { const char* enc; /* Encoding for the current str. */ const char* str; const char* input; /* Tokenizer's newline translated copy of the string. */ + + int defstack[MAXINDENT]; /* stack if funcs & indents where they + were defined */ + int deftypestack[MAXINDENT]; /* stack of func types + (0 not func; 1: "def name"; + 2: "async def name") */ + int def; /* Length of stack of func types */ }; extern struct tok_state *PyTokenizer_FromString(const char *, int); diff --git a/Python/Python-ast.c b/Python/Python-ast.c index 6dd175f492e..8a2dc7cc54d 100644 --- a/Python/Python-ast.c +++ b/Python/Python-ast.c @@ -45,6 +45,14 @@ static char *FunctionDef_fields[]={ "decorator_list", "returns", }; +static PyTypeObject *AsyncFunctionDef_type; +static char *AsyncFunctionDef_fields[]={ + "name", + "args", + "body", + "decorator_list", + "returns", +}; static PyTypeObject *ClassDef_type; _Py_IDENTIFIER(bases); _Py_IDENTIFIER(keywords); @@ -87,6 +95,13 @@ static char *For_fields[]={ "body", "orelse", }; +static PyTypeObject *AsyncFor_type; +static char *AsyncFor_fields[]={ + "target", + "iter", + "body", + "orelse", +}; static PyTypeObject *While_type; _Py_IDENTIFIER(test); static char *While_fields[]={ @@ -106,6 +121,11 @@ static char *With_fields[]={ "items", "body", }; +static PyTypeObject *AsyncWith_type; +static char *AsyncWith_fields[]={ + "items", + "body", +}; static PyTypeObject *Raise_type; _Py_IDENTIFIER(exc); _Py_IDENTIFIER(cause); @@ -228,6 +248,10 @@ static char *GeneratorExp_fields[]={ "elt", "generators", }; +static PyTypeObject *Await_type; +static char *Await_fields[]={ + "value", +}; static PyTypeObject *Yield_type; static char *Yield_fields[]={ "value", @@ -806,6 +830,9 @@ static int init_types(void) FunctionDef_type = make_type("FunctionDef", stmt_type, FunctionDef_fields, 5); if (!FunctionDef_type) return 0; + AsyncFunctionDef_type = make_type("AsyncFunctionDef", stmt_type, + AsyncFunctionDef_fields, 5); + if (!AsyncFunctionDef_type) return 0; ClassDef_type = make_type("ClassDef", stmt_type, ClassDef_fields, 5); if (!ClassDef_type) return 0; Return_type = make_type("Return", stmt_type, Return_fields, 1); @@ -818,12 +845,16 @@ static int init_types(void) if (!AugAssign_type) return 0; For_type = make_type("For", stmt_type, For_fields, 4); if (!For_type) return 0; + AsyncFor_type = make_type("AsyncFor", stmt_type, AsyncFor_fields, 4); + if (!AsyncFor_type) return 0; While_type = make_type("While", stmt_type, While_fields, 3); if (!While_type) return 0; If_type = make_type("If", stmt_type, If_fields, 3); if (!If_type) return 0; With_type = make_type("With", stmt_type, With_fields, 2); if (!With_type) return 0; + AsyncWith_type = make_type("AsyncWith", stmt_type, AsyncWith_fields, 2); + if (!AsyncWith_type) return 0; Raise_type = make_type("Raise", stmt_type, Raise_fields, 2); if (!Raise_type) return 0; Try_type = make_type("Try", stmt_type, Try_fields, 4); @@ -872,6 +903,8 @@ static int init_types(void) GeneratorExp_type = make_type("GeneratorExp", expr_type, GeneratorExp_fields, 2); if (!GeneratorExp_type) return 0; + Await_type = make_type("Await", expr_type, Await_fields, 1); + if (!Await_type) return 0; Yield_type = make_type("Yield", expr_type, Yield_fields, 1); if (!Yield_type) return 0; YieldFrom_type = make_type("YieldFrom", expr_type, YieldFrom_fields, 1); @@ -1200,6 +1233,36 @@ FunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq * return p; } +stmt_ty +AsyncFunctionDef(identifier name, arguments_ty args, asdl_seq * body, asdl_seq + * decorator_list, expr_ty returns, int lineno, int col_offset, + PyArena *arena) +{ + stmt_ty p; + if (!name) { + PyErr_SetString(PyExc_ValueError, + "field name is required for AsyncFunctionDef"); + return NULL; + } + if (!args) { + PyErr_SetString(PyExc_ValueError, + "field args is required for AsyncFunctionDef"); + return NULL; + } + p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = AsyncFunctionDef_kind; + p->v.AsyncFunctionDef.name = name; + p->v.AsyncFunctionDef.args = args; + p->v.AsyncFunctionDef.body = body; + p->v.AsyncFunctionDef.decorator_list = decorator_list; + p->v.AsyncFunctionDef.returns = returns; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + stmt_ty ClassDef(identifier name, asdl_seq * bases, asdl_seq * keywords, asdl_seq * body, asdl_seq * decorator_list, int lineno, int col_offset, PyArena @@ -1334,6 +1397,34 @@ For(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int return p; } +stmt_ty +AsyncFor(expr_ty target, expr_ty iter, asdl_seq * body, asdl_seq * orelse, int + lineno, int col_offset, PyArena *arena) +{ + stmt_ty p; + if (!target) { + PyErr_SetString(PyExc_ValueError, + "field target is required for AsyncFor"); + return NULL; + } + if (!iter) { + PyErr_SetString(PyExc_ValueError, + "field iter is required for AsyncFor"); + return NULL; + } + p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = AsyncFor_kind; + p->v.AsyncFor.target = target; + p->v.AsyncFor.iter = iter; + p->v.AsyncFor.body = body; + p->v.AsyncFor.orelse = orelse; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + stmt_ty While(expr_ty test, asdl_seq * body, asdl_seq * orelse, int lineno, int col_offset, PyArena *arena) @@ -1394,6 +1485,22 @@ With(asdl_seq * items, asdl_seq * body, int lineno, int col_offset, PyArena return p; } +stmt_ty +AsyncWith(asdl_seq * items, asdl_seq * body, int lineno, int col_offset, + PyArena *arena) +{ + stmt_ty p; + p = (stmt_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = AsyncWith_kind; + p->v.AsyncWith.items = items; + p->v.AsyncWith.body = body; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + stmt_ty Raise(expr_ty exc, expr_ty cause, int lineno, int col_offset, PyArena *arena) { @@ -1821,6 +1928,25 @@ GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno, int col_offset, return p; } +expr_ty +Await(expr_ty value, int lineno, int col_offset, PyArena *arena) +{ + expr_ty p; + if (!value) { + PyErr_SetString(PyExc_ValueError, + "field value is required for Await"); + return NULL; + } + p = (expr_ty)PyArena_Malloc(arena, sizeof(*p)); + if (!p) + return NULL; + p->kind = Await_kind; + p->v.Await.value = value; + p->lineno = lineno; + p->col_offset = col_offset; + return p; +} + expr_ty Yield(expr_ty value, int lineno, int col_offset, PyArena *arena) { @@ -2409,6 +2535,36 @@ ast2obj_stmt(void* _o) goto failed; Py_DECREF(value); break; + case AsyncFunctionDef_kind: + result = PyType_GenericNew(AsyncFunctionDef_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_identifier(o->v.AsyncFunctionDef.name); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_name, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_arguments(o->v.AsyncFunctionDef.args); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_args, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.AsyncFunctionDef.body, ast2obj_stmt); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.AsyncFunctionDef.decorator_list, + ast2obj_expr); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_decorator_list, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.AsyncFunctionDef.returns); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_returns, value) == -1) + goto failed; + Py_DECREF(value); + break; case ClassDef_kind: result = PyType_GenericNew(ClassDef_type, NULL, NULL); if (!result) goto failed; @@ -2513,6 +2669,30 @@ ast2obj_stmt(void* _o) goto failed; Py_DECREF(value); break; + case AsyncFor_kind: + result = PyType_GenericNew(AsyncFor_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.AsyncFor.target); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_target, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_expr(o->v.AsyncFor.iter); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_iter, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.AsyncFor.body, ast2obj_stmt); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.AsyncFor.orelse, ast2obj_stmt); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_orelse, value) == -1) + goto failed; + Py_DECREF(value); + break; case While_kind: result = PyType_GenericNew(While_type, NULL, NULL); if (!result) goto failed; @@ -2565,6 +2745,20 @@ ast2obj_stmt(void* _o) goto failed; Py_DECREF(value); break; + case AsyncWith_kind: + result = PyType_GenericNew(AsyncWith_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_list(o->v.AsyncWith.items, ast2obj_withitem); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_items, value) == -1) + goto failed; + Py_DECREF(value); + value = ast2obj_list(o->v.AsyncWith.body, ast2obj_stmt); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_body, value) == -1) + goto failed; + Py_DECREF(value); + break; case Raise_kind: result = PyType_GenericNew(Raise_type, NULL, NULL); if (!result) goto failed; @@ -2878,6 +3072,15 @@ ast2obj_expr(void* _o) goto failed; Py_DECREF(value); break; + case Await_kind: + result = PyType_GenericNew(Await_type, NULL, NULL); + if (!result) goto failed; + value = ast2obj_expr(o->v.Await.value); + if (!value) goto failed; + if (_PyObject_SetAttrId(result, &PyId_value, value) == -1) + goto failed; + Py_DECREF(value); + break; case Yield_kind: result = PyType_GenericNew(Yield_type, NULL, NULL); if (!result) goto failed; @@ -3832,6 +4035,102 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)AsyncFunctionDef_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + identifier name; + arguments_ty args; + asdl_seq* body; + asdl_seq* decorator_list; + expr_ty returns; + + if (_PyObject_HasAttrId(obj, &PyId_name)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_name); + if (tmp == NULL) goto failed; + res = obj2ast_identifier(tmp, &name, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"name\" missing from AsyncFunctionDef"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_args)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_args); + if (tmp == NULL) goto failed; + res = obj2ast_arguments(tmp, &args, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"args\" missing from AsyncFunctionDef"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_body)) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_body); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + body = _Py_asdl_seq_new(len, arena); + if (body == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(body, i, value); + } + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from AsyncFunctionDef"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_decorator_list)) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_decorator_list); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "AsyncFunctionDef field \"decorator_list\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + decorator_list = _Py_asdl_seq_new(len, arena); + if (decorator_list == NULL) goto failed; + for (i = 0; i < len; i++) { + expr_ty value; + res = obj2ast_expr(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(decorator_list, i, value); + } + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"decorator_list\" missing from AsyncFunctionDef"); + return 1; + } + if (exists_not_none(obj, &PyId_returns)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_returns); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &returns, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + returns = NULL; + } + *out = AsyncFunctionDef(name, args, body, decorator_list, returns, + lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)ClassDef_type); if (isinstance == -1) { return 1; @@ -4188,6 +4487,90 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)AsyncFor_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + expr_ty target; + expr_ty iter; + asdl_seq* body; + asdl_seq* orelse; + + if (_PyObject_HasAttrId(obj, &PyId_target)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_target); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &target, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"target\" missing from AsyncFor"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_iter)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_iter); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &iter, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"iter\" missing from AsyncFor"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_body)) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_body); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "AsyncFor field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + body = _Py_asdl_seq_new(len, arena); + if (body == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(body, i, value); + } + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from AsyncFor"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_orelse)) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_orelse); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "AsyncFor field \"orelse\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + orelse = _Py_asdl_seq_new(len, arena); + if (orelse == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(orelse, i, value); + } + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"orelse\" missing from AsyncFor"); + return 1; + } + *out = AsyncFor(target, iter, body, orelse, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)While_type); if (isinstance == -1) { return 1; @@ -4392,6 +4775,66 @@ obj2ast_stmt(PyObject* obj, stmt_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)AsyncWith_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + asdl_seq* items; + asdl_seq* body; + + if (_PyObject_HasAttrId(obj, &PyId_items)) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_items); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "AsyncWith field \"items\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + items = _Py_asdl_seq_new(len, arena); + if (items == NULL) goto failed; + for (i = 0; i < len; i++) { + withitem_ty value; + res = obj2ast_withitem(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(items, i, value); + } + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"items\" missing from AsyncWith"); + return 1; + } + if (_PyObject_HasAttrId(obj, &PyId_body)) { + int res; + Py_ssize_t len; + Py_ssize_t i; + tmp = _PyObject_GetAttrId(obj, &PyId_body); + if (tmp == NULL) goto failed; + if (!PyList_Check(tmp)) { + PyErr_Format(PyExc_TypeError, "AsyncWith field \"body\" must be a list, not a %.200s", tmp->ob_type->tp_name); + goto failed; + } + len = PyList_GET_SIZE(tmp); + body = _Py_asdl_seq_new(len, arena); + if (body == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(body, i, value); + } + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"body\" missing from AsyncWith"); + return 1; + } + *out = AsyncWith(items, body, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)Raise_type); if (isinstance == -1) { return 1; @@ -5326,6 +5769,28 @@ obj2ast_expr(PyObject* obj, expr_ty* out, PyArena* arena) if (*out == NULL) goto failed; return 0; } + isinstance = PyObject_IsInstance(obj, (PyObject*)Await_type); + if (isinstance == -1) { + return 1; + } + if (isinstance) { + expr_ty value; + + if (_PyObject_HasAttrId(obj, &PyId_value)) { + int res; + tmp = _PyObject_GetAttrId(obj, &PyId_value); + if (tmp == NULL) goto failed; + res = obj2ast_expr(tmp, &value, arena); + if (res != 0) goto failed; + Py_CLEAR(tmp); + } else { + PyErr_SetString(PyExc_TypeError, "required field \"value\" missing from Await"); + return 1; + } + *out = Await(value, lineno, col_offset, arena); + if (*out == NULL) goto failed; + return 0; + } isinstance = PyObject_IsInstance(obj, (PyObject*)Yield_type); if (isinstance == -1) { return 1; @@ -6782,6 +7247,8 @@ PyInit__ast(void) if (PyDict_SetItemString(d, "stmt", (PyObject*)stmt_type) < 0) return NULL; if (PyDict_SetItemString(d, "FunctionDef", (PyObject*)FunctionDef_type) < 0) return NULL; + if (PyDict_SetItemString(d, "AsyncFunctionDef", + (PyObject*)AsyncFunctionDef_type) < 0) return NULL; if (PyDict_SetItemString(d, "ClassDef", (PyObject*)ClassDef_type) < 0) return NULL; if (PyDict_SetItemString(d, "Return", (PyObject*)Return_type) < 0) return @@ -6793,10 +7260,14 @@ PyInit__ast(void) if (PyDict_SetItemString(d, "AugAssign", (PyObject*)AugAssign_type) < 0) return NULL; if (PyDict_SetItemString(d, "For", (PyObject*)For_type) < 0) return NULL; + if (PyDict_SetItemString(d, "AsyncFor", (PyObject*)AsyncFor_type) < 0) + return NULL; if (PyDict_SetItemString(d, "While", (PyObject*)While_type) < 0) return NULL; if (PyDict_SetItemString(d, "If", (PyObject*)If_type) < 0) return NULL; if (PyDict_SetItemString(d, "With", (PyObject*)With_type) < 0) return NULL; + if (PyDict_SetItemString(d, "AsyncWith", (PyObject*)AsyncWith_type) < 0) + return NULL; if (PyDict_SetItemString(d, "Raise", (PyObject*)Raise_type) < 0) return NULL; if (PyDict_SetItemString(d, "Try", (PyObject*)Try_type) < 0) return NULL; @@ -6837,6 +7308,8 @@ PyInit__ast(void) return NULL; if (PyDict_SetItemString(d, "GeneratorExp", (PyObject*)GeneratorExp_type) < 0) return NULL; + if (PyDict_SetItemString(d, "Await", (PyObject*)Await_type) < 0) return + NULL; if (PyDict_SetItemString(d, "Yield", (PyObject*)Yield_type) < 0) return NULL; if (PyDict_SetItemString(d, "YieldFrom", (PyObject*)YieldFrom_type) < 0) diff --git a/Python/ast.c b/Python/ast.c index 69454fee4ee..bb28437ae2f 100644 --- a/Python/ast.c +++ b/Python/ast.c @@ -219,6 +219,8 @@ validate_expr(expr_ty exp, expr_context_ty ctx) return !exp->v.Yield.value || validate_expr(exp->v.Yield.value, Load); case YieldFrom_kind: return validate_expr(exp->v.YieldFrom.value, Load); + case Await_kind: + return validate_expr(exp->v.Await.value, Load); case Compare_kind: if (!asdl_seq_LEN(exp->v.Compare.comparators)) { PyErr_SetString(PyExc_ValueError, "Compare with no comparators"); @@ -336,6 +338,11 @@ validate_stmt(stmt_ty stmt) validate_expr(stmt->v.For.iter, Load) && validate_body(stmt->v.For.body, "For") && validate_stmts(stmt->v.For.orelse); + case AsyncFor_kind: + return validate_expr(stmt->v.AsyncFor.target, Store) && + validate_expr(stmt->v.AsyncFor.iter, Load) && + validate_body(stmt->v.AsyncFor.body, "AsyncFor") && + validate_stmts(stmt->v.AsyncFor.orelse); case While_kind: return validate_expr(stmt->v.While.test, Load) && validate_body(stmt->v.While.body, "While") && @@ -354,6 +361,16 @@ validate_stmt(stmt_ty stmt) return 0; } return validate_body(stmt->v.With.body, "With"); + case AsyncWith_kind: + if (!validate_nonempty_seq(stmt->v.AsyncWith.items, "items", "AsyncWith")) + return 0; + for (i = 0; i < asdl_seq_LEN(stmt->v.AsyncWith.items); i++) { + withitem_ty item = asdl_seq_GET(stmt->v.AsyncWith.items, i); + if (!validate_expr(item->context_expr, Load) || + (item->optional_vars && !validate_expr(item->optional_vars, Store))) + return 0; + } + return validate_body(stmt->v.AsyncWith.body, "AsyncWith"); case Raise_kind: if (stmt->v.Raise.exc) { return validate_expr(stmt->v.Raise.exc, Load) && @@ -405,6 +422,12 @@ validate_stmt(stmt_ty stmt) return validate_nonempty_seq(stmt->v.Nonlocal.names, "names", "Nonlocal"); case Expr_kind: return validate_expr(stmt->v.Expr.value, Load); + case AsyncFunctionDef_kind: + return validate_body(stmt->v.AsyncFunctionDef.body, "AsyncFunctionDef") && + validate_arguments(stmt->v.AsyncFunctionDef.args) && + validate_exprs(stmt->v.AsyncFunctionDef.decorator_list, Load, 0) && + (!stmt->v.AsyncFunctionDef.returns || + validate_expr(stmt->v.AsyncFunctionDef.returns, Load)); case Pass_kind: case Break_kind: case Continue_kind: @@ -503,6 +526,9 @@ static asdl_seq *ast_for_exprlist(struct compiling *, const node *, static expr_ty ast_for_testlist(struct compiling *, const node *); static stmt_ty ast_for_classdef(struct compiling *, const node *, asdl_seq *); +static stmt_ty ast_for_with_stmt(struct compiling *, const node *, int); +static stmt_ty ast_for_for_stmt(struct compiling *, const node *, int); + /* Note different signature for ast_for_call */ static expr_ty ast_for_call(struct compiling *, const node *, expr_ty); @@ -941,6 +967,9 @@ set_context(struct compiling *c, expr_ty e, expr_context_ty ctx, const node *n) case YieldFrom_kind: expr_name = "yield expression"; break; + case Await_kind: + expr_name = "await expression"; + break; case ListComp_kind: expr_name = "list comprehension"; break; @@ -1480,7 +1509,8 @@ ast_for_decorators(struct compiling *c, const node *n) } static stmt_ty -ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) +ast_for_funcdef_impl(struct compiling *c, const node *n, + asdl_seq *decorator_seq, int is_async) { /* funcdef: 'def' NAME parameters ['->' test] ':' suite */ identifier name; @@ -1509,14 +1539,68 @@ ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) if (!body) return NULL; - return FunctionDef(name, args, body, decorator_seq, returns, LINENO(n), - n->n_col_offset, c->c_arena); + if (is_async) + return AsyncFunctionDef(name, args, body, decorator_seq, returns, + LINENO(n), + n->n_col_offset, c->c_arena); + else + return FunctionDef(name, args, body, decorator_seq, returns, + LINENO(n), + n->n_col_offset, c->c_arena); +} + +static stmt_ty +ast_for_async_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) +{ + /* async_funcdef: ASYNC funcdef */ + REQ(n, async_funcdef); + REQ(CHILD(n, 0), ASYNC); + REQ(CHILD(n, 1), funcdef); + + return ast_for_funcdef_impl(c, CHILD(n, 1), decorator_seq, + 1 /* is_async */); +} + +static stmt_ty +ast_for_funcdef(struct compiling *c, const node *n, asdl_seq *decorator_seq) +{ + /* funcdef: 'def' NAME parameters ['->' test] ':' suite */ + return ast_for_funcdef_impl(c, n, decorator_seq, + 0 /* is_async */); +} + + +static stmt_ty +ast_for_async_stmt(struct compiling *c, const node *n) +{ + /* async_stmt: ASYNC (funcdef | with_stmt | for_stmt) */ + REQ(n, async_stmt); + REQ(CHILD(n, 0), ASYNC); + + switch (TYPE(CHILD(n, 1))) { + case funcdef: + return ast_for_funcdef_impl(c, CHILD(n, 1), NULL, + 1 /* is_async */); + case with_stmt: + return ast_for_with_stmt(c, CHILD(n, 1), + 1 /* is_async */); + + case for_stmt: + return ast_for_for_stmt(c, CHILD(n, 1), + 1 /* is_async */); + + default: + PyErr_Format(PyExc_SystemError, + "invalid async stament: %s", + STR(CHILD(n, 1))); + return NULL; + } } static stmt_ty ast_for_decorated(struct compiling *c, const node *n) { - /* decorated: decorators (classdef | funcdef) */ + /* decorated: decorators (classdef | funcdef | async_funcdef) */ stmt_ty thing = NULL; asdl_seq *decorator_seq = NULL; @@ -1527,12 +1611,15 @@ ast_for_decorated(struct compiling *c, const node *n) return NULL; assert(TYPE(CHILD(n, 1)) == funcdef || + TYPE(CHILD(n, 1)) == async_funcdef || TYPE(CHILD(n, 1)) == classdef); if (TYPE(CHILD(n, 1)) == funcdef) { thing = ast_for_funcdef(c, CHILD(n, 1), decorator_seq); } else if (TYPE(CHILD(n, 1)) == classdef) { thing = ast_for_classdef(c, CHILD(n, 1), decorator_seq); + } else if (TYPE(CHILD(n, 1)) == async_funcdef) { + thing = ast_for_async_funcdef(c, CHILD(n, 1), decorator_seq); } /* we count the decorators in when talking about the class' or * function's line number */ @@ -2271,19 +2358,29 @@ ast_for_factor(struct compiling *c, const node *n) } static expr_ty -ast_for_power(struct compiling *c, const node *n) +ast_for_atom_expr(struct compiling *c, const node *n) { - /* power: atom trailer* ('**' factor)* - */ - int i; + int i, nch, start = 0; expr_ty e, tmp; - REQ(n, power); - e = ast_for_atom(c, CHILD(n, 0)); + + REQ(n, atom_expr); + nch = NCH(n); + + if (TYPE(CHILD(n, 0)) == AWAIT) { + start = 1; + assert(nch > 1); + } + + e = ast_for_atom(c, CHILD(n, start)); if (!e) return NULL; - if (NCH(n) == 1) + if (nch == 1) return e; - for (i = 1; i < NCH(n); i++) { + if (start && nch == 2) { + return Await(e, LINENO(n), n->n_col_offset, c->c_arena); + } + + for (i = start + 1; i < nch; i++) { node *ch = CHILD(n, i); if (TYPE(ch) != trailer) break; @@ -2294,6 +2391,28 @@ ast_for_power(struct compiling *c, const node *n) tmp->col_offset = e->col_offset; e = tmp; } + + if (start) { + /* there was an AWAIT */ + return Await(e, LINENO(n), n->n_col_offset, c->c_arena); + } + else { + return e; + } +} + +static expr_ty +ast_for_power(struct compiling *c, const node *n) +{ + /* power: atom trailer* ('**' factor)* + */ + expr_ty e; + REQ(n, power); + e = ast_for_atom_expr(c, CHILD(n, 0)); + if (!e) + return NULL; + if (NCH(n) == 1) + return e; if (TYPE(CHILD(n, NCH(n) - 1)) == factor) { expr_ty f = ast_for_expr(c, CHILD(n, NCH(n) - 1)); if (!f) @@ -2338,7 +2457,9 @@ ast_for_expr(struct compiling *c, const node *n) arith_expr: term (('+'|'-') term)* term: factor (('*'|'@'|'/'|'%'|'//') factor)* factor: ('+'|'-'|'~') factor | power - power: atom trailer* ('**' factor)* + power: atom_expr ['**' factor] + atom_expr: [AWAIT] atom trailer* + yield_expr: 'yield' [yield_arg] */ asdl_seq *seq; @@ -3403,7 +3524,7 @@ ast_for_while_stmt(struct compiling *c, const node *n) } static stmt_ty -ast_for_for_stmt(struct compiling *c, const node *n) +ast_for_for_stmt(struct compiling *c, const node *n, int is_async) { asdl_seq *_target, *seq = NULL, *suite_seq; expr_ty expression; @@ -3437,8 +3558,14 @@ ast_for_for_stmt(struct compiling *c, const node *n) if (!suite_seq) return NULL; - return For(target, expression, suite_seq, seq, LINENO(n), n->n_col_offset, - c->c_arena); + if (is_async) + return AsyncFor(target, expression, suite_seq, seq, + LINENO(n), n->n_col_offset, + c->c_arena); + else + return For(target, expression, suite_seq, seq, + LINENO(n), n->n_col_offset, + c->c_arena); } static excepthandler_ty @@ -3585,7 +3712,7 @@ ast_for_with_item(struct compiling *c, const node *n) /* with_stmt: 'with' with_item (',' with_item)* ':' suite */ static stmt_ty -ast_for_with_stmt(struct compiling *c, const node *n) +ast_for_with_stmt(struct compiling *c, const node *n, int is_async) { int i, n_items; asdl_seq *items, *body; @@ -3607,7 +3734,10 @@ ast_for_with_stmt(struct compiling *c, const node *n) if (!body) return NULL; - return With(items, body, LINENO(n), n->n_col_offset, c->c_arena); + if (is_async) + return AsyncWith(items, body, LINENO(n), n->n_col_offset, c->c_arena); + else + return With(items, body, LINENO(n), n->n_col_offset, c->c_arena); } static stmt_ty @@ -3714,7 +3844,7 @@ ast_for_stmt(struct compiling *c, const node *n) } else { /* compound_stmt: if_stmt | while_stmt | for_stmt | try_stmt - | funcdef | classdef | decorated + | funcdef | classdef | decorated | async_stmt */ node *ch = CHILD(n, 0); REQ(n, compound_stmt); @@ -3724,17 +3854,19 @@ ast_for_stmt(struct compiling *c, const node *n) case while_stmt: return ast_for_while_stmt(c, ch); case for_stmt: - return ast_for_for_stmt(c, ch); + return ast_for_for_stmt(c, ch, 0); case try_stmt: return ast_for_try_stmt(c, ch); case with_stmt: - return ast_for_with_stmt(c, ch); + return ast_for_with_stmt(c, ch, 0); case funcdef: return ast_for_funcdef(c, ch, NULL); case classdef: return ast_for_classdef(c, ch, NULL); case decorated: return ast_for_decorated(c, ch); + case async_stmt: + return ast_for_async_stmt(c, ch); default: PyErr_Format(PyExc_SystemError, "unhandled small_stmt: TYPE=%d NCH=%d\n", diff --git a/Python/ceval.c b/Python/ceval.c index 5ee90773323..8acd08201e5 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1926,11 +1926,133 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) goto fast_block_end; } + TARGET(GET_AITER) { + getaiterfunc getter = NULL; + PyObject *iter = NULL; + PyObject *awaitable = NULL; + PyObject *obj = TOP(); + PyTypeObject *type = Py_TYPE(obj); + + if (type->tp_as_async != NULL) + getter = type->tp_as_async->am_aiter; + + if (getter != NULL) { + iter = (*getter)(obj); + Py_DECREF(obj); + if (iter == NULL) { + SET_TOP(NULL); + goto error; + } + } + else { + SET_TOP(NULL); + PyErr_Format( + PyExc_TypeError, + "'async for' requires an object with " + "__aiter__ method, got %.100s", + type->tp_name); + Py_DECREF(obj); + goto error; + } + + awaitable = _PyGen_GetAwaitableIter(iter); + if (awaitable == NULL) { + SET_TOP(NULL); + PyErr_Format( + PyExc_TypeError, + "'async for' received an invalid object " + "from __aiter__: %.100s", + Py_TYPE(iter)->tp_name); + + Py_DECREF(iter); + goto error; + } else + Py_DECREF(iter); + + SET_TOP(awaitable); + DISPATCH(); + } + + TARGET(GET_ANEXT) { + aiternextfunc getter = NULL; + PyObject *next_iter = NULL; + PyObject *awaitable = NULL; + PyObject *aiter = TOP(); + PyTypeObject *type = Py_TYPE(aiter); + + if (type->tp_as_async != NULL) + getter = type->tp_as_async->am_anext; + + if (getter != NULL) { + next_iter = (*getter)(aiter); + if (next_iter == NULL) { + goto error; + } + } + else { + PyErr_Format( + PyExc_TypeError, + "'async for' requires an iterator with " + "__anext__ method, got %.100s", + type->tp_name); + goto error; + } + + awaitable = _PyGen_GetAwaitableIter(next_iter); + if (awaitable == NULL) { + PyErr_Format( + PyExc_TypeError, + "'async for' received an invalid object " + "from __anext__: %.100s", + Py_TYPE(next_iter)->tp_name); + + Py_DECREF(next_iter); + goto error; + } else + Py_DECREF(next_iter); + + PUSH(awaitable); + DISPATCH(); + } + + TARGET(GET_AWAITABLE) { + PyObject *iterable = TOP(); + PyObject *iter = _PyGen_GetAwaitableIter(iterable); + + Py_DECREF(iterable); + + SET_TOP(iter); /* Even if it's NULL */ + + if (iter == NULL) { + goto error; + } + + DISPATCH(); + } + TARGET(YIELD_FROM) { PyObject *v = POP(); PyObject *reciever = TOP(); int err; if (PyGen_CheckExact(reciever)) { + if ( + (((PyCodeObject*) \ + ((PyGenObject*)reciever)->gi_code)->co_flags & + CO_COROUTINE) + && !(co->co_flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE))) + { + /* If we're yielding-from a coroutine object from a regular + generator object - raise an error. */ + + Py_CLEAR(v); + Py_CLEAR(reciever); + SET_TOP(NULL); + + PyErr_SetString(PyExc_TypeError, + "cannot 'yield from' a coroutine object " + "from a generator"); + goto error; + } retval = _PyGen_Send((PyGenObject *)reciever, v); } else { _Py_IDENTIFIER(send); @@ -2822,11 +2944,26 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) TARGET(GET_ITER) { /* before: [obj]; after [getiter(obj)] */ PyObject *iterable = TOP(); - PyObject *iter = PyObject_GetIter(iterable); - Py_DECREF(iterable); - SET_TOP(iter); - if (iter == NULL) - goto error; + PyObject *iter; + /* If we have a generator object on top -- keep it there, + it's already an iterator. + + This is needed to allow use of 'async def' coroutines + in 'yield from' expression from generator-based coroutines + (decorated with types.coroutine()). + + 'yield from' is compiled to GET_ITER..YIELD_FROM combination, + but since coroutines raise TypeError in their 'tp_iter' we + need a way for them to "pass through" the GET_ITER. + */ + if (!PyGen_CheckExact(iterable)) { + /* `iterable` is not a generator. */ + iter = PyObject_GetIter(iterable); + Py_DECREF(iterable); + SET_TOP(iter); + if (iter == NULL) + goto error; + } PREDICT(FOR_ITER); DISPATCH(); } @@ -2883,6 +3020,39 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) DISPATCH(); } + TARGET(BEFORE_ASYNC_WITH) { + _Py_IDENTIFIER(__aexit__); + _Py_IDENTIFIER(__aenter__); + + PyObject *mgr = TOP(); + PyObject *exit = special_lookup(mgr, &PyId___aexit__), + *enter; + PyObject *res; + if (exit == NULL) + goto error; + SET_TOP(exit); + enter = special_lookup(mgr, &PyId___aenter__); + Py_DECREF(mgr); + if (enter == NULL) + goto error; + res = PyObject_CallFunctionObjArgs(enter, NULL); + Py_DECREF(enter); + if (res == NULL) + goto error; + PUSH(res); + DISPATCH(); + } + + TARGET(SETUP_ASYNC_WITH) { + PyObject *res = POP(); + /* Setup the finally block before pushing the result + of __aenter__ on the stack. */ + PyFrame_BlockSetup(f, SETUP_FINALLY, INSTR_OFFSET() + oparg, + STACK_LEVEL()); + PUSH(res); + DISPATCH(); + } + TARGET(SETUP_WITH) { _Py_IDENTIFIER(__exit__); _Py_IDENTIFIER(__enter__); @@ -2909,7 +3079,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) DISPATCH(); } - TARGET(WITH_CLEANUP) { + TARGET(WITH_CLEANUP_START) { /* At the top of the stack are 1-6 values indicating how/why we entered the finally clause: - TOP = None @@ -2937,7 +3107,6 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) PyObject *exit_func; PyObject *exc = TOP(), *val = Py_None, *tb = Py_None, *res; - int err; if (exc == Py_None) { (void)POP(); exit_func = TOP(); @@ -2987,10 +3156,23 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) if (res == NULL) goto error; + PUSH(exc); + PUSH(res); + PREDICT(WITH_CLEANUP_FINISH); + DISPATCH(); + } + + PREDICTED(WITH_CLEANUP_FINISH); + TARGET(WITH_CLEANUP_FINISH) { + PyObject *res = POP(); + PyObject *exc = POP(); + int err; + if (exc != Py_None) err = PyObject_IsTrue(res); else err = 0; + Py_DECREF(res); if (err < 0) @@ -3751,6 +3933,9 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals, } if (co->co_flags & CO_GENERATOR) { + PyObject *gen; + PyObject *coroutine_wrapper; + /* Don't need to keep the reference to f_back, it will be set * when the generator is resumed. */ Py_CLEAR(f->f_back); @@ -3759,7 +3944,19 @@ _PyEval_EvalCodeWithName(PyObject *_co, PyObject *globals, PyObject *locals, /* Create a new generator that owns the ready to run frame * and return that as the value. */ - return PyGen_NewWithQualName(f, name, qualname); + gen = PyGen_NewWithQualName(f, name, qualname); + if (gen == NULL) + return NULL; + + if (co->co_flags & (CO_COROUTINE | CO_ITERABLE_COROUTINE)) { + coroutine_wrapper = PyEval_GetCoroutineWrapper(); + if (coroutine_wrapper != NULL) { + PyObject *wrapped = + PyObject_CallFunction(coroutine_wrapper, "N", gen); + gen = wrapped; + } + } + return gen; } retval = PyEval_EvalFrameEx(f,0); @@ -4205,6 +4402,24 @@ PyEval_SetTrace(Py_tracefunc func, PyObject *arg) || (tstate->c_profilefunc != NULL)); } +void +PyEval_SetCoroutineWrapper(PyObject *wrapper) +{ + PyThreadState *tstate = PyThreadState_GET(); + + Py_CLEAR(tstate->coroutine_wrapper); + + Py_XINCREF(wrapper); + tstate->coroutine_wrapper = wrapper; +} + +PyObject * +PyEval_GetCoroutineWrapper() +{ + PyThreadState *tstate = PyThreadState_GET(); + return tstate->coroutine_wrapper; +} + PyObject * PyEval_GetBuiltins(void) { diff --git a/Python/compile.c b/Python/compile.c index efd48076135..7820f39f878 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -92,6 +92,7 @@ enum { COMPILER_SCOPE_MODULE, COMPILER_SCOPE_CLASS, COMPILER_SCOPE_FUNCTION, + COMPILER_SCOPE_ASYNC_FUNCTION, COMPILER_SCOPE_LAMBDA, COMPILER_SCOPE_COMPREHENSION, }; @@ -193,6 +194,8 @@ static int inplace_binop(struct compiler *, operator_ty); static int expr_constant(struct compiler *, expr_ty); static int compiler_with(struct compiler *, stmt_ty, int); +static int compiler_async_with(struct compiler *, stmt_ty, int); +static int compiler_async_for(struct compiler *, stmt_ty); static int compiler_call_helper(struct compiler *c, Py_ssize_t n, asdl_seq *args, asdl_seq *keywords); @@ -673,7 +676,9 @@ compiler_set_qualname(struct compiler *c) parent = (struct compiler_unit *)PyCapsule_GetPointer(capsule, CAPSULE_NAME); assert(parent); - if (u->u_scope_type == COMPILER_SCOPE_FUNCTION || u->u_scope_type == COMPILER_SCOPE_CLASS) { + if (u->u_scope_type == COMPILER_SCOPE_FUNCTION + || u->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION + || u->u_scope_type == COMPILER_SCOPE_CLASS) { assert(u->u_name); mangled = _Py_Mangle(parent->u_private, u->u_name); if (!mangled) @@ -687,6 +692,7 @@ compiler_set_qualname(struct compiler *c) if (!force_global) { if (parent->u_scope_type == COMPILER_SCOPE_FUNCTION + || parent->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION || parent->u_scope_type == COMPILER_SCOPE_LAMBDA) { dot_locals_str = _PyUnicode_FromId(&dot_locals); if (dot_locals_str == NULL) @@ -927,7 +933,9 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg) return 0; case SETUP_WITH: return 7; - case WITH_CLEANUP: + case WITH_CLEANUP_START: + return 1; + case WITH_CLEANUP_FINISH: return -1; /* XXX Sometimes more */ case RETURN_VALUE: return -1; @@ -1048,6 +1056,16 @@ PyCompile_OpcodeStackEffect(int opcode, int oparg) return -1; case DELETE_DEREF: return 0; + case GET_AWAITABLE: + return 0; + case SETUP_ASYNC_WITH: + return 6; + case BEFORE_ASYNC_WITH: + return 1; + case GET_AITER: + return 0; + case GET_ANEXT: + return 1; default: return PY_INVALID_STACK_EFFECT; } @@ -1642,19 +1660,43 @@ error: } static int -compiler_function(struct compiler *c, stmt_ty s) +compiler_function(struct compiler *c, stmt_ty s, int is_async) { PyCodeObject *co; PyObject *qualname, *first_const = Py_None; - arguments_ty args = s->v.FunctionDef.args; - expr_ty returns = s->v.FunctionDef.returns; - asdl_seq* decos = s->v.FunctionDef.decorator_list; + arguments_ty args; + expr_ty returns; + identifier name; + asdl_seq* decos; + asdl_seq *body; stmt_ty st; Py_ssize_t i, n, arglength; int docstring, kw_default_count = 0; int num_annotations; + int scope_type; - assert(s->kind == FunctionDef_kind); + + if (is_async) { + assert(s->kind == AsyncFunctionDef_kind); + + args = s->v.AsyncFunctionDef.args; + returns = s->v.AsyncFunctionDef.returns; + decos = s->v.AsyncFunctionDef.decorator_list; + name = s->v.AsyncFunctionDef.name; + body = s->v.AsyncFunctionDef.body; + + scope_type = COMPILER_SCOPE_ASYNC_FUNCTION; + } else { + assert(s->kind == FunctionDef_kind); + + args = s->v.FunctionDef.args; + returns = s->v.FunctionDef.returns; + decos = s->v.FunctionDef.decorator_list; + name = s->v.FunctionDef.name; + body = s->v.FunctionDef.body; + + scope_type = COMPILER_SCOPE_FUNCTION; + } if (!compiler_decorators(c, decos)) return 0; @@ -1672,12 +1714,12 @@ compiler_function(struct compiler *c, stmt_ty s) return 0; assert((num_annotations & 0xFFFF) == num_annotations); - if (!compiler_enter_scope(c, s->v.FunctionDef.name, - COMPILER_SCOPE_FUNCTION, (void *)s, + if (!compiler_enter_scope(c, name, + scope_type, (void *)s, s->lineno)) return 0; - st = (stmt_ty)asdl_seq_GET(s->v.FunctionDef.body, 0); + st = (stmt_ty)asdl_seq_GET(body, 0); docstring = compiler_isdocstring(st); if (docstring && c->c_optimize < 2) first_const = st->v.Expr.value->v.Str.s; @@ -1688,10 +1730,10 @@ compiler_function(struct compiler *c, stmt_ty s) c->u->u_argcount = asdl_seq_LEN(args->args); c->u->u_kwonlyargcount = asdl_seq_LEN(args->kwonlyargs); - n = asdl_seq_LEN(s->v.FunctionDef.body); + n = asdl_seq_LEN(body); /* if there was a docstring, we need to skip the first statement */ for (i = docstring; i < n; i++) { - st = (stmt_ty)asdl_seq_GET(s->v.FunctionDef.body, i); + st = (stmt_ty)asdl_seq_GET(body, i); VISIT_IN_SCOPE(c, stmt, st); } co = assemble(c, 1); @@ -1711,12 +1753,19 @@ compiler_function(struct compiler *c, stmt_ty s) Py_DECREF(qualname); Py_DECREF(co); + if (is_async) { + co->co_flags |= CO_COROUTINE; + /* An async function is always a generator, even + if there is no 'yield' expressions in it. */ + co->co_flags |= CO_GENERATOR; + } + /* decorators */ for (i = 0; i < asdl_seq_LEN(decos); i++) { ADDOP_I(c, CALL_FUNCTION, 1); } - return compiler_nameop(c, s->v.FunctionDef.name, Store); + return compiler_nameop(c, name, Store); } static int @@ -1989,6 +2038,92 @@ compiler_for(struct compiler *c, stmt_ty s) return 1; } + +static int +compiler_async_for(struct compiler *c, stmt_ty s) +{ + static PyObject *stopiter_error = NULL; + basicblock *try, *except, *end, *after_try, *try_cleanup, + *after_loop, *after_loop_else; + + if (stopiter_error == NULL) { + stopiter_error = PyUnicode_InternFromString("StopAsyncIteration"); + if (stopiter_error == NULL) + return 0; + } + + try = compiler_new_block(c); + except = compiler_new_block(c); + end = compiler_new_block(c); + after_try = compiler_new_block(c); + try_cleanup = compiler_new_block(c); + after_loop = compiler_new_block(c); + after_loop_else = compiler_new_block(c); + + if (try == NULL || except == NULL || end == NULL + || after_try == NULL || try_cleanup == NULL) + return 0; + + ADDOP_JREL(c, SETUP_LOOP, after_loop); + if (!compiler_push_fblock(c, LOOP, try)) + return 0; + + VISIT(c, expr, s->v.AsyncFor.iter); + ADDOP(c, GET_AITER); + ADDOP_O(c, LOAD_CONST, Py_None, consts); + ADDOP(c, YIELD_FROM); + + compiler_use_next_block(c, try); + + + ADDOP_JREL(c, SETUP_EXCEPT, except); + if (!compiler_push_fblock(c, EXCEPT, try)) + return 0; + + ADDOP(c, GET_ANEXT); + ADDOP_O(c, LOAD_CONST, Py_None, consts); + ADDOP(c, YIELD_FROM); + VISIT(c, expr, s->v.AsyncFor.target); + ADDOP(c, POP_BLOCK); + compiler_pop_fblock(c, EXCEPT, try); + ADDOP_JREL(c, JUMP_FORWARD, after_try); + + + compiler_use_next_block(c, except); + ADDOP(c, DUP_TOP); + ADDOP_O(c, LOAD_GLOBAL, stopiter_error, names); + ADDOP_I(c, COMPARE_OP, PyCmp_EXC_MATCH); + ADDOP_JABS(c, POP_JUMP_IF_FALSE, try_cleanup); + + ADDOP(c, POP_TOP); + ADDOP(c, POP_TOP); + ADDOP(c, POP_TOP); + ADDOP(c, POP_EXCEPT); /* for SETUP_EXCEPT */ + ADDOP(c, POP_BLOCK); /* for SETUP_LOOP */ + ADDOP_JABS(c, JUMP_ABSOLUTE, after_loop_else); + + + compiler_use_next_block(c, try_cleanup); + ADDOP(c, END_FINALLY); + + compiler_use_next_block(c, after_try); + VISIT_SEQ(c, stmt, s->v.AsyncFor.body); + ADDOP_JABS(c, JUMP_ABSOLUTE, try); + + ADDOP(c, POP_BLOCK); /* for SETUP_LOOP */ + compiler_pop_fblock(c, LOOP, try); + + compiler_use_next_block(c, after_loop); + ADDOP_JABS(c, JUMP_ABSOLUTE, end); + + compiler_use_next_block(c, after_loop_else); + VISIT_SEQ(c, stmt, s->v.For.orelse); + + compiler_use_next_block(c, end); + + return 1; +} + static int compiler_while(struct compiler *c, stmt_ty s) { @@ -2515,7 +2650,7 @@ compiler_visit_stmt(struct compiler *c, stmt_ty s) switch (s->kind) { case FunctionDef_kind: - return compiler_function(c, s); + return compiler_function(c, s, 0); case ClassDef_kind: return compiler_class(c, s); case Return_kind: @@ -2594,7 +2729,14 @@ compiler_visit_stmt(struct compiler *c, stmt_ty s) return compiler_continue(c); case With_kind: return compiler_with(c, s, 0); + case AsyncFunctionDef_kind: + return compiler_function(c, s, 1); + case AsyncWith_kind: + return compiler_async_with(c, s, 0); + case AsyncFor_kind: + return compiler_async_for(c, s); } + return 1; } @@ -3471,6 +3613,102 @@ expr_constant(struct compiler *c, expr_ty e) } } + +/* + Implements the async with statement. + + The semantics outlined in that PEP are as follows: + + async with EXPR as VAR: + BLOCK + + It is implemented roughly as: + + context = EXPR + exit = context.__aexit__ # not calling it + value = await context.__aenter__() + try: + VAR = value # if VAR present in the syntax + BLOCK + finally: + if an exception was raised: + exc = copy of (exception, instance, traceback) + else: + exc = (None, None, None) + if not (await exit(*exc)): + raise + */ +static int +compiler_async_with(struct compiler *c, stmt_ty s, int pos) +{ + basicblock *block, *finally; + withitem_ty item = asdl_seq_GET(s->v.AsyncWith.items, pos); + + assert(s->kind == AsyncWith_kind); + + block = compiler_new_block(c); + finally = compiler_new_block(c); + if (!block || !finally) + return 0; + + /* Evaluate EXPR */ + VISIT(c, expr, item->context_expr); + + ADDOP(c, BEFORE_ASYNC_WITH); + ADDOP(c, GET_AWAITABLE); + ADDOP_O(c, LOAD_CONST, Py_None, consts); + ADDOP(c, YIELD_FROM); + + ADDOP_JREL(c, SETUP_ASYNC_WITH, finally); + + /* SETUP_ASYNC_WITH pushes a finally block. */ + compiler_use_next_block(c, block); + if (!compiler_push_fblock(c, FINALLY_TRY, block)) { + return 0; + } + + if (item->optional_vars) { + VISIT(c, expr, item->optional_vars); + } + else { + /* Discard result from context.__aenter__() */ + ADDOP(c, POP_TOP); + } + + pos++; + if (pos == asdl_seq_LEN(s->v.AsyncWith.items)) + /* BLOCK code */ + VISIT_SEQ(c, stmt, s->v.AsyncWith.body) + else if (!compiler_async_with(c, s, pos)) + return 0; + + /* End of try block; start the finally block */ + ADDOP(c, POP_BLOCK); + compiler_pop_fblock(c, FINALLY_TRY, block); + + ADDOP_O(c, LOAD_CONST, Py_None, consts); + compiler_use_next_block(c, finally); + if (!compiler_push_fblock(c, FINALLY_END, finally)) + return 0; + + /* Finally block starts; context.__exit__ is on the stack under + the exception or return information. Just issue our magic + opcode. */ + ADDOP(c, WITH_CLEANUP_START); + + ADDOP(c, GET_AWAITABLE); + ADDOP_O(c, LOAD_CONST, Py_None, consts); + ADDOP(c, YIELD_FROM); + + ADDOP(c, WITH_CLEANUP_FINISH); + + /* Finally block ends. */ + ADDOP(c, END_FINALLY); + compiler_pop_fblock(c, FINALLY_END, finally); + return 1; +} + + /* Implements the with statement from PEP 343. @@ -3544,7 +3782,8 @@ compiler_with(struct compiler *c, stmt_ty s, int pos) /* Finally block starts; context.__exit__ is on the stack under the exception or return information. Just issue our magic opcode. */ - ADDOP(c, WITH_CLEANUP); + ADDOP(c, WITH_CLEANUP_START); + ADDOP(c, WITH_CLEANUP_FINISH); /* Finally block ends. */ ADDOP(c, END_FINALLY); @@ -3595,6 +3834,8 @@ compiler_visit_expr(struct compiler *c, expr_ty e) case Yield_kind: if (c->u->u_ste->ste_type != FunctionBlock) return compiler_error(c, "'yield' outside function"); + if (c->u->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION) + return compiler_error(c, "'yield' inside async function"); if (e->v.Yield.value) { VISIT(c, expr, e->v.Yield.value); } @@ -3606,11 +3847,28 @@ compiler_visit_expr(struct compiler *c, expr_ty e) case YieldFrom_kind: if (c->u->u_ste->ste_type != FunctionBlock) return compiler_error(c, "'yield' outside function"); + + if (c->u->u_scope_type == COMPILER_SCOPE_ASYNC_FUNCTION) + return compiler_error(c, "'yield from' inside async function"); + VISIT(c, expr, e->v.YieldFrom.value); ADDOP(c, GET_ITER); ADDOP_O(c, LOAD_CONST, Py_None, consts); ADDOP(c, YIELD_FROM); break; + case Await_kind: + if (c->u->u_ste->ste_type != FunctionBlock) + return compiler_error(c, "'await' outside function"); + + /* this check won't be triggered while we have AWAIT token */ + if (c->u->u_scope_type != COMPILER_SCOPE_ASYNC_FUNCTION) + return compiler_error(c, "'await' outside async function"); + + VISIT(c, expr, e->v.Await.value); + ADDOP(c, GET_AWAITABLE); + ADDOP_O(c, LOAD_CONST, Py_None, consts); + ADDOP(c, YIELD_FROM); + break; case Compare_kind: return compiler_compare(c, e); case Call_kind: diff --git a/Python/graminit.c b/Python/graminit.c index 1028ffa20ce..8b236a44d18 100644 --- a/Python/graminit.c +++ b/Python/graminit.c @@ -92,393 +92,406 @@ static state states_4[2] = { static arc arcs_5_0[1] = { {16, 1}, }; -static arc arcs_5_1[2] = { +static arc arcs_5_1[3] = { {18, 2}, {19, 2}, + {20, 2}, }; static arc arcs_5_2[1] = { {0, 2}, }; static state states_5[3] = { {1, arcs_5_0}, - {2, arcs_5_1}, + {3, arcs_5_1}, {1, arcs_5_2}, }; static arc arcs_6_0[1] = { - {20, 1}, + {21, 1}, }; static arc arcs_6_1[1] = { - {21, 2}, + {19, 2}, }; static arc arcs_6_2[1] = { - {22, 3}, + {0, 2}, }; -static arc arcs_6_3[2] = { - {23, 4}, - {25, 5}, -}; -static arc arcs_6_4[1] = { - {24, 6}, -}; -static arc arcs_6_5[1] = { - {26, 7}, -}; -static arc arcs_6_6[1] = { - {25, 5}, -}; -static arc arcs_6_7[1] = { - {0, 7}, -}; -static state states_6[8] = { +static state states_6[3] = { {1, arcs_6_0}, {1, arcs_6_1}, {1, arcs_6_2}, - {2, arcs_6_3}, - {1, arcs_6_4}, - {1, arcs_6_5}, - {1, arcs_6_6}, - {1, arcs_6_7}, }; static arc arcs_7_0[1] = { - {13, 1}, + {22, 1}, }; -static arc arcs_7_1[2] = { - {27, 2}, - {15, 3}, +static arc arcs_7_1[1] = { + {23, 2}, }; static arc arcs_7_2[1] = { - {15, 3}, -}; -static arc arcs_7_3[1] = { - {0, 3}, -}; -static state states_7[4] = { - {1, arcs_7_0}, - {2, arcs_7_1}, - {1, arcs_7_2}, - {1, arcs_7_3}, -}; -static arc arcs_8_0[3] = { - {28, 1}, - {31, 2}, - {32, 3}, -}; -static arc arcs_8_1[3] = { - {29, 4}, - {30, 5}, - {0, 1}, -}; -static arc arcs_8_2[3] = { - {28, 6}, - {30, 7}, - {0, 2}, -}; -static arc arcs_8_3[1] = { - {28, 8}, -}; -static arc arcs_8_4[1] = { - {24, 9}, -}; -static arc arcs_8_5[4] = { - {28, 10}, - {31, 11}, - {32, 3}, - {0, 5}, -}; -static arc arcs_8_6[2] = { - {30, 7}, - {0, 6}, -}; -static arc arcs_8_7[2] = { - {28, 12}, - {32, 3}, -}; -static arc arcs_8_8[1] = { - {0, 8}, -}; -static arc arcs_8_9[2] = { - {30, 5}, - {0, 9}, -}; -static arc arcs_8_10[3] = { - {30, 5}, - {29, 4}, - {0, 10}, -}; -static arc arcs_8_11[3] = { - {28, 13}, - {30, 14}, - {0, 11}, -}; -static arc arcs_8_12[3] = { - {30, 7}, - {29, 15}, - {0, 12}, -}; -static arc arcs_8_13[2] = { - {30, 14}, - {0, 13}, -}; -static arc arcs_8_14[2] = { - {28, 16}, - {32, 3}, -}; -static arc arcs_8_15[1] = { - {24, 6}, -}; -static arc arcs_8_16[3] = { - {30, 14}, - {29, 17}, - {0, 16}, -}; -static arc arcs_8_17[1] = { - {24, 13}, -}; -static state states_8[18] = { - {3, arcs_8_0}, - {3, arcs_8_1}, - {3, arcs_8_2}, - {1, arcs_8_3}, - {1, arcs_8_4}, - {4, arcs_8_5}, - {2, arcs_8_6}, - {2, arcs_8_7}, - {1, arcs_8_8}, - {2, arcs_8_9}, - {3, arcs_8_10}, - {3, arcs_8_11}, - {3, arcs_8_12}, - {2, arcs_8_13}, - {2, arcs_8_14}, - {1, arcs_8_15}, - {3, arcs_8_16}, - {1, arcs_8_17}, -}; -static arc arcs_9_0[1] = { - {21, 1}, -}; -static arc arcs_9_1[2] = { - {25, 2}, - {0, 1}, -}; -static arc arcs_9_2[1] = { {24, 3}, }; -static arc arcs_9_3[1] = { +static arc arcs_7_3[2] = { + {25, 4}, + {27, 5}, +}; +static arc arcs_7_4[1] = { + {26, 6}, +}; +static arc arcs_7_5[1] = { + {28, 7}, +}; +static arc arcs_7_6[1] = { + {27, 5}, +}; +static arc arcs_7_7[1] = { + {0, 7}, +}; +static state states_7[8] = { + {1, arcs_7_0}, + {1, arcs_7_1}, + {1, arcs_7_2}, + {2, arcs_7_3}, + {1, arcs_7_4}, + {1, arcs_7_5}, + {1, arcs_7_6}, + {1, arcs_7_7}, +}; +static arc arcs_8_0[1] = { + {13, 1}, +}; +static arc arcs_8_1[2] = { + {29, 2}, + {15, 3}, +}; +static arc arcs_8_2[1] = { + {15, 3}, +}; +static arc arcs_8_3[1] = { {0, 3}, }; -static state states_9[4] = { - {1, arcs_9_0}, - {2, arcs_9_1}, - {1, arcs_9_2}, - {1, arcs_9_3}, +static state states_8[4] = { + {1, arcs_8_0}, + {2, arcs_8_1}, + {1, arcs_8_2}, + {1, arcs_8_3}, }; -static arc arcs_10_0[3] = { - {34, 1}, - {31, 2}, - {32, 3}, +static arc arcs_9_0[3] = { + {30, 1}, + {33, 2}, + {34, 3}, }; -static arc arcs_10_1[3] = { - {29, 4}, - {30, 5}, +static arc arcs_9_1[3] = { + {31, 4}, + {32, 5}, {0, 1}, }; -static arc arcs_10_2[3] = { - {34, 6}, - {30, 7}, +static arc arcs_9_2[3] = { + {30, 6}, + {32, 7}, {0, 2}, }; -static arc arcs_10_3[1] = { - {34, 8}, +static arc arcs_9_3[1] = { + {30, 8}, }; -static arc arcs_10_4[1] = { - {24, 9}, +static arc arcs_9_4[1] = { + {26, 9}, }; -static arc arcs_10_5[4] = { - {34, 10}, - {31, 11}, - {32, 3}, +static arc arcs_9_5[4] = { + {30, 10}, + {33, 11}, + {34, 3}, {0, 5}, }; -static arc arcs_10_6[2] = { - {30, 7}, +static arc arcs_9_6[2] = { + {32, 7}, {0, 6}, }; -static arc arcs_10_7[2] = { - {34, 12}, - {32, 3}, +static arc arcs_9_7[2] = { + {30, 12}, + {34, 3}, }; -static arc arcs_10_8[1] = { +static arc arcs_9_8[1] = { {0, 8}, }; -static arc arcs_10_9[2] = { - {30, 5}, +static arc arcs_9_9[2] = { + {32, 5}, {0, 9}, }; -static arc arcs_10_10[3] = { - {30, 5}, - {29, 4}, +static arc arcs_9_10[3] = { + {32, 5}, + {31, 4}, {0, 10}, }; -static arc arcs_10_11[3] = { - {34, 13}, - {30, 14}, +static arc arcs_9_11[3] = { + {30, 13}, + {32, 14}, {0, 11}, }; -static arc arcs_10_12[3] = { - {30, 7}, - {29, 15}, +static arc arcs_9_12[3] = { + {32, 7}, + {31, 15}, {0, 12}, }; -static arc arcs_10_13[2] = { - {30, 14}, +static arc arcs_9_13[2] = { + {32, 14}, {0, 13}, }; -static arc arcs_10_14[2] = { - {34, 16}, - {32, 3}, +static arc arcs_9_14[2] = { + {30, 16}, + {34, 3}, }; -static arc arcs_10_15[1] = { - {24, 6}, +static arc arcs_9_15[1] = { + {26, 6}, }; -static arc arcs_10_16[3] = { - {30, 14}, - {29, 17}, +static arc arcs_9_16[3] = { + {32, 14}, + {31, 17}, {0, 16}, }; -static arc arcs_10_17[1] = { - {24, 13}, +static arc arcs_9_17[1] = { + {26, 13}, }; -static state states_10[18] = { - {3, arcs_10_0}, - {3, arcs_10_1}, - {3, arcs_10_2}, - {1, arcs_10_3}, - {1, arcs_10_4}, - {4, arcs_10_5}, - {2, arcs_10_6}, - {2, arcs_10_7}, - {1, arcs_10_8}, - {2, arcs_10_9}, - {3, arcs_10_10}, - {3, arcs_10_11}, - {3, arcs_10_12}, - {2, arcs_10_13}, - {2, arcs_10_14}, - {1, arcs_10_15}, - {3, arcs_10_16}, - {1, arcs_10_17}, +static state states_9[18] = { + {3, arcs_9_0}, + {3, arcs_9_1}, + {3, arcs_9_2}, + {1, arcs_9_3}, + {1, arcs_9_4}, + {4, arcs_9_5}, + {2, arcs_9_6}, + {2, arcs_9_7}, + {1, arcs_9_8}, + {2, arcs_9_9}, + {3, arcs_9_10}, + {3, arcs_9_11}, + {3, arcs_9_12}, + {2, arcs_9_13}, + {2, arcs_9_14}, + {1, arcs_9_15}, + {3, arcs_9_16}, + {1, arcs_9_17}, }; -static arc arcs_11_0[1] = { - {21, 1}, +static arc arcs_10_0[1] = { + {23, 1}, }; -static arc arcs_11_1[1] = { +static arc arcs_10_1[2] = { + {27, 2}, {0, 1}, }; -static state states_11[2] = { - {1, arcs_11_0}, - {1, arcs_11_1}, +static arc arcs_10_2[1] = { + {26, 3}, }; -static arc arcs_12_0[2] = { - {3, 1}, - {4, 1}, +static arc arcs_10_3[1] = { + {0, 3}, +}; +static state states_10[4] = { + {1, arcs_10_0}, + {2, arcs_10_1}, + {1, arcs_10_2}, + {1, arcs_10_3}, +}; +static arc arcs_11_0[3] = { + {36, 1}, + {33, 2}, + {34, 3}, +}; +static arc arcs_11_1[3] = { + {31, 4}, + {32, 5}, + {0, 1}, +}; +static arc arcs_11_2[3] = { + {36, 6}, + {32, 7}, + {0, 2}, +}; +static arc arcs_11_3[1] = { + {36, 8}, +}; +static arc arcs_11_4[1] = { + {26, 9}, +}; +static arc arcs_11_5[4] = { + {36, 10}, + {33, 11}, + {34, 3}, + {0, 5}, +}; +static arc arcs_11_6[2] = { + {32, 7}, + {0, 6}, +}; +static arc arcs_11_7[2] = { + {36, 12}, + {34, 3}, +}; +static arc arcs_11_8[1] = { + {0, 8}, +}; +static arc arcs_11_9[2] = { + {32, 5}, + {0, 9}, +}; +static arc arcs_11_10[3] = { + {32, 5}, + {31, 4}, + {0, 10}, +}; +static arc arcs_11_11[3] = { + {36, 13}, + {32, 14}, + {0, 11}, +}; +static arc arcs_11_12[3] = { + {32, 7}, + {31, 15}, + {0, 12}, +}; +static arc arcs_11_13[2] = { + {32, 14}, + {0, 13}, +}; +static arc arcs_11_14[2] = { + {36, 16}, + {34, 3}, +}; +static arc arcs_11_15[1] = { + {26, 6}, +}; +static arc arcs_11_16[3] = { + {32, 14}, + {31, 17}, + {0, 16}, +}; +static arc arcs_11_17[1] = { + {26, 13}, +}; +static state states_11[18] = { + {3, arcs_11_0}, + {3, arcs_11_1}, + {3, arcs_11_2}, + {1, arcs_11_3}, + {1, arcs_11_4}, + {4, arcs_11_5}, + {2, arcs_11_6}, + {2, arcs_11_7}, + {1, arcs_11_8}, + {2, arcs_11_9}, + {3, arcs_11_10}, + {3, arcs_11_11}, + {3, arcs_11_12}, + {2, arcs_11_13}, + {2, arcs_11_14}, + {1, arcs_11_15}, + {3, arcs_11_16}, + {1, arcs_11_17}, +}; +static arc arcs_12_0[1] = { + {23, 1}, }; static arc arcs_12_1[1] = { {0, 1}, }; static state states_12[2] = { - {2, arcs_12_0}, + {1, arcs_12_0}, {1, arcs_12_1}, }; -static arc arcs_13_0[1] = { - {35, 1}, +static arc arcs_13_0[2] = { + {3, 1}, + {4, 1}, }; -static arc arcs_13_1[2] = { - {36, 2}, +static arc arcs_13_1[1] = { + {0, 1}, +}; +static state states_13[2] = { + {2, arcs_13_0}, + {1, arcs_13_1}, +}; +static arc arcs_14_0[1] = { + {37, 1}, +}; +static arc arcs_14_1[2] = { + {38, 2}, {2, 3}, }; -static arc arcs_13_2[2] = { - {35, 1}, +static arc arcs_14_2[2] = { + {37, 1}, {2, 3}, }; -static arc arcs_13_3[1] = { +static arc arcs_14_3[1] = { {0, 3}, }; -static state states_13[4] = { - {1, arcs_13_0}, - {2, arcs_13_1}, - {2, arcs_13_2}, - {1, arcs_13_3}, +static state states_14[4] = { + {1, arcs_14_0}, + {2, arcs_14_1}, + {2, arcs_14_2}, + {1, arcs_14_3}, }; -static arc arcs_14_0[8] = { - {37, 1}, - {38, 1}, +static arc arcs_15_0[8] = { {39, 1}, {40, 1}, {41, 1}, {42, 1}, {43, 1}, {44, 1}, -}; -static arc arcs_14_1[1] = { - {0, 1}, -}; -static state states_14[2] = { - {8, arcs_14_0}, - {1, arcs_14_1}, -}; -static arc arcs_15_0[1] = { {45, 1}, + {46, 1}, }; -static arc arcs_15_1[3] = { - {46, 2}, - {29, 3}, +static arc arcs_15_1[1] = { {0, 1}, }; -static arc arcs_15_2[2] = { - {47, 4}, +static state states_15[2] = { + {8, arcs_15_0}, + {1, arcs_15_1}, +}; +static arc arcs_16_0[1] = { + {47, 1}, +}; +static arc arcs_16_1[3] = { + {48, 2}, + {31, 3}, + {0, 1}, +}; +static arc arcs_16_2[2] = { + {49, 4}, {9, 4}, }; -static arc arcs_15_3[2] = { +static arc arcs_16_3[2] = { + {49, 5}, {47, 5}, - {45, 5}, }; -static arc arcs_15_4[1] = { +static arc arcs_16_4[1] = { {0, 4}, }; -static arc arcs_15_5[2] = { - {29, 3}, +static arc arcs_16_5[2] = { + {31, 3}, {0, 5}, }; -static state states_15[6] = { - {1, arcs_15_0}, - {3, arcs_15_1}, - {2, arcs_15_2}, - {2, arcs_15_3}, - {1, arcs_15_4}, - {2, arcs_15_5}, +static state states_16[6] = { + {1, arcs_16_0}, + {3, arcs_16_1}, + {2, arcs_16_2}, + {2, arcs_16_3}, + {1, arcs_16_4}, + {2, arcs_16_5}, }; -static arc arcs_16_0[2] = { - {24, 1}, - {48, 1}, +static arc arcs_17_0[2] = { + {26, 1}, + {50, 1}, }; -static arc arcs_16_1[2] = { - {30, 2}, +static arc arcs_17_1[2] = { + {32, 2}, {0, 1}, }; -static arc arcs_16_2[3] = { - {24, 1}, - {48, 1}, +static arc arcs_17_2[3] = { + {26, 1}, + {50, 1}, {0, 2}, }; -static state states_16[3] = { - {2, arcs_16_0}, - {2, arcs_16_1}, - {3, arcs_16_2}, +static state states_17[3] = { + {2, arcs_17_0}, + {2, arcs_17_1}, + {3, arcs_17_2}, }; -static arc arcs_17_0[13] = { - {49, 1}, - {50, 1}, +static arc arcs_18_0[13] = { {51, 1}, {52, 1}, {53, 1}, @@ -490,64 +503,56 @@ static arc arcs_17_0[13] = { {59, 1}, {60, 1}, {61, 1}, -}; -static arc arcs_17_1[1] = { - {0, 1}, -}; -static state states_17[2] = { - {13, arcs_17_0}, - {1, arcs_17_1}, -}; -static arc arcs_18_0[1] = { {62, 1}, + {63, 1}, }; static arc arcs_18_1[1] = { - {63, 2}, + {0, 1}, }; -static arc arcs_18_2[1] = { - {0, 2}, -}; -static state states_18[3] = { - {1, arcs_18_0}, +static state states_18[2] = { + {13, arcs_18_0}, {1, arcs_18_1}, - {1, arcs_18_2}, }; static arc arcs_19_0[1] = { {64, 1}, }; static arc arcs_19_1[1] = { - {0, 1}, + {65, 2}, }; -static state states_19[2] = { +static arc arcs_19_2[1] = { + {0, 2}, +}; +static state states_19[3] = { {1, arcs_19_0}, {1, arcs_19_1}, + {1, arcs_19_2}, }; -static arc arcs_20_0[5] = { - {65, 1}, +static arc arcs_20_0[1] = { {66, 1}, - {67, 1}, - {68, 1}, - {69, 1}, }; static arc arcs_20_1[1] = { {0, 1}, }; static state states_20[2] = { - {5, arcs_20_0}, + {1, arcs_20_0}, {1, arcs_20_1}, }; -static arc arcs_21_0[1] = { +static arc arcs_21_0[5] = { + {67, 1}, + {68, 1}, + {69, 1}, {70, 1}, + {71, 1}, }; static arc arcs_21_1[1] = { {0, 1}, }; static state states_21[2] = { - {1, arcs_21_0}, + {5, arcs_21_0}, {1, arcs_21_1}, }; static arc arcs_22_0[1] = { - {71, 1}, + {72, 1}, }; static arc arcs_22_1[1] = { {0, 1}, @@ -557,148 +562,139 @@ static state states_22[2] = { {1, arcs_22_1}, }; static arc arcs_23_0[1] = { - {72, 1}, + {73, 1}, }; -static arc arcs_23_1[2] = { +static arc arcs_23_1[1] = { + {0, 1}, +}; +static state states_23[2] = { + {1, arcs_23_0}, + {1, arcs_23_1}, +}; +static arc arcs_24_0[1] = { + {74, 1}, +}; +static arc arcs_24_1[2] = { {9, 2}, {0, 1}, }; -static arc arcs_23_2[1] = { +static arc arcs_24_2[1] = { {0, 2}, }; -static state states_23[3] = { - {1, arcs_23_0}, - {2, arcs_23_1}, - {1, arcs_23_2}, -}; -static arc arcs_24_0[1] = { - {47, 1}, -}; -static arc arcs_24_1[1] = { - {0, 1}, -}; -static state states_24[2] = { +static state states_24[3] = { {1, arcs_24_0}, - {1, arcs_24_1}, + {2, arcs_24_1}, + {1, arcs_24_2}, }; static arc arcs_25_0[1] = { - {73, 1}, + {49, 1}, }; -static arc arcs_25_1[2] = { - {24, 2}, +static arc arcs_25_1[1] = { {0, 1}, }; -static arc arcs_25_2[2] = { - {74, 3}, +static state states_25[2] = { + {1, arcs_25_0}, + {1, arcs_25_1}, +}; +static arc arcs_26_0[1] = { + {75, 1}, +}; +static arc arcs_26_1[2] = { + {26, 2}, + {0, 1}, +}; +static arc arcs_26_2[2] = { + {76, 3}, {0, 2}, }; -static arc arcs_25_3[1] = { - {24, 4}, +static arc arcs_26_3[1] = { + {26, 4}, }; -static arc arcs_25_4[1] = { +static arc arcs_26_4[1] = { {0, 4}, }; -static state states_25[5] = { - {1, arcs_25_0}, - {2, arcs_25_1}, - {2, arcs_25_2}, - {1, arcs_25_3}, - {1, arcs_25_4}, +static state states_26[5] = { + {1, arcs_26_0}, + {2, arcs_26_1}, + {2, arcs_26_2}, + {1, arcs_26_3}, + {1, arcs_26_4}, }; -static arc arcs_26_0[2] = { - {75, 1}, - {76, 1}, -}; -static arc arcs_26_1[1] = { - {0, 1}, -}; -static state states_26[2] = { - {2, arcs_26_0}, - {1, arcs_26_1}, -}; -static arc arcs_27_0[1] = { +static arc arcs_27_0[2] = { {77, 1}, + {78, 1}, }; static arc arcs_27_1[1] = { - {78, 2}, -}; -static arc arcs_27_2[1] = { - {0, 2}, -}; -static state states_27[3] = { - {1, arcs_27_0}, - {1, arcs_27_1}, - {1, arcs_27_2}, -}; -static arc arcs_28_0[1] = { - {74, 1}, -}; -static arc arcs_28_1[3] = { - {79, 2}, - {80, 2}, - {12, 3}, -}; -static arc arcs_28_2[4] = { - {79, 2}, - {80, 2}, - {12, 3}, - {77, 4}, -}; -static arc arcs_28_3[1] = { - {77, 4}, -}; -static arc arcs_28_4[3] = { - {31, 5}, - {13, 6}, - {81, 5}, -}; -static arc arcs_28_5[1] = { - {0, 5}, -}; -static arc arcs_28_6[1] = { - {81, 7}, -}; -static arc arcs_28_7[1] = { - {15, 5}, -}; -static state states_28[8] = { - {1, arcs_28_0}, - {3, arcs_28_1}, - {4, arcs_28_2}, - {1, arcs_28_3}, - {3, arcs_28_4}, - {1, arcs_28_5}, - {1, arcs_28_6}, - {1, arcs_28_7}, -}; -static arc arcs_29_0[1] = { - {21, 1}, -}; -static arc arcs_29_1[2] = { - {83, 2}, {0, 1}, }; -static arc arcs_29_2[1] = { - {21, 3}, +static state states_27[2] = { + {2, arcs_27_0}, + {1, arcs_27_1}, +}; +static arc arcs_28_0[1] = { + {79, 1}, +}; +static arc arcs_28_1[1] = { + {80, 2}, +}; +static arc arcs_28_2[1] = { + {0, 2}, +}; +static state states_28[3] = { + {1, arcs_28_0}, + {1, arcs_28_1}, + {1, arcs_28_2}, +}; +static arc arcs_29_0[1] = { + {76, 1}, +}; +static arc arcs_29_1[3] = { + {81, 2}, + {82, 2}, + {12, 3}, +}; +static arc arcs_29_2[4] = { + {81, 2}, + {82, 2}, + {12, 3}, + {79, 4}, }; static arc arcs_29_3[1] = { - {0, 3}, + {79, 4}, }; -static state states_29[4] = { +static arc arcs_29_4[3] = { + {33, 5}, + {13, 6}, + {83, 5}, +}; +static arc arcs_29_5[1] = { + {0, 5}, +}; +static arc arcs_29_6[1] = { + {83, 7}, +}; +static arc arcs_29_7[1] = { + {15, 5}, +}; +static state states_29[8] = { {1, arcs_29_0}, - {2, arcs_29_1}, - {1, arcs_29_2}, + {3, arcs_29_1}, + {4, arcs_29_2}, {1, arcs_29_3}, + {3, arcs_29_4}, + {1, arcs_29_5}, + {1, arcs_29_6}, + {1, arcs_29_7}, }; static arc arcs_30_0[1] = { - {12, 1}, + {23, 1}, }; static arc arcs_30_1[2] = { - {83, 2}, + {85, 2}, {0, 1}, }; static arc arcs_30_2[1] = { - {21, 3}, + {23, 3}, }; static arc arcs_30_3[1] = { {0, 3}, @@ -710,37 +706,45 @@ static state states_30[4] = { {1, arcs_30_3}, }; static arc arcs_31_0[1] = { - {82, 1}, + {12, 1}, }; static arc arcs_31_1[2] = { - {30, 2}, + {85, 2}, {0, 1}, }; -static arc arcs_31_2[2] = { - {82, 1}, - {0, 2}, +static arc arcs_31_2[1] = { + {23, 3}, }; -static state states_31[3] = { +static arc arcs_31_3[1] = { + {0, 3}, +}; +static state states_31[4] = { {1, arcs_31_0}, {2, arcs_31_1}, - {2, arcs_31_2}, + {1, arcs_31_2}, + {1, arcs_31_3}, }; static arc arcs_32_0[1] = { {84, 1}, }; static arc arcs_32_1[2] = { - {30, 0}, + {32, 2}, {0, 1}, }; -static state states_32[2] = { +static arc arcs_32_2[2] = { + {84, 1}, + {0, 2}, +}; +static state states_32[3] = { {1, arcs_32_0}, {2, arcs_32_1}, + {2, arcs_32_2}, }; static arc arcs_33_0[1] = { - {21, 1}, + {86, 1}, }; static arc arcs_33_1[2] = { - {79, 0}, + {32, 0}, {0, 1}, }; static state states_33[2] = { @@ -748,28 +752,24 @@ static state states_33[2] = { {2, arcs_33_1}, }; static arc arcs_34_0[1] = { - {85, 1}, + {23, 1}, }; -static arc arcs_34_1[1] = { - {21, 2}, +static arc arcs_34_1[2] = { + {81, 0}, + {0, 1}, }; -static arc arcs_34_2[2] = { - {30, 1}, - {0, 2}, -}; -static state states_34[3] = { +static state states_34[2] = { {1, arcs_34_0}, - {1, arcs_34_1}, - {2, arcs_34_2}, + {2, arcs_34_1}, }; static arc arcs_35_0[1] = { - {86, 1}, + {87, 1}, }; static arc arcs_35_1[1] = { - {21, 2}, + {23, 2}, }; static arc arcs_35_2[2] = { - {30, 1}, + {32, 1}, {0, 2}, }; static state states_35[3] = { @@ -778,432 +778,438 @@ static state states_35[3] = { {2, arcs_35_2}, }; static arc arcs_36_0[1] = { - {87, 1}, + {88, 1}, }; static arc arcs_36_1[1] = { - {24, 2}, + {23, 2}, }; static arc arcs_36_2[2] = { - {30, 3}, + {32, 1}, {0, 2}, }; -static arc arcs_36_3[1] = { - {24, 4}, -}; -static arc arcs_36_4[1] = { - {0, 4}, -}; -static state states_36[5] = { +static state states_36[3] = { {1, arcs_36_0}, {1, arcs_36_1}, {2, arcs_36_2}, - {1, arcs_36_3}, - {1, arcs_36_4}, }; -static arc arcs_37_0[8] = { - {88, 1}, +static arc arcs_37_0[1] = { {89, 1}, +}; +static arc arcs_37_1[1] = { + {26, 2}, +}; +static arc arcs_37_2[2] = { + {32, 3}, + {0, 2}, +}; +static arc arcs_37_3[1] = { + {26, 4}, +}; +static arc arcs_37_4[1] = { + {0, 4}, +}; +static state states_37[5] = { + {1, arcs_37_0}, + {1, arcs_37_1}, + {2, arcs_37_2}, + {1, arcs_37_3}, + {1, arcs_37_4}, +}; +static arc arcs_38_0[9] = { {90, 1}, {91, 1}, {92, 1}, + {93, 1}, + {94, 1}, {19, 1}, {18, 1}, {17, 1}, -}; -static arc arcs_37_1[1] = { - {0, 1}, -}; -static state states_37[2] = { - {8, arcs_37_0}, - {1, arcs_37_1}, -}; -static arc arcs_38_0[1] = { - {93, 1}, + {95, 1}, }; static arc arcs_38_1[1] = { - {24, 2}, + {0, 1}, }; -static arc arcs_38_2[1] = { - {25, 3}, -}; -static arc arcs_38_3[1] = { - {26, 4}, -}; -static arc arcs_38_4[3] = { - {94, 1}, - {95, 5}, - {0, 4}, -}; -static arc arcs_38_5[1] = { - {25, 6}, -}; -static arc arcs_38_6[1] = { - {26, 7}, -}; -static arc arcs_38_7[1] = { - {0, 7}, -}; -static state states_38[8] = { - {1, arcs_38_0}, +static state states_38[2] = { + {9, arcs_38_0}, {1, arcs_38_1}, - {1, arcs_38_2}, - {1, arcs_38_3}, - {3, arcs_38_4}, - {1, arcs_38_5}, - {1, arcs_38_6}, - {1, arcs_38_7}, }; static arc arcs_39_0[1] = { - {96, 1}, + {21, 1}, }; -static arc arcs_39_1[1] = { - {24, 2}, +static arc arcs_39_1[3] = { + {19, 2}, + {94, 2}, + {92, 2}, }; static arc arcs_39_2[1] = { - {25, 3}, + {0, 2}, }; -static arc arcs_39_3[1] = { - {26, 4}, -}; -static arc arcs_39_4[2] = { - {95, 5}, - {0, 4}, -}; -static arc arcs_39_5[1] = { - {25, 6}, -}; -static arc arcs_39_6[1] = { - {26, 7}, -}; -static arc arcs_39_7[1] = { - {0, 7}, -}; -static state states_39[8] = { +static state states_39[3] = { {1, arcs_39_0}, - {1, arcs_39_1}, + {3, arcs_39_1}, {1, arcs_39_2}, - {1, arcs_39_3}, - {2, arcs_39_4}, - {1, arcs_39_5}, - {1, arcs_39_6}, - {1, arcs_39_7}, }; static arc arcs_40_0[1] = { - {97, 1}, + {96, 1}, }; static arc arcs_40_1[1] = { - {63, 2}, + {26, 2}, }; static arc arcs_40_2[1] = { - {98, 3}, + {27, 3}, }; static arc arcs_40_3[1] = { - {9, 4}, + {28, 4}, }; -static arc arcs_40_4[1] = { - {25, 5}, +static arc arcs_40_4[3] = { + {97, 1}, + {98, 5}, + {0, 4}, }; static arc arcs_40_5[1] = { - {26, 6}, + {27, 6}, }; -static arc arcs_40_6[2] = { - {95, 7}, - {0, 6}, +static arc arcs_40_6[1] = { + {28, 7}, }; static arc arcs_40_7[1] = { - {25, 8}, + {0, 7}, }; -static arc arcs_40_8[1] = { - {26, 9}, -}; -static arc arcs_40_9[1] = { - {0, 9}, -}; -static state states_40[10] = { +static state states_40[8] = { {1, arcs_40_0}, {1, arcs_40_1}, {1, arcs_40_2}, {1, arcs_40_3}, - {1, arcs_40_4}, + {3, arcs_40_4}, {1, arcs_40_5}, - {2, arcs_40_6}, + {1, arcs_40_6}, {1, arcs_40_7}, - {1, arcs_40_8}, - {1, arcs_40_9}, }; static arc arcs_41_0[1] = { {99, 1}, }; static arc arcs_41_1[1] = { - {25, 2}, + {26, 2}, }; static arc arcs_41_2[1] = { - {26, 3}, + {27, 3}, }; -static arc arcs_41_3[2] = { - {100, 4}, - {101, 5}, +static arc arcs_41_3[1] = { + {28, 4}, }; -static arc arcs_41_4[1] = { - {25, 6}, +static arc arcs_41_4[2] = { + {98, 5}, + {0, 4}, }; static arc arcs_41_5[1] = { - {25, 7}, + {27, 6}, }; static arc arcs_41_6[1] = { - {26, 8}, + {28, 7}, }; static arc arcs_41_7[1] = { - {26, 9}, + {0, 7}, }; -static arc arcs_41_8[4] = { - {100, 4}, - {95, 10}, - {101, 5}, - {0, 8}, -}; -static arc arcs_41_9[1] = { - {0, 9}, -}; -static arc arcs_41_10[1] = { - {25, 11}, -}; -static arc arcs_41_11[1] = { - {26, 12}, -}; -static arc arcs_41_12[2] = { - {101, 5}, - {0, 12}, -}; -static state states_41[13] = { +static state states_41[8] = { {1, arcs_41_0}, {1, arcs_41_1}, {1, arcs_41_2}, - {2, arcs_41_3}, - {1, arcs_41_4}, + {1, arcs_41_3}, + {2, arcs_41_4}, {1, arcs_41_5}, {1, arcs_41_6}, {1, arcs_41_7}, - {4, arcs_41_8}, - {1, arcs_41_9}, - {1, arcs_41_10}, - {1, arcs_41_11}, - {2, arcs_41_12}, }; static arc arcs_42_0[1] = { - {102, 1}, + {100, 1}, }; static arc arcs_42_1[1] = { - {103, 2}, + {65, 2}, }; -static arc arcs_42_2[2] = { - {30, 1}, - {25, 3}, +static arc arcs_42_2[1] = { + {101, 3}, }; static arc arcs_42_3[1] = { - {26, 4}, + {9, 4}, }; static arc arcs_42_4[1] = { - {0, 4}, + {27, 5}, }; -static state states_42[5] = { +static arc arcs_42_5[1] = { + {28, 6}, +}; +static arc arcs_42_6[2] = { + {98, 7}, + {0, 6}, +}; +static arc arcs_42_7[1] = { + {27, 8}, +}; +static arc arcs_42_8[1] = { + {28, 9}, +}; +static arc arcs_42_9[1] = { + {0, 9}, +}; +static state states_42[10] = { {1, arcs_42_0}, {1, arcs_42_1}, - {2, arcs_42_2}, + {1, arcs_42_2}, {1, arcs_42_3}, {1, arcs_42_4}, + {1, arcs_42_5}, + {2, arcs_42_6}, + {1, arcs_42_7}, + {1, arcs_42_8}, + {1, arcs_42_9}, }; static arc arcs_43_0[1] = { - {24, 1}, + {102, 1}, }; -static arc arcs_43_1[2] = { - {83, 2}, - {0, 1}, +static arc arcs_43_1[1] = { + {27, 2}, }; static arc arcs_43_2[1] = { - {104, 3}, + {28, 3}, }; -static arc arcs_43_3[1] = { - {0, 3}, +static arc arcs_43_3[2] = { + {103, 4}, + {104, 5}, }; -static state states_43[4] = { +static arc arcs_43_4[1] = { + {27, 6}, +}; +static arc arcs_43_5[1] = { + {27, 7}, +}; +static arc arcs_43_6[1] = { + {28, 8}, +}; +static arc arcs_43_7[1] = { + {28, 9}, +}; +static arc arcs_43_8[4] = { + {103, 4}, + {98, 10}, + {104, 5}, + {0, 8}, +}; +static arc arcs_43_9[1] = { + {0, 9}, +}; +static arc arcs_43_10[1] = { + {27, 11}, +}; +static arc arcs_43_11[1] = { + {28, 12}, +}; +static arc arcs_43_12[2] = { + {104, 5}, + {0, 12}, +}; +static state states_43[13] = { {1, arcs_43_0}, - {2, arcs_43_1}, + {1, arcs_43_1}, {1, arcs_43_2}, - {1, arcs_43_3}, + {2, arcs_43_3}, + {1, arcs_43_4}, + {1, arcs_43_5}, + {1, arcs_43_6}, + {1, arcs_43_7}, + {4, arcs_43_8}, + {1, arcs_43_9}, + {1, arcs_43_10}, + {1, arcs_43_11}, + {2, arcs_43_12}, }; static arc arcs_44_0[1] = { {105, 1}, }; -static arc arcs_44_1[2] = { - {24, 2}, - {0, 1}, +static arc arcs_44_1[1] = { + {106, 2}, }; static arc arcs_44_2[2] = { - {83, 3}, - {0, 2}, + {32, 1}, + {27, 3}, }; static arc arcs_44_3[1] = { - {21, 4}, + {28, 4}, }; static arc arcs_44_4[1] = { {0, 4}, }; static state states_44[5] = { {1, arcs_44_0}, - {2, arcs_44_1}, + {1, arcs_44_1}, {2, arcs_44_2}, {1, arcs_44_3}, {1, arcs_44_4}, }; -static arc arcs_45_0[2] = { - {3, 1}, - {2, 2}, +static arc arcs_45_0[1] = { + {26, 1}, }; -static arc arcs_45_1[1] = { +static arc arcs_45_1[2] = { + {85, 2}, {0, 1}, }; static arc arcs_45_2[1] = { - {106, 3}, + {107, 3}, }; static arc arcs_45_3[1] = { - {6, 4}, + {0, 3}, }; -static arc arcs_45_4[2] = { - {6, 4}, - {107, 1}, -}; -static state states_45[5] = { - {2, arcs_45_0}, - {1, arcs_45_1}, +static state states_45[4] = { + {1, arcs_45_0}, + {2, arcs_45_1}, {1, arcs_45_2}, {1, arcs_45_3}, - {2, arcs_45_4}, }; -static arc arcs_46_0[2] = { +static arc arcs_46_0[1] = { {108, 1}, - {109, 2}, }; static arc arcs_46_1[2] = { - {93, 3}, + {26, 2}, {0, 1}, }; -static arc arcs_46_2[1] = { +static arc arcs_46_2[2] = { + {85, 3}, {0, 2}, }; static arc arcs_46_3[1] = { - {108, 4}, + {23, 4}, }; static arc arcs_46_4[1] = { - {95, 5}, + {0, 4}, }; -static arc arcs_46_5[1] = { - {24, 2}, -}; -static state states_46[6] = { - {2, arcs_46_0}, +static state states_46[5] = { + {1, arcs_46_0}, {2, arcs_46_1}, - {1, arcs_46_2}, + {2, arcs_46_2}, {1, arcs_46_3}, {1, arcs_46_4}, - {1, arcs_46_5}, }; static arc arcs_47_0[2] = { - {108, 1}, - {111, 1}, + {3, 1}, + {2, 2}, }; static arc arcs_47_1[1] = { {0, 1}, }; -static state states_47[2] = { +static arc arcs_47_2[1] = { + {109, 3}, +}; +static arc arcs_47_3[1] = { + {6, 4}, +}; +static arc arcs_47_4[2] = { + {6, 4}, + {110, 1}, +}; +static state states_47[5] = { {2, arcs_47_0}, {1, arcs_47_1}, + {1, arcs_47_2}, + {1, arcs_47_3}, + {2, arcs_47_4}, }; -static arc arcs_48_0[1] = { - {112, 1}, +static arc arcs_48_0[2] = { + {111, 1}, + {112, 2}, }; static arc arcs_48_1[2] = { - {33, 2}, - {25, 3}, + {96, 3}, + {0, 1}, }; static arc arcs_48_2[1] = { - {25, 3}, + {0, 2}, }; static arc arcs_48_3[1] = { - {24, 4}, + {111, 4}, }; static arc arcs_48_4[1] = { - {0, 4}, + {98, 5}, }; -static state states_48[5] = { - {1, arcs_48_0}, +static arc arcs_48_5[1] = { + {26, 2}, +}; +static state states_48[6] = { + {2, arcs_48_0}, {2, arcs_48_1}, {1, arcs_48_2}, {1, arcs_48_3}, {1, arcs_48_4}, + {1, arcs_48_5}, }; -static arc arcs_49_0[1] = { - {112, 1}, +static arc arcs_49_0[2] = { + {111, 1}, + {114, 1}, }; -static arc arcs_49_1[2] = { - {33, 2}, - {25, 3}, -}; -static arc arcs_49_2[1] = { - {25, 3}, -}; -static arc arcs_49_3[1] = { - {110, 4}, -}; -static arc arcs_49_4[1] = { - {0, 4}, -}; -static state states_49[5] = { - {1, arcs_49_0}, - {2, arcs_49_1}, - {1, arcs_49_2}, - {1, arcs_49_3}, - {1, arcs_49_4}, -}; -static arc arcs_50_0[1] = { - {113, 1}, -}; -static arc arcs_50_1[2] = { - {114, 0}, +static arc arcs_49_1[1] = { {0, 1}, }; -static state states_50[2] = { +static state states_49[2] = { + {2, arcs_49_0}, + {1, arcs_49_1}, +}; +static arc arcs_50_0[1] = { + {115, 1}, +}; +static arc arcs_50_1[2] = { + {35, 2}, + {27, 3}, +}; +static arc arcs_50_2[1] = { + {27, 3}, +}; +static arc arcs_50_3[1] = { + {26, 4}, +}; +static arc arcs_50_4[1] = { + {0, 4}, +}; +static state states_50[5] = { {1, arcs_50_0}, {2, arcs_50_1}, + {1, arcs_50_2}, + {1, arcs_50_3}, + {1, arcs_50_4}, }; static arc arcs_51_0[1] = { {115, 1}, }; static arc arcs_51_1[2] = { - {116, 0}, - {0, 1}, + {35, 2}, + {27, 3}, }; -static state states_51[2] = { +static arc arcs_51_2[1] = { + {27, 3}, +}; +static arc arcs_51_3[1] = { + {113, 4}, +}; +static arc arcs_51_4[1] = { + {0, 4}, +}; +static state states_51[5] = { {1, arcs_51_0}, {2, arcs_51_1}, + {1, arcs_51_2}, + {1, arcs_51_3}, + {1, arcs_51_4}, }; -static arc arcs_52_0[2] = { - {117, 1}, - {118, 2}, +static arc arcs_52_0[1] = { + {116, 1}, }; -static arc arcs_52_1[1] = { - {115, 2}, +static arc arcs_52_1[2] = { + {117, 0}, + {0, 1}, }; -static arc arcs_52_2[1] = { - {0, 2}, -}; -static state states_52[3] = { - {2, arcs_52_0}, - {1, arcs_52_1}, - {1, arcs_52_2}, +static state states_52[2] = { + {1, arcs_52_0}, + {2, arcs_52_1}, }; static arc arcs_53_0[1] = { - {104, 1}, + {118, 1}, }; static arc arcs_53_1[2] = { {119, 0}, @@ -1213,75 +1219,79 @@ static state states_53[2] = { {1, arcs_53_0}, {2, arcs_53_1}, }; -static arc arcs_54_0[10] = { +static arc arcs_54_0[2] = { {120, 1}, - {121, 1}, - {122, 1}, + {121, 2}, +}; +static arc arcs_54_1[1] = { + {118, 2}, +}; +static arc arcs_54_2[1] = { + {0, 2}, +}; +static state states_54[3] = { + {2, arcs_54_0}, + {1, arcs_54_1}, + {1, arcs_54_2}, +}; +static arc arcs_55_0[1] = { + {107, 1}, +}; +static arc arcs_55_1[2] = { + {122, 0}, + {0, 1}, +}; +static state states_55[2] = { + {1, arcs_55_0}, + {2, arcs_55_1}, +}; +static arc arcs_56_0[10] = { {123, 1}, {124, 1}, {125, 1}, {126, 1}, - {98, 1}, - {117, 2}, - {127, 3}, + {127, 1}, + {128, 1}, + {129, 1}, + {101, 1}, + {120, 2}, + {130, 3}, }; -static arc arcs_54_1[1] = { +static arc arcs_56_1[1] = { {0, 1}, }; -static arc arcs_54_2[1] = { - {98, 1}, +static arc arcs_56_2[1] = { + {101, 1}, }; -static arc arcs_54_3[2] = { - {117, 1}, +static arc arcs_56_3[2] = { + {120, 1}, {0, 3}, }; -static state states_54[4] = { - {10, arcs_54_0}, - {1, arcs_54_1}, - {1, arcs_54_2}, - {2, arcs_54_3}, -}; -static arc arcs_55_0[1] = { - {31, 1}, -}; -static arc arcs_55_1[1] = { - {104, 2}, -}; -static arc arcs_55_2[1] = { - {0, 2}, -}; -static state states_55[3] = { - {1, arcs_55_0}, - {1, arcs_55_1}, - {1, arcs_55_2}, -}; -static arc arcs_56_0[1] = { - {128, 1}, -}; -static arc arcs_56_1[2] = { - {129, 0}, - {0, 1}, -}; -static state states_56[2] = { - {1, arcs_56_0}, - {2, arcs_56_1}, +static state states_56[4] = { + {10, arcs_56_0}, + {1, arcs_56_1}, + {1, arcs_56_2}, + {2, arcs_56_3}, }; static arc arcs_57_0[1] = { - {130, 1}, + {33, 1}, }; -static arc arcs_57_1[2] = { - {131, 0}, - {0, 1}, +static arc arcs_57_1[1] = { + {107, 2}, }; -static state states_57[2] = { +static arc arcs_57_2[1] = { + {0, 2}, +}; +static state states_57[3] = { {1, arcs_57_0}, - {2, arcs_57_1}, + {1, arcs_57_1}, + {1, arcs_57_2}, }; static arc arcs_58_0[1] = { - {132, 1}, + {131, 1}, }; static arc arcs_58_1[2] = { - {133, 0}, + {132, 0}, {0, 1}, }; static state states_58[2] = { @@ -1289,404 +1299,316 @@ static state states_58[2] = { {2, arcs_58_1}, }; static arc arcs_59_0[1] = { - {134, 1}, + {133, 1}, }; -static arc arcs_59_1[3] = { - {135, 0}, - {136, 0}, +static arc arcs_59_1[2] = { + {134, 0}, {0, 1}, }; static state states_59[2] = { {1, arcs_59_0}, - {3, arcs_59_1}, + {2, arcs_59_1}, }; static arc arcs_60_0[1] = { - {137, 1}, + {135, 1}, }; -static arc arcs_60_1[3] = { - {138, 0}, - {139, 0}, +static arc arcs_60_1[2] = { + {136, 0}, {0, 1}, }; static state states_60[2] = { {1, arcs_60_0}, - {3, arcs_60_1}, + {2, arcs_60_1}, }; static arc arcs_61_0[1] = { - {140, 1}, + {137, 1}, }; -static arc arcs_61_1[6] = { - {31, 0}, - {11, 0}, - {141, 0}, - {142, 0}, - {143, 0}, +static arc arcs_61_1[3] = { + {138, 0}, + {139, 0}, {0, 1}, }; static state states_61[2] = { {1, arcs_61_0}, - {6, arcs_61_1}, + {3, arcs_61_1}, }; -static arc arcs_62_0[4] = { - {138, 1}, - {139, 1}, - {144, 1}, - {145, 2}, +static arc arcs_62_0[1] = { + {140, 1}, }; -static arc arcs_62_1[1] = { - {140, 2}, -}; -static arc arcs_62_2[1] = { - {0, 2}, -}; -static state states_62[3] = { - {4, arcs_62_0}, - {1, arcs_62_1}, - {1, arcs_62_2}, -}; -static arc arcs_63_0[1] = { - {146, 1}, -}; -static arc arcs_63_1[3] = { - {147, 1}, - {32, 2}, +static arc arcs_62_1[3] = { + {141, 0}, + {142, 0}, {0, 1}, }; -static arc arcs_63_2[1] = { - {140, 3}, +static state states_62[2] = { + {1, arcs_62_0}, + {3, arcs_62_1}, }; -static arc arcs_63_3[1] = { - {0, 3}, +static arc arcs_63_0[1] = { + {143, 1}, }; -static state states_63[4] = { +static arc arcs_63_1[6] = { + {33, 0}, + {11, 0}, + {144, 0}, + {145, 0}, + {146, 0}, + {0, 1}, +}; +static state states_63[2] = { {1, arcs_63_0}, - {3, arcs_63_1}, - {1, arcs_63_2}, - {1, arcs_63_3}, + {6, arcs_63_1}, }; -static arc arcs_64_0[10] = { - {13, 1}, - {149, 2}, - {151, 3}, - {21, 4}, - {154, 4}, - {155, 5}, - {80, 4}, - {156, 4}, - {157, 4}, - {158, 4}, +static arc arcs_64_0[4] = { + {141, 1}, + {142, 1}, + {147, 1}, + {148, 2}, }; -static arc arcs_64_1[3] = { - {47, 6}, - {148, 6}, - {15, 4}, +static arc arcs_64_1[1] = { + {143, 2}, }; -static arc arcs_64_2[2] = { - {148, 7}, - {150, 4}, +static arc arcs_64_2[1] = { + {0, 2}, }; -static arc arcs_64_3[2] = { - {152, 8}, - {153, 4}, +static state states_64[3] = { + {4, arcs_64_0}, + {1, arcs_64_1}, + {1, arcs_64_2}, }; -static arc arcs_64_4[1] = { - {0, 4}, +static arc arcs_65_0[1] = { + {149, 1}, }; -static arc arcs_64_5[2] = { - {155, 5}, - {0, 5}, -}; -static arc arcs_64_6[1] = { - {15, 4}, -}; -static arc arcs_64_7[1] = { - {150, 4}, -}; -static arc arcs_64_8[1] = { - {153, 4}, -}; -static state states_64[9] = { - {10, arcs_64_0}, - {3, arcs_64_1}, - {2, arcs_64_2}, - {2, arcs_64_3}, - {1, arcs_64_4}, - {2, arcs_64_5}, - {1, arcs_64_6}, - {1, arcs_64_7}, - {1, arcs_64_8}, -}; -static arc arcs_65_0[2] = { - {24, 1}, - {48, 1}, -}; -static arc arcs_65_1[3] = { - {159, 2}, - {30, 3}, +static arc arcs_65_1[2] = { + {34, 2}, {0, 1}, }; static arc arcs_65_2[1] = { - {0, 2}, + {143, 3}, }; -static arc arcs_65_3[3] = { - {24, 4}, - {48, 4}, +static arc arcs_65_3[1] = { {0, 3}, }; -static arc arcs_65_4[2] = { - {30, 3}, - {0, 4}, -}; -static state states_65[5] = { - {2, arcs_65_0}, - {3, arcs_65_1}, +static state states_65[4] = { + {1, arcs_65_0}, + {2, arcs_65_1}, {1, arcs_65_2}, - {3, arcs_65_3}, - {2, arcs_65_4}, + {1, arcs_65_3}, }; -static arc arcs_66_0[3] = { +static arc arcs_66_0[2] = { + {150, 1}, + {151, 2}, +}; +static arc arcs_66_1[1] = { + {151, 2}, +}; +static arc arcs_66_2[2] = { + {152, 2}, + {0, 2}, +}; +static state states_66[3] = { + {2, arcs_66_0}, + {1, arcs_66_1}, + {2, arcs_66_2}, +}; +static arc arcs_67_0[10] = { {13, 1}, - {149, 2}, - {79, 3}, + {154, 2}, + {156, 3}, + {23, 4}, + {159, 4}, + {160, 5}, + {82, 4}, + {161, 4}, + {162, 4}, + {163, 4}, }; -static arc arcs_66_1[2] = { - {14, 4}, - {15, 5}, -}; -static arc arcs_66_2[1] = { - {160, 6}, -}; -static arc arcs_66_3[1] = { - {21, 5}, -}; -static arc arcs_66_4[1] = { - {15, 5}, -}; -static arc arcs_66_5[1] = { - {0, 5}, -}; -static arc arcs_66_6[1] = { - {150, 5}, -}; -static state states_66[7] = { - {3, arcs_66_0}, - {2, arcs_66_1}, - {1, arcs_66_2}, - {1, arcs_66_3}, - {1, arcs_66_4}, - {1, arcs_66_5}, - {1, arcs_66_6}, -}; -static arc arcs_67_0[1] = { - {161, 1}, -}; -static arc arcs_67_1[2] = { - {30, 2}, - {0, 1}, +static arc arcs_67_1[3] = { + {49, 6}, + {153, 6}, + {15, 4}, }; static arc arcs_67_2[2] = { - {161, 1}, - {0, 2}, + {153, 7}, + {155, 4}, }; -static state states_67[3] = { - {1, arcs_67_0}, - {2, arcs_67_1}, +static arc arcs_67_3[2] = { + {157, 8}, + {158, 4}, +}; +static arc arcs_67_4[1] = { + {0, 4}, +}; +static arc arcs_67_5[2] = { + {160, 5}, + {0, 5}, +}; +static arc arcs_67_6[1] = { + {15, 4}, +}; +static arc arcs_67_7[1] = { + {155, 4}, +}; +static arc arcs_67_8[1] = { + {158, 4}, +}; +static state states_67[9] = { + {10, arcs_67_0}, + {3, arcs_67_1}, {2, arcs_67_2}, + {2, arcs_67_3}, + {1, arcs_67_4}, + {2, arcs_67_5}, + {1, arcs_67_6}, + {1, arcs_67_7}, + {1, arcs_67_8}, }; static arc arcs_68_0[2] = { - {24, 1}, - {25, 2}, + {26, 1}, + {50, 1}, }; -static arc arcs_68_1[2] = { - {25, 2}, +static arc arcs_68_1[3] = { + {164, 2}, + {32, 3}, {0, 1}, }; -static arc arcs_68_2[3] = { - {24, 3}, - {162, 4}, +static arc arcs_68_2[1] = { {0, 2}, }; -static arc arcs_68_3[2] = { - {162, 4}, +static arc arcs_68_3[3] = { + {26, 4}, + {50, 4}, {0, 3}, }; -static arc arcs_68_4[1] = { +static arc arcs_68_4[2] = { + {32, 3}, {0, 4}, }; static state states_68[5] = { {2, arcs_68_0}, - {2, arcs_68_1}, - {3, arcs_68_2}, - {2, arcs_68_3}, - {1, arcs_68_4}, + {3, arcs_68_1}, + {1, arcs_68_2}, + {3, arcs_68_3}, + {2, arcs_68_4}, }; -static arc arcs_69_0[1] = { - {25, 1}, +static arc arcs_69_0[3] = { + {13, 1}, + {154, 2}, + {81, 3}, }; static arc arcs_69_1[2] = { - {24, 2}, - {0, 1}, + {14, 4}, + {15, 5}, }; static arc arcs_69_2[1] = { - {0, 2}, + {165, 6}, }; -static state states_69[3] = { - {1, arcs_69_0}, +static arc arcs_69_3[1] = { + {23, 5}, +}; +static arc arcs_69_4[1] = { + {15, 5}, +}; +static arc arcs_69_5[1] = { + {0, 5}, +}; +static arc arcs_69_6[1] = { + {155, 5}, +}; +static state states_69[7] = { + {3, arcs_69_0}, {2, arcs_69_1}, {1, arcs_69_2}, + {1, arcs_69_3}, + {1, arcs_69_4}, + {1, arcs_69_5}, + {1, arcs_69_6}, }; -static arc arcs_70_0[2] = { - {104, 1}, - {48, 1}, +static arc arcs_70_0[1] = { + {166, 1}, }; static arc arcs_70_1[2] = { - {30, 2}, + {32, 2}, {0, 1}, }; -static arc arcs_70_2[3] = { - {104, 1}, - {48, 1}, +static arc arcs_70_2[2] = { + {166, 1}, {0, 2}, }; static state states_70[3] = { - {2, arcs_70_0}, + {1, arcs_70_0}, {2, arcs_70_1}, - {3, arcs_70_2}, + {2, arcs_70_2}, }; -static arc arcs_71_0[1] = { - {24, 1}, +static arc arcs_71_0[2] = { + {26, 1}, + {27, 2}, }; static arc arcs_71_1[2] = { - {30, 2}, + {27, 2}, {0, 1}, }; -static arc arcs_71_2[2] = { - {24, 1}, +static arc arcs_71_2[3] = { + {26, 3}, + {167, 4}, {0, 2}, }; -static state states_71[3] = { - {1, arcs_71_0}, +static arc arcs_71_3[2] = { + {167, 4}, + {0, 3}, +}; +static arc arcs_71_4[1] = { + {0, 4}, +}; +static state states_71[5] = { + {2, arcs_71_0}, {2, arcs_71_1}, - {2, arcs_71_2}, + {3, arcs_71_2}, + {2, arcs_71_3}, + {1, arcs_71_4}, }; -static arc arcs_72_0[3] = { - {24, 1}, - {32, 2}, - {48, 3}, +static arc arcs_72_0[1] = { + {27, 1}, }; -static arc arcs_72_1[4] = { - {25, 4}, - {159, 5}, - {30, 6}, +static arc arcs_72_1[2] = { + {26, 2}, {0, 1}, }; static arc arcs_72_2[1] = { - {104, 7}, + {0, 2}, }; -static arc arcs_72_3[3] = { - {159, 5}, - {30, 6}, - {0, 3}, -}; -static arc arcs_72_4[1] = { - {24, 7}, -}; -static arc arcs_72_5[1] = { - {0, 5}, -}; -static arc arcs_72_6[3] = { - {24, 8}, - {48, 8}, - {0, 6}, -}; -static arc arcs_72_7[3] = { - {159, 5}, - {30, 9}, - {0, 7}, -}; -static arc arcs_72_8[2] = { - {30, 6}, - {0, 8}, -}; -static arc arcs_72_9[3] = { - {24, 10}, - {32, 11}, - {0, 9}, -}; -static arc arcs_72_10[1] = { - {25, 12}, -}; -static arc arcs_72_11[1] = { - {104, 13}, -}; -static arc arcs_72_12[1] = { - {24, 13}, -}; -static arc arcs_72_13[2] = { - {30, 9}, - {0, 13}, -}; -static state states_72[14] = { - {3, arcs_72_0}, - {4, arcs_72_1}, +static state states_72[3] = { + {1, arcs_72_0}, + {2, arcs_72_1}, {1, arcs_72_2}, - {3, arcs_72_3}, - {1, arcs_72_4}, - {1, arcs_72_5}, - {3, arcs_72_6}, - {3, arcs_72_7}, - {2, arcs_72_8}, - {3, arcs_72_9}, - {1, arcs_72_10}, - {1, arcs_72_11}, - {1, arcs_72_12}, - {2, arcs_72_13}, }; -static arc arcs_73_0[1] = { - {163, 1}, +static arc arcs_73_0[2] = { + {107, 1}, + {50, 1}, }; -static arc arcs_73_1[1] = { - {21, 2}, +static arc arcs_73_1[2] = { + {32, 2}, + {0, 1}, }; -static arc arcs_73_2[2] = { - {13, 3}, - {25, 4}, +static arc arcs_73_2[3] = { + {107, 1}, + {50, 1}, + {0, 2}, }; -static arc arcs_73_3[2] = { - {14, 5}, - {15, 6}, -}; -static arc arcs_73_4[1] = { - {26, 7}, -}; -static arc arcs_73_5[1] = { - {15, 6}, -}; -static arc arcs_73_6[1] = { - {25, 4}, -}; -static arc arcs_73_7[1] = { - {0, 7}, -}; -static state states_73[8] = { - {1, arcs_73_0}, - {1, arcs_73_1}, - {2, arcs_73_2}, - {2, arcs_73_3}, - {1, arcs_73_4}, - {1, arcs_73_5}, - {1, arcs_73_6}, - {1, arcs_73_7}, +static state states_73[3] = { + {2, arcs_73_0}, + {2, arcs_73_1}, + {3, arcs_73_2}, }; static arc arcs_74_0[1] = { - {164, 1}, + {26, 1}, }; static arc arcs_74_1[2] = { - {30, 2}, + {32, 2}, {0, 1}, }; static arc arcs_74_2[2] = { - {164, 1}, + {26, 1}, {0, 2}, }; static state states_74[3] = { @@ -1695,344 +1617,477 @@ static state states_74[3] = { {2, arcs_74_2}, }; static arc arcs_75_0[3] = { - {24, 1}, - {32, 2}, - {48, 3}, + {26, 1}, + {34, 2}, + {50, 3}, }; -static arc arcs_75_1[3] = { - {159, 3}, - {29, 4}, +static arc arcs_75_1[4] = { + {27, 4}, + {164, 5}, + {32, 6}, {0, 1}, }; static arc arcs_75_2[1] = { - {104, 3}, + {107, 7}, }; -static arc arcs_75_3[1] = { +static arc arcs_75_3[3] = { + {164, 5}, + {32, 6}, {0, 3}, }; static arc arcs_75_4[1] = { - {24, 3}, + {26, 7}, }; -static state states_75[5] = { - {3, arcs_75_0}, - {3, arcs_75_1}, - {1, arcs_75_2}, - {1, arcs_75_3}, - {1, arcs_75_4}, -}; -static arc arcs_76_0[2] = { - {159, 1}, - {166, 1}, -}; -static arc arcs_76_1[1] = { - {0, 1}, -}; -static state states_76[2] = { - {2, arcs_76_0}, - {1, arcs_76_1}, -}; -static arc arcs_77_0[1] = { - {97, 1}, -}; -static arc arcs_77_1[1] = { - {63, 2}, -}; -static arc arcs_77_2[1] = { - {98, 3}, -}; -static arc arcs_77_3[1] = { - {108, 4}, -}; -static arc arcs_77_4[2] = { - {165, 5}, - {0, 4}, -}; -static arc arcs_77_5[1] = { +static arc arcs_75_5[1] = { {0, 5}, }; -static state states_77[6] = { - {1, arcs_77_0}, - {1, arcs_77_1}, - {1, arcs_77_2}, - {1, arcs_77_3}, - {2, arcs_77_4}, - {1, arcs_77_5}, +static arc arcs_75_6[3] = { + {26, 8}, + {50, 8}, + {0, 6}, }; -static arc arcs_78_0[1] = { - {93, 1}, +static arc arcs_75_7[3] = { + {164, 5}, + {32, 9}, + {0, 7}, }; -static arc arcs_78_1[1] = { - {110, 2}, +static arc arcs_75_8[2] = { + {32, 6}, + {0, 8}, }; -static arc arcs_78_2[2] = { - {165, 3}, +static arc arcs_75_9[3] = { + {26, 10}, + {34, 11}, + {0, 9}, +}; +static arc arcs_75_10[1] = { + {27, 12}, +}; +static arc arcs_75_11[1] = { + {107, 13}, +}; +static arc arcs_75_12[1] = { + {26, 13}, +}; +static arc arcs_75_13[2] = { + {32, 9}, + {0, 13}, +}; +static state states_75[14] = { + {3, arcs_75_0}, + {4, arcs_75_1}, + {1, arcs_75_2}, + {3, arcs_75_3}, + {1, arcs_75_4}, + {1, arcs_75_5}, + {3, arcs_75_6}, + {3, arcs_75_7}, + {2, arcs_75_8}, + {3, arcs_75_9}, + {1, arcs_75_10}, + {1, arcs_75_11}, + {1, arcs_75_12}, + {2, arcs_75_13}, +}; +static arc arcs_76_0[1] = { + {168, 1}, +}; +static arc arcs_76_1[1] = { + {23, 2}, +}; +static arc arcs_76_2[2] = { + {13, 3}, + {27, 4}, +}; +static arc arcs_76_3[2] = { + {14, 5}, + {15, 6}, +}; +static arc arcs_76_4[1] = { + {28, 7}, +}; +static arc arcs_76_5[1] = { + {15, 6}, +}; +static arc arcs_76_6[1] = { + {27, 4}, +}; +static arc arcs_76_7[1] = { + {0, 7}, +}; +static state states_76[8] = { + {1, arcs_76_0}, + {1, arcs_76_1}, + {2, arcs_76_2}, + {2, arcs_76_3}, + {1, arcs_76_4}, + {1, arcs_76_5}, + {1, arcs_76_6}, + {1, arcs_76_7}, +}; +static arc arcs_77_0[1] = { + {169, 1}, +}; +static arc arcs_77_1[2] = { + {32, 2}, + {0, 1}, +}; +static arc arcs_77_2[2] = { + {169, 1}, {0, 2}, }; +static state states_77[3] = { + {1, arcs_77_0}, + {2, arcs_77_1}, + {2, arcs_77_2}, +}; +static arc arcs_78_0[3] = { + {26, 1}, + {34, 2}, + {50, 3}, +}; +static arc arcs_78_1[3] = { + {164, 3}, + {31, 4}, + {0, 1}, +}; +static arc arcs_78_2[1] = { + {107, 3}, +}; static arc arcs_78_3[1] = { {0, 3}, }; -static state states_78[4] = { - {1, arcs_78_0}, - {1, arcs_78_1}, - {2, arcs_78_2}, - {1, arcs_78_3}, +static arc arcs_78_4[1] = { + {26, 3}, }; -static arc arcs_79_0[1] = { - {21, 1}, +static state states_78[5] = { + {3, arcs_78_0}, + {3, arcs_78_1}, + {1, arcs_78_2}, + {1, arcs_78_3}, + {1, arcs_78_4}, +}; +static arc arcs_79_0[2] = { + {164, 1}, + {171, 1}, }; static arc arcs_79_1[1] = { {0, 1}, }; static state states_79[2] = { - {1, arcs_79_0}, + {2, arcs_79_0}, {1, arcs_79_1}, }; static arc arcs_80_0[1] = { - {168, 1}, + {100, 1}, }; -static arc arcs_80_1[2] = { - {169, 2}, - {0, 1}, +static arc arcs_80_1[1] = { + {65, 2}, }; static arc arcs_80_2[1] = { - {0, 2}, + {101, 3}, }; -static state states_80[3] = { +static arc arcs_80_3[1] = { + {111, 4}, +}; +static arc arcs_80_4[2] = { + {170, 5}, + {0, 4}, +}; +static arc arcs_80_5[1] = { + {0, 5}, +}; +static state states_80[6] = { {1, arcs_80_0}, - {2, arcs_80_1}, + {1, arcs_80_1}, {1, arcs_80_2}, + {1, arcs_80_3}, + {2, arcs_80_4}, + {1, arcs_80_5}, }; -static arc arcs_81_0[2] = { - {74, 1}, - {9, 2}, +static arc arcs_81_0[1] = { + {96, 1}, }; static arc arcs_81_1[1] = { - {24, 2}, + {113, 2}, }; -static arc arcs_81_2[1] = { +static arc arcs_81_2[2] = { + {170, 3}, {0, 2}, }; -static state states_81[3] = { - {2, arcs_81_0}, - {1, arcs_81_1}, - {1, arcs_81_2}, +static arc arcs_81_3[1] = { + {0, 3}, }; -static dfa dfas[82] = { +static state states_81[4] = { + {1, arcs_81_0}, + {1, arcs_81_1}, + {2, arcs_81_2}, + {1, arcs_81_3}, +}; +static arc arcs_82_0[1] = { + {23, 1}, +}; +static arc arcs_82_1[1] = { + {0, 1}, +}; +static state states_82[2] = { + {1, arcs_82_0}, + {1, arcs_82_1}, +}; +static arc arcs_83_0[1] = { + {173, 1}, +}; +static arc arcs_83_1[2] = { + {174, 2}, + {0, 1}, +}; +static arc arcs_83_2[1] = { + {0, 2}, +}; +static state states_83[3] = { + {1, arcs_83_0}, + {2, arcs_83_1}, + {1, arcs_83_2}, +}; +static arc arcs_84_0[2] = { + {76, 1}, + {9, 2}, +}; +static arc arcs_84_1[1] = { + {26, 2}, +}; +static arc arcs_84_2[1] = { + {0, 2}, +}; +static state states_84[3] = { + {2, arcs_84_0}, + {1, arcs_84_1}, + {1, arcs_84_2}, +}; +static dfa dfas[85] = { {256, "single_input", 0, 3, states_0, - "\004\050\060\200\000\000\000\100\301\047\341\040\113\000\041\000\000\014\241\174\010\001"}, + "\004\050\340\000\002\000\000\000\005\237\204\003\131\002\010\001\000\140\110\224\017\041"}, {257, "file_input", 0, 2, states_1, - "\204\050\060\200\000\000\000\100\301\047\341\040\113\000\041\000\000\014\241\174\010\001"}, + "\204\050\340\000\002\000\000\000\005\237\204\003\131\002\010\001\000\140\110\224\017\041"}, {258, "eval_input", 0, 3, states_2, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, {259, "decorator", 0, 7, states_3, "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {260, "decorators", 0, 2, states_4, "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, {261, "decorated", 0, 3, states_5, "\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {262, "funcdef", 0, 8, states_6, - "\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {263, "parameters", 0, 4, states_7, + {262, "async_funcdef", 0, 3, states_6, + "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {263, "funcdef", 0, 8, states_7, + "\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {264, "parameters", 0, 4, states_8, "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {264, "typedargslist", 0, 18, states_8, - "\000\000\040\200\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {265, "tfpdef", 0, 4, states_9, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {266, "varargslist", 0, 18, states_10, - "\000\000\040\200\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {267, "vfpdef", 0, 2, states_11, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {268, "stmt", 0, 2, states_12, - "\000\050\060\200\000\000\000\100\301\047\341\040\113\000\041\000\000\014\241\174\010\001"}, - {269, "simple_stmt", 0, 4, states_13, - "\000\040\040\200\000\000\000\100\301\047\341\000\000\000\041\000\000\014\241\174\000\001"}, - {270, "small_stmt", 0, 2, states_14, - "\000\040\040\200\000\000\000\100\301\047\341\000\000\000\041\000\000\014\241\174\000\001"}, - {271, "expr_stmt", 0, 6, states_15, - "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {272, "testlist_star_expr", 0, 3, states_16, - "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {273, "augassign", 0, 2, states_17, - "\000\000\000\000\000\000\376\077\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {274, "del_stmt", 0, 3, states_18, - "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {275, "pass_stmt", 0, 2, states_19, + {265, "typedargslist", 0, 18, states_9, + "\000\000\200\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {266, "tfpdef", 0, 4, states_10, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {267, "varargslist", 0, 18, states_11, + "\000\000\200\000\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {268, "vfpdef", 0, 2, states_12, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {269, "stmt", 0, 2, states_13, + "\000\050\340\000\002\000\000\000\005\237\204\003\131\002\010\001\000\140\110\224\017\041"}, + {270, "simple_stmt", 0, 4, states_14, + "\000\040\200\000\002\000\000\000\005\237\204\003\000\000\010\001\000\140\110\224\017\040"}, + {271, "small_stmt", 0, 2, states_15, + "\000\040\200\000\002\000\000\000\005\237\204\003\000\000\010\001\000\140\110\224\017\040"}, + {272, "expr_stmt", 0, 6, states_16, + "\000\040\200\000\002\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {273, "testlist_star_expr", 0, 3, states_17, + "\000\040\200\000\002\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {274, "augassign", 0, 2, states_18, + "\000\000\000\000\000\000\370\377\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {275, "del_stmt", 0, 3, states_19, "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {276, "flow_stmt", 0, 2, states_20, - "\000\000\000\000\000\000\000\000\300\003\000\000\000\000\000\000\000\000\000\000\000\001"}, - {277, "break_stmt", 0, 2, states_21, - "\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {278, "continue_stmt", 0, 2, states_22, - "\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {279, "return_stmt", 0, 3, states_23, + {276, "pass_stmt", 0, 2, states_20, + "\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {277, "flow_stmt", 0, 2, states_21, + "\000\000\000\000\000\000\000\000\000\017\000\000\000\000\000\000\000\000\000\000\000\040"}, + {278, "break_stmt", 0, 2, states_22, "\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\000"}, - {280, "yield_stmt", 0, 2, states_24, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, - {281, "raise_stmt", 0, 5, states_25, + {279, "continue_stmt", 0, 2, states_23, "\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"}, - {282, "import_stmt", 0, 2, states_26, - "\000\000\000\000\000\000\000\000\000\044\000\000\000\000\000\000\000\000\000\000\000\000"}, - {283, "import_name", 0, 3, states_27, - "\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000"}, - {284, "import_from", 0, 8, states_28, + {280, "return_stmt", 0, 3, states_24, "\000\000\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\000\000\000\000"}, - {285, "import_as_name", 0, 4, states_29, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {286, "dotted_as_name", 0, 4, states_30, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {287, "import_as_names", 0, 3, states_31, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {288, "dotted_as_names", 0, 2, states_32, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {289, "dotted_name", 0, 2, states_33, - "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {290, "global_stmt", 0, 3, states_34, - "\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000\000"}, - {291, "nonlocal_stmt", 0, 3, states_35, - "\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000\000"}, - {292, "assert_stmt", 0, 5, states_36, + {281, "yield_stmt", 0, 2, states_25, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\040"}, + {282, "raise_stmt", 0, 5, states_26, + "\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000"}, + {283, "import_stmt", 0, 2, states_27, + "\000\000\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000\000\000\000\000\000"}, + {284, "import_name", 0, 3, states_28, + "\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000"}, + {285, "import_from", 0, 8, states_29, + "\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000\000\000"}, + {286, "import_as_name", 0, 4, states_30, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {287, "dotted_as_name", 0, 4, states_31, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {288, "import_as_names", 0, 3, states_32, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {289, "dotted_as_names", 0, 2, states_33, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {290, "dotted_name", 0, 2, states_34, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {291, "global_stmt", 0, 3, states_35, "\000\000\000\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000"}, - {293, "compound_stmt", 0, 2, states_37, - "\000\010\020\000\000\000\000\000\000\000\000\040\113\000\000\000\000\000\000\000\010\000"}, - {294, "if_stmt", 0, 8, states_38, - "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"}, - {295, "while_stmt", 0, 8, states_39, - "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, - {296, "for_stmt", 0, 10, states_40, - "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, - {297, "try_stmt", 0, 13, states_41, - "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, - {298, "with_stmt", 0, 5, states_42, - "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, - {299, "with_item", 0, 4, states_43, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {300, "except_clause", 0, 5, states_44, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, - {301, "suite", 0, 5, states_45, - "\004\040\040\200\000\000\000\100\301\047\341\000\000\000\041\000\000\014\241\174\000\001"}, - {302, "test", 0, 6, states_46, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {303, "test_nocond", 0, 2, states_47, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {304, "lambdef", 0, 5, states_48, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"}, - {305, "lambdef_nocond", 0, 5, states_49, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000"}, - {306, "or_test", 0, 2, states_50, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\040\000\000\014\241\174\000\000"}, - {307, "and_test", 0, 2, states_51, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\040\000\000\014\241\174\000\000"}, - {308, "not_test", 0, 3, states_52, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\040\000\000\014\241\174\000\000"}, - {309, "comparison", 0, 2, states_53, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {310, "comp_op", 0, 4, states_54, - "\000\000\000\000\000\000\000\000\000\000\000\000\004\000\040\377\000\000\000\000\000\000"}, - {311, "star_expr", 0, 3, states_55, - "\000\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {312, "expr", 0, 2, states_56, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {313, "xor_expr", 0, 2, states_57, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {314, "and_expr", 0, 2, states_58, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {315, "shift_expr", 0, 2, states_59, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {316, "arith_expr", 0, 2, states_60, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {317, "term", 0, 2, states_61, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {318, "factor", 0, 3, states_62, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {319, "power", 0, 4, states_63, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\240\174\000\000"}, - {320, "atom", 0, 9, states_64, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\240\174\000\000"}, - {321, "testlist_comp", 0, 5, states_65, - "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {322, "trailer", 0, 7, states_66, - "\000\040\000\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000\040\000\000\000"}, - {323, "subscriptlist", 0, 3, states_67, - "\000\040\040\002\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {324, "subscript", 0, 5, states_68, - "\000\040\040\002\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {325, "sliceop", 0, 3, states_69, - "\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {326, "exprlist", 0, 3, states_70, - "\000\040\040\200\000\000\000\000\000\000\001\000\000\000\000\000\000\014\241\174\000\000"}, - {327, "testlist", 0, 3, states_71, - "\000\040\040\000\000\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {328, "dictorsetmaker", 0, 14, states_72, - "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {329, "classdef", 0, 8, states_73, - "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000"}, - {330, "arglist", 0, 3, states_74, - "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {331, "argument", 0, 5, states_75, - "\000\040\040\200\001\000\000\000\000\000\001\000\000\000\041\000\000\014\241\174\000\000"}, - {332, "comp_iter", 0, 2, states_76, - "\000\000\000\000\000\000\000\000\000\000\000\040\002\000\000\000\000\000\000\000\000\000"}, - {333, "comp_for", 0, 6, states_77, - "\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000"}, - {334, "comp_if", 0, 4, states_78, - "\000\000\000\000\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"}, - {335, "encoding_decl", 0, 2, states_79, + {292, "nonlocal_stmt", 0, 3, states_36, + "\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000\000"}, + {293, "assert_stmt", 0, 5, states_37, + "\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000"}, + {294, "compound_stmt", 0, 2, states_38, + "\000\010\140\000\000\000\000\000\000\000\000\000\131\002\000\000\000\000\000\000\000\001"}, + {295, "async_stmt", 0, 3, states_39, "\000\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, - {336, "yield_expr", 0, 3, states_80, + {296, "if_stmt", 0, 8, states_40, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {297, "while_stmt", 0, 8, states_41, + "\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"}, + {298, "for_stmt", 0, 10, states_42, + "\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, + {299, "try_stmt", 0, 13, states_43, + "\000\000\000\000\000\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"}, + {300, "with_stmt", 0, 5, states_44, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"}, + {301, "with_item", 0, 4, states_45, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {302, "except_clause", 0, 5, states_46, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000"}, + {303, "suite", 0, 5, states_47, + "\004\040\200\000\002\000\000\000\005\237\204\003\000\000\010\001\000\140\110\224\017\040"}, + {304, "test", 0, 6, states_48, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {305, "test_nocond", 0, 2, states_49, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {306, "lambdef", 0, 5, states_50, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000"}, + {307, "lambdef_nocond", 0, 5, states_51, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000"}, + {308, "or_test", 0, 2, states_52, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\001\000\140\110\224\017\000"}, + {309, "and_test", 0, 2, states_53, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\001\000\140\110\224\017\000"}, + {310, "not_test", 0, 3, states_54, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\001\000\140\110\224\017\000"}, + {311, "comparison", 0, 2, states_55, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {312, "comp_op", 0, 4, states_56, + "\000\000\000\000\000\000\000\000\000\000\000\000\040\000\000\371\007\000\000\000\000\000"}, + {313, "star_expr", 0, 3, states_57, + "\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {314, "expr", 0, 2, states_58, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {315, "xor_expr", 0, 2, states_59, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {316, "and_expr", 0, 2, states_60, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {317, "shift_expr", 0, 2, states_61, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {318, "arith_expr", 0, 2, states_62, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {319, "term", 0, 2, states_63, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {320, "factor", 0, 3, states_64, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {321, "power", 0, 4, states_65, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\100\224\017\000"}, + {322, "atom_expr", 0, 3, states_66, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\100\224\017\000"}, + {323, "atom", 0, 9, states_67, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000\224\017\000"}, + {324, "testlist_comp", 0, 5, states_68, + "\000\040\200\000\002\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {325, "trailer", 0, 7, states_69, + "\000\040\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\004\000\000"}, + {326, "subscriptlist", 0, 3, states_70, + "\000\040\200\010\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {327, "subscript", 0, 5, states_71, + "\000\040\200\010\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {328, "sliceop", 0, 3, states_72, + "\000\000\000\010\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {329, "exprlist", 0, 3, states_73, + "\000\040\200\000\002\000\000\000\000\000\004\000\000\000\000\000\000\140\110\224\017\000"}, + {330, "testlist", 0, 3, states_74, + "\000\040\200\000\000\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {331, "dictorsetmaker", 0, 14, states_75, + "\000\040\200\000\006\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {332, "classdef", 0, 8, states_76, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\001"}, - {337, "yield_arg", 0, 3, states_81, - "\000\040\040\000\000\000\000\000\000\004\001\000\000\000\041\000\000\014\241\174\000\000"}, + {333, "arglist", 0, 3, states_77, + "\000\040\200\000\006\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {334, "argument", 0, 5, states_78, + "\000\040\200\000\006\000\000\000\000\000\004\000\000\000\010\001\000\140\110\224\017\000"}, + {335, "comp_iter", 0, 2, states_79, + "\000\000\000\000\000\000\000\000\000\000\000\000\021\000\000\000\000\000\000\000\000\000"}, + {336, "comp_for", 0, 6, states_80, + "\000\000\000\000\000\000\000\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"}, + {337, "comp_if", 0, 4, states_81, + "\000\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\000\000"}, + {338, "encoding_decl", 0, 2, states_82, + "\000\000\200\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"}, + {339, "yield_expr", 0, 3, states_83, + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\040"}, + {340, "yield_arg", 0, 3, states_84, + "\000\040\200\000\000\000\000\000\000\020\004\000\000\000\010\001\000\140\110\224\017\000"}, }; -static label labels[170] = { +static label labels[175] = { {0, "EMPTY"}, {256, 0}, {4, 0}, - {269, 0}, - {293, 0}, + {270, 0}, + {294, 0}, {257, 0}, - {268, 0}, + {269, 0}, {0, 0}, {258, 0}, - {327, 0}, + {330, 0}, {259, 0}, {49, 0}, - {289, 0}, + {290, 0}, {7, 0}, - {330, 0}, + {333, 0}, {8, 0}, {260, 0}, {261, 0}, - {329, 0}, + {332, 0}, + {263, 0}, {262, 0}, + {55, 0}, {1, "def"}, {1, 0}, - {263, 0}, - {51, 0}, - {302, 0}, - {11, 0}, - {301, 0}, {264, 0}, + {51, 0}, + {304, 0}, + {11, 0}, + {303, 0}, {265, 0}, + {266, 0}, {22, 0}, {12, 0}, {16, 0}, {35, 0}, - {266, 0}, {267, 0}, - {270, 0}, - {13, 0}, + {268, 0}, {271, 0}, - {274, 0}, + {13, 0}, + {272, 0}, {275, 0}, {276, 0}, - {282, 0}, - {290, 0}, + {277, 0}, + {283, 0}, {291, 0}, {292, 0}, - {272, 0}, + {293, 0}, {273, 0}, - {336, 0}, - {311, 0}, + {274, 0}, + {339, 0}, + {313, 0}, {36, 0}, {37, 0}, {38, 0}, @@ -2047,36 +2102,37 @@ static label labels[170] = { {46, 0}, {48, 0}, {1, "del"}, - {326, 0}, + {329, 0}, {1, "pass"}, - {277, 0}, {278, 0}, {279, 0}, - {281, 0}, {280, 0}, + {282, 0}, + {281, 0}, {1, "break"}, {1, "continue"}, {1, "return"}, {1, "raise"}, {1, "from"}, - {283, 0}, {284, 0}, + {285, 0}, {1, "import"}, - {288, 0}, + {289, 0}, {23, 0}, {52, 0}, - {287, 0}, - {285, 0}, - {1, "as"}, + {288, 0}, {286, 0}, + {1, "as"}, + {287, 0}, {1, "global"}, {1, "nonlocal"}, {1, "assert"}, - {294, 0}, - {295, 0}, {296, 0}, {297, 0}, {298, 0}, + {299, 0}, + {300, 0}, + {295, 0}, {1, "if"}, {1, "elif"}, {1, "else"}, @@ -2084,26 +2140,26 @@ static label labels[170] = { {1, "for"}, {1, "in"}, {1, "try"}, - {300, 0}, + {302, 0}, {1, "finally"}, {1, "with"}, - {299, 0}, - {312, 0}, + {301, 0}, + {314, 0}, {1, "except"}, {5, 0}, {6, 0}, - {306, 0}, - {304, 0}, - {303, 0}, - {305, 0}, - {1, "lambda"}, - {307, 0}, - {1, "or"}, {308, 0}, + {306, 0}, + {305, 0}, + {307, 0}, + {1, "lambda"}, + {309, 0}, + {1, "or"}, + {310, 0}, {1, "and"}, {1, "not"}, - {309, 0}, - {310, 0}, + {311, 0}, + {312, 0}, {20, 0}, {21, 0}, {27, 0}, @@ -2112,52 +2168,54 @@ static label labels[170] = { {28, 0}, {28, 0}, {1, "is"}, - {313, 0}, - {18, 0}, - {314, 0}, - {32, 0}, {315, 0}, - {19, 0}, + {18, 0}, {316, 0}, + {32, 0}, + {317, 0}, + {19, 0}, + {318, 0}, {33, 0}, {34, 0}, - {317, 0}, + {319, 0}, {14, 0}, {15, 0}, - {318, 0}, + {320, 0}, {17, 0}, {24, 0}, {47, 0}, {31, 0}, - {319, 0}, - {320, 0}, - {322, 0}, {321, 0}, + {322, 0}, + {54, 0}, + {323, 0}, + {325, 0}, + {324, 0}, {9, 0}, {10, 0}, {25, 0}, - {328, 0}, + {331, 0}, {26, 0}, {2, 0}, {3, 0}, {1, "None"}, {1, "True"}, {1, "False"}, - {333, 0}, - {323, 0}, - {324, 0}, - {325, 0}, + {336, 0}, + {326, 0}, + {327, 0}, + {328, 0}, {1, "class"}, - {331, 0}, - {332, 0}, {334, 0}, {335, 0}, - {1, "yield"}, {337, 0}, + {338, 0}, + {1, "yield"}, + {340, 0}, }; grammar _PyParser_Grammar = { - 82, + 85, dfas, - {170, labels}, + {175, labels}, 256 }; diff --git a/Python/importlib.h b/Python/importlib.h index de975f83063..9c62a95db5b 100644 --- a/Python/importlib.h +++ b/Python/importlib.h @@ -210,8 +210,8 @@ const unsigned char _Py_M__importlib[] = { 122,24,95,77,111,100,117,108,101,76,111,99,107,46,104,97, 115,95,100,101,97,100,108,111,99,107,99,1,0,0,0,0, 0,0,0,2,0,0,0,16,0,0,0,67,0,0,0,115, - 209,0,0,0,116,0,0,106,1,0,131,0,0,125,1,0, - 124,0,0,116,2,0,124,1,0,60,122,172,0,120,165,0, + 210,0,0,0,116,0,0,106,1,0,131,0,0,125,1,0, + 124,0,0,116,2,0,124,1,0,60,122,173,0,120,166,0, 124,0,0,106,3,0,143,124,0,1,124,0,0,106,4,0, 100,1,0,107,2,0,115,68,0,124,0,0,106,5,0,124, 1,0,107,2,0,114,96,0,124,1,0,124,0,0,95,5, @@ -220,1753 +220,1753 @@ const unsigned char _Py_M__importlib[] = { 116,7,0,100,4,0,124,0,0,22,131,1,0,130,1,0, 124,0,0,106,8,0,106,9,0,100,5,0,131,1,0,114, 157,0,124,0,0,4,106,10,0,100,2,0,55,2,95,10, - 0,87,100,6,0,81,88,124,0,0,106,8,0,106,9,0, - 131,0,0,1,124,0,0,106,8,0,106,11,0,131,0,0, - 1,113,28,0,87,87,100,6,0,116,2,0,124,1,0,61, - 88,100,6,0,83,41,7,122,185,10,32,32,32,32,32,32, - 32,32,65,99,113,117,105,114,101,32,116,104,101,32,109,111, - 100,117,108,101,32,108,111,99,107,46,32,32,73,102,32,97, - 32,112,111,116,101,110,116,105,97,108,32,100,101,97,100,108, - 111,99,107,32,105,115,32,100,101,116,101,99,116,101,100,44, - 10,32,32,32,32,32,32,32,32,97,32,95,68,101,97,100, - 108,111,99,107,69,114,114,111,114,32,105,115,32,114,97,105, - 115,101,100,46,10,32,32,32,32,32,32,32,32,79,116,104, - 101,114,119,105,115,101,44,32,116,104,101,32,108,111,99,107, - 32,105,115,32,97,108,119,97,121,115,32,97,99,113,117,105, - 114,101,100,32,97,110,100,32,84,114,117,101,32,105,115,32, - 114,101,116,117,114,110,101,100,46,10,32,32,32,32,32,32, - 32,32,114,33,0,0,0,233,1,0,0,0,84,122,23,100, - 101,97,100,108,111,99,107,32,100,101,116,101,99,116,101,100, - 32,98,121,32,37,114,70,78,41,12,114,34,0,0,0,114, - 40,0,0,0,114,41,0,0,0,114,35,0,0,0,114,38, - 0,0,0,114,37,0,0,0,114,44,0,0,0,114,31,0, - 0,0,114,36,0,0,0,218,7,97,99,113,117,105,114,101, - 114,39,0,0,0,218,7,114,101,108,101,97,115,101,41,2, - 114,19,0,0,0,114,43,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,114,46,0,0,0,92,0, - 0,0,115,32,0,0,0,0,6,12,1,10,1,3,1,3, - 1,10,1,30,1,9,1,15,1,4,1,12,1,16,1,18, - 1,21,2,13,1,21,2,122,19,95,77,111,100,117,108,101, - 76,111,99,107,46,97,99,113,117,105,114,101,99,1,0,0, - 0,0,0,0,0,2,0,0,0,10,0,0,0,67,0,0, - 0,115,156,0,0,0,116,0,0,106,1,0,131,0,0,125, - 1,0,124,0,0,106,2,0,143,129,0,1,124,0,0,106, - 3,0,124,1,0,107,3,0,114,49,0,116,4,0,100,1, - 0,131,1,0,130,1,0,124,0,0,106,5,0,100,2,0, - 107,4,0,115,70,0,116,6,0,130,1,0,124,0,0,4, - 106,5,0,100,3,0,56,2,95,5,0,124,0,0,106,5, - 0,100,2,0,107,2,0,114,146,0,100,0,0,124,0,0, - 95,3,0,124,0,0,106,7,0,114,146,0,124,0,0,4, - 106,7,0,100,3,0,56,2,95,7,0,124,0,0,106,8, - 0,106,9,0,131,0,0,1,87,100,0,0,81,88,100,0, - 0,83,41,4,78,122,31,99,97,110,110,111,116,32,114,101, - 108,101,97,115,101,32,117,110,45,97,99,113,117,105,114,101, - 100,32,108,111,99,107,114,33,0,0,0,114,45,0,0,0, - 41,10,114,34,0,0,0,114,40,0,0,0,114,35,0,0, - 0,114,37,0,0,0,218,12,82,117,110,116,105,109,101,69, - 114,114,111,114,114,38,0,0,0,218,14,65,115,115,101,114, - 116,105,111,110,69,114,114,111,114,114,39,0,0,0,114,36, - 0,0,0,114,47,0,0,0,41,2,114,19,0,0,0,114, - 43,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,47,0,0,0,117,0,0,0,115,22,0,0, - 0,0,1,12,1,10,1,15,1,12,1,21,1,15,1,15, - 1,9,1,9,1,15,1,122,19,95,77,111,100,117,108,101, - 76,111,99,107,46,114,101,108,101,97,115,101,99,1,0,0, - 0,0,0,0,0,1,0,0,0,4,0,0,0,67,0,0, - 0,115,25,0,0,0,100,1,0,106,0,0,124,0,0,106, - 1,0,116,2,0,124,0,0,131,1,0,131,2,0,83,41, - 2,78,122,23,95,77,111,100,117,108,101,76,111,99,107,40, - 123,33,114,125,41,32,97,116,32,123,125,41,3,218,6,102, - 111,114,109,97,116,114,15,0,0,0,218,2,105,100,41,1, - 114,19,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,8,95,95,114,101,112,114,95,95,130,0, - 0,0,115,2,0,0,0,0,1,122,20,95,77,111,100,117, - 108,101,76,111,99,107,46,95,95,114,101,112,114,95,95,78, - 41,9,114,1,0,0,0,114,0,0,0,0,114,2,0,0, - 0,114,3,0,0,0,114,20,0,0,0,114,44,0,0,0, - 114,46,0,0,0,114,47,0,0,0,114,52,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,32,0,0,0,66,0,0,0,115,12,0,0, - 0,12,4,6,2,12,8,12,12,12,25,12,13,114,32,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,70,0,0,0,101,0,0,90, - 1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,2, - 0,100,3,0,132,0,0,90,4,0,100,4,0,100,5,0, - 132,0,0,90,5,0,100,6,0,100,7,0,132,0,0,90, - 6,0,100,8,0,100,9,0,132,0,0,90,7,0,100,10, - 0,83,41,11,218,16,95,68,117,109,109,121,77,111,100,117, - 108,101,76,111,99,107,122,86,65,32,115,105,109,112,108,101, - 32,95,77,111,100,117,108,101,76,111,99,107,32,101,113,117, - 105,118,97,108,101,110,116,32,102,111,114,32,80,121,116,104, - 111,110,32,98,117,105,108,100,115,32,119,105,116,104,111,117, - 116,10,32,32,32,32,109,117,108,116,105,45,116,104,114,101, - 97,100,105,110,103,32,115,117,112,112,111,114,116,46,99,2, - 0,0,0,0,0,0,0,2,0,0,0,2,0,0,0,67, - 0,0,0,115,22,0,0,0,124,1,0,124,0,0,95,0, - 0,100,1,0,124,0,0,95,1,0,100,0,0,83,41,2, - 78,114,33,0,0,0,41,2,114,15,0,0,0,114,38,0, - 0,0,41,2,114,19,0,0,0,114,15,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,20,0, - 0,0,138,0,0,0,115,4,0,0,0,0,1,9,1,122, - 25,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,46,95,95,105,110,105,116,95,95,99,1,0,0,0,0, - 0,0,0,1,0,0,0,3,0,0,0,67,0,0,0,115, - 19,0,0,0,124,0,0,4,106,0,0,100,1,0,55,2, - 95,0,0,100,2,0,83,41,3,78,114,45,0,0,0,84, - 41,1,114,38,0,0,0,41,1,114,19,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,46,0, - 0,0,142,0,0,0,115,4,0,0,0,0,1,15,1,122, - 24,95,68,117,109,109,121,77,111,100,117,108,101,76,111,99, - 107,46,97,99,113,117,105,114,101,99,1,0,0,0,0,0, - 0,0,1,0,0,0,3,0,0,0,67,0,0,0,115,46, - 0,0,0,124,0,0,106,0,0,100,1,0,107,2,0,114, - 27,0,116,1,0,100,2,0,131,1,0,130,1,0,124,0, - 0,4,106,0,0,100,3,0,56,2,95,0,0,100,0,0, - 83,41,4,78,114,33,0,0,0,122,31,99,97,110,110,111, - 116,32,114,101,108,101,97,115,101,32,117,110,45,97,99,113, - 117,105,114,101,100,32,108,111,99,107,114,45,0,0,0,41, - 2,114,38,0,0,0,114,48,0,0,0,41,1,114,19,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,47,0,0,0,146,0,0,0,115,6,0,0,0,0, - 1,15,1,12,1,122,24,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,46,114,101,108,101,97,115,101,99, - 1,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0, - 67,0,0,0,115,25,0,0,0,100,1,0,106,0,0,124, - 0,0,106,1,0,116,2,0,124,0,0,131,1,0,131,2, - 0,83,41,2,78,122,28,95,68,117,109,109,121,77,111,100, - 117,108,101,76,111,99,107,40,123,33,114,125,41,32,97,116, - 32,123,125,41,3,114,50,0,0,0,114,15,0,0,0,114, - 51,0,0,0,41,1,114,19,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,52,0,0,0,151, - 0,0,0,115,2,0,0,0,0,1,122,25,95,68,117,109, - 109,121,77,111,100,117,108,101,76,111,99,107,46,95,95,114, - 101,112,114,95,95,78,41,8,114,1,0,0,0,114,0,0, - 0,0,114,2,0,0,0,114,3,0,0,0,114,20,0,0, - 0,114,46,0,0,0,114,47,0,0,0,114,52,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,53,0,0,0,134,0,0,0,115,10,0, - 0,0,12,2,6,2,12,4,12,4,12,5,114,53,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,52,0,0,0,101,0,0,90,1, - 0,100,0,0,90,2,0,100,1,0,100,2,0,132,0,0, - 90,3,0,100,3,0,100,4,0,132,0,0,90,4,0,100, - 5,0,100,6,0,132,0,0,90,5,0,100,7,0,83,41, - 8,218,18,95,77,111,100,117,108,101,76,111,99,107,77,97, - 110,97,103,101,114,99,2,0,0,0,0,0,0,0,2,0, - 0,0,2,0,0,0,67,0,0,0,115,22,0,0,0,124, - 1,0,124,0,0,95,0,0,100,0,0,124,0,0,95,1, - 0,100,0,0,83,41,1,78,41,2,114,18,0,0,0,218, - 5,95,108,111,99,107,41,2,114,19,0,0,0,114,15,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,20,0,0,0,157,0,0,0,115,4,0,0,0,0, - 1,9,1,122,27,95,77,111,100,117,108,101,76,111,99,107, - 77,97,110,97,103,101,114,46,95,95,105,110,105,116,95,95, - 99,1,0,0,0,0,0,0,0,1,0,0,0,10,0,0, - 0,67,0,0,0,115,53,0,0,0,122,22,0,116,0,0, - 124,0,0,106,1,0,131,1,0,124,0,0,95,2,0,87, - 100,0,0,116,3,0,106,4,0,131,0,0,1,88,124,0, - 0,106,2,0,106,5,0,131,0,0,1,100,0,0,83,41, - 1,78,41,6,218,16,95,103,101,116,95,109,111,100,117,108, - 101,95,108,111,99,107,114,18,0,0,0,114,55,0,0,0, - 218,4,95,105,109,112,218,12,114,101,108,101,97,115,101,95, - 108,111,99,107,114,46,0,0,0,41,1,114,19,0,0,0, + 0,87,100,6,0,81,82,88,124,0,0,106,8,0,106,9, + 0,131,0,0,1,124,0,0,106,8,0,106,11,0,131,0, + 0,1,113,28,0,87,87,100,6,0,116,2,0,124,1,0, + 61,88,100,6,0,83,41,7,122,185,10,32,32,32,32,32, + 32,32,32,65,99,113,117,105,114,101,32,116,104,101,32,109, + 111,100,117,108,101,32,108,111,99,107,46,32,32,73,102,32, + 97,32,112,111,116,101,110,116,105,97,108,32,100,101,97,100, + 108,111,99,107,32,105,115,32,100,101,116,101,99,116,101,100, + 44,10,32,32,32,32,32,32,32,32,97,32,95,68,101,97, + 100,108,111,99,107,69,114,114,111,114,32,105,115,32,114,97, + 105,115,101,100,46,10,32,32,32,32,32,32,32,32,79,116, + 104,101,114,119,105,115,101,44,32,116,104,101,32,108,111,99, + 107,32,105,115,32,97,108,119,97,121,115,32,97,99,113,117, + 105,114,101,100,32,97,110,100,32,84,114,117,101,32,105,115, + 32,114,101,116,117,114,110,101,100,46,10,32,32,32,32,32, + 32,32,32,114,33,0,0,0,233,1,0,0,0,84,122,23, + 100,101,97,100,108,111,99,107,32,100,101,116,101,99,116,101, + 100,32,98,121,32,37,114,70,78,41,12,114,34,0,0,0, + 114,40,0,0,0,114,41,0,0,0,114,35,0,0,0,114, + 38,0,0,0,114,37,0,0,0,114,44,0,0,0,114,31, + 0,0,0,114,36,0,0,0,218,7,97,99,113,117,105,114, + 101,114,39,0,0,0,218,7,114,101,108,101,97,115,101,41, + 2,114,19,0,0,0,114,43,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,46,0,0,0,92, + 0,0,0,115,32,0,0,0,0,6,12,1,10,1,3,1, + 3,1,10,1,30,1,9,1,15,1,4,1,12,1,16,1, + 18,1,22,2,13,1,21,2,122,19,95,77,111,100,117,108, + 101,76,111,99,107,46,97,99,113,117,105,114,101,99,1,0, + 0,0,0,0,0,0,2,0,0,0,10,0,0,0,67,0, + 0,0,115,157,0,0,0,116,0,0,106,1,0,131,0,0, + 125,1,0,124,0,0,106,2,0,143,129,0,1,124,0,0, + 106,3,0,124,1,0,107,3,0,114,49,0,116,4,0,100, + 1,0,131,1,0,130,1,0,124,0,0,106,5,0,100,2, + 0,107,4,0,115,70,0,116,6,0,130,1,0,124,0,0, + 4,106,5,0,100,3,0,56,2,95,5,0,124,0,0,106, + 5,0,100,2,0,107,2,0,114,146,0,100,0,0,124,0, + 0,95,3,0,124,0,0,106,7,0,114,146,0,124,0,0, + 4,106,7,0,100,3,0,56,2,95,7,0,124,0,0,106, + 8,0,106,9,0,131,0,0,1,87,100,0,0,81,82,88, + 100,0,0,83,41,4,78,122,31,99,97,110,110,111,116,32, + 114,101,108,101,97,115,101,32,117,110,45,97,99,113,117,105, + 114,101,100,32,108,111,99,107,114,33,0,0,0,114,45,0, + 0,0,41,10,114,34,0,0,0,114,40,0,0,0,114,35, + 0,0,0,114,37,0,0,0,218,12,82,117,110,116,105,109, + 101,69,114,114,111,114,114,38,0,0,0,218,14,65,115,115, + 101,114,116,105,111,110,69,114,114,111,114,114,39,0,0,0, + 114,36,0,0,0,114,47,0,0,0,41,2,114,19,0,0, + 0,114,43,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,47,0,0,0,117,0,0,0,115,22, + 0,0,0,0,1,12,1,10,1,15,1,12,1,21,1,15, + 1,15,1,9,1,9,1,15,1,122,19,95,77,111,100,117, + 108,101,76,111,99,107,46,114,101,108,101,97,115,101,99,1, + 0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,67, + 0,0,0,115,25,0,0,0,100,1,0,106,0,0,124,0, + 0,106,1,0,116,2,0,124,0,0,131,1,0,131,2,0, + 83,41,2,78,122,23,95,77,111,100,117,108,101,76,111,99, + 107,40,123,33,114,125,41,32,97,116,32,123,125,41,3,218, + 6,102,111,114,109,97,116,114,15,0,0,0,218,2,105,100, + 41,1,114,19,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,8,95,95,114,101,112,114,95,95, + 130,0,0,0,115,2,0,0,0,0,1,122,20,95,77,111, + 100,117,108,101,76,111,99,107,46,95,95,114,101,112,114,95, + 95,78,41,9,114,1,0,0,0,114,0,0,0,0,114,2, + 0,0,0,114,3,0,0,0,114,20,0,0,0,114,44,0, + 0,0,114,46,0,0,0,114,47,0,0,0,114,52,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,32,0,0,0,66,0,0,0,115,12, + 0,0,0,12,4,6,2,12,8,12,12,12,25,12,13,114, + 32,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,70,0,0,0,101,0, + 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, + 100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,100, + 5,0,132,0,0,90,5,0,100,6,0,100,7,0,132,0, + 0,90,6,0,100,8,0,100,9,0,132,0,0,90,7,0, + 100,10,0,83,41,11,218,16,95,68,117,109,109,121,77,111, + 100,117,108,101,76,111,99,107,122,86,65,32,115,105,109,112, + 108,101,32,95,77,111,100,117,108,101,76,111,99,107,32,101, + 113,117,105,118,97,108,101,110,116,32,102,111,114,32,80,121, + 116,104,111,110,32,98,117,105,108,100,115,32,119,105,116,104, + 111,117,116,10,32,32,32,32,109,117,108,116,105,45,116,104, + 114,101,97,100,105,110,103,32,115,117,112,112,111,114,116,46, + 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0, + 0,67,0,0,0,115,22,0,0,0,124,1,0,124,0,0, + 95,0,0,100,1,0,124,0,0,95,1,0,100,0,0,83, + 41,2,78,114,33,0,0,0,41,2,114,15,0,0,0,114, + 38,0,0,0,41,2,114,19,0,0,0,114,15,0,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 23,0,0,0,161,0,0,0,115,8,0,0,0,0,1,3, - 1,22,2,11,1,122,28,95,77,111,100,117,108,101,76,111, - 99,107,77,97,110,97,103,101,114,46,95,95,101,110,116,101, - 114,95,95,99,1,0,0,0,0,0,0,0,3,0,0,0, - 1,0,0,0,79,0,0,0,115,17,0,0,0,124,0,0, - 106,0,0,106,1,0,131,0,0,1,100,0,0,83,41,1, - 78,41,2,114,55,0,0,0,114,47,0,0,0,41,3,114, - 19,0,0,0,114,29,0,0,0,90,6,107,119,97,114,103, - 115,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,30,0,0,0,168,0,0,0,115,2,0,0,0,0,1, - 122,27,95,77,111,100,117,108,101,76,111,99,107,77,97,110, - 97,103,101,114,46,95,95,101,120,105,116,95,95,78,41,6, - 114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,114, - 20,0,0,0,114,23,0,0,0,114,30,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, - 0,0,114,54,0,0,0,155,0,0,0,115,6,0,0,0, - 12,2,12,4,12,7,114,54,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,139,0,0,0,100,1,0,125,1,0,121,17,0,116,0, - 0,136,0,0,25,131,0,0,125,1,0,87,110,18,0,4, - 116,1,0,107,10,0,114,43,0,1,1,1,89,110,1,0, - 88,124,1,0,100,1,0,107,8,0,114,135,0,116,2,0, - 100,1,0,107,8,0,114,83,0,116,3,0,136,0,0,131, - 1,0,125,1,0,110,12,0,116,4,0,136,0,0,131,1, - 0,125,1,0,135,0,0,102,1,0,100,2,0,100,3,0, - 134,0,0,125,2,0,116,5,0,106,6,0,124,1,0,124, - 2,0,131,2,0,116,0,0,136,0,0,60,124,1,0,83, - 41,4,122,109,71,101,116,32,111,114,32,99,114,101,97,116, - 101,32,116,104,101,32,109,111,100,117,108,101,32,108,111,99, - 107,32,102,111,114,32,97,32,103,105,118,101,110,32,109,111, - 100,117,108,101,32,110,97,109,101,46,10,10,32,32,32,32, - 83,104,111,117,108,100,32,111,110,108,121,32,98,101,32,99, - 97,108,108,101,100,32,119,105,116,104,32,116,104,101,32,105, - 109,112,111,114,116,32,108,111,99,107,32,116,97,107,101,110, - 46,78,99,1,0,0,0,0,0,0,0,1,0,0,0,2, - 0,0,0,19,0,0,0,115,11,0,0,0,116,0,0,136, - 0,0,61,100,0,0,83,41,1,78,41,1,218,13,95,109, - 111,100,117,108,101,95,108,111,99,107,115,41,1,218,1,95, - 41,1,114,15,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,2,99,98,188,0,0,0,115,2,0,0,0,0,1, - 122,28,95,103,101,116,95,109,111,100,117,108,101,95,108,111, - 99,107,46,60,108,111,99,97,108,115,62,46,99,98,41,7, - 114,59,0,0,0,114,28,0,0,0,114,34,0,0,0,114, - 53,0,0,0,114,32,0,0,0,218,8,95,119,101,97,107, - 114,101,102,90,3,114,101,102,41,3,114,15,0,0,0,114, - 35,0,0,0,114,61,0,0,0,114,10,0,0,0,41,1, - 114,15,0,0,0,114,11,0,0,0,114,56,0,0,0,174, - 0,0,0,115,24,0,0,0,0,4,6,1,3,1,17,1, - 13,1,5,1,12,1,12,1,15,2,12,1,18,2,22,1, - 114,56,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,71,0,0,0,116, - 0,0,124,0,0,131,1,0,125,1,0,116,1,0,106,2, - 0,131,0,0,1,121,14,0,124,1,0,106,3,0,131,0, - 0,1,87,110,18,0,4,116,4,0,107,10,0,114,56,0, - 1,1,1,89,110,11,0,88,124,1,0,106,5,0,131,0, - 0,1,100,1,0,83,41,2,97,21,1,0,0,82,101,108, - 101,97,115,101,32,116,104,101,32,103,108,111,98,97,108,32, - 105,109,112,111,114,116,32,108,111,99,107,44,32,97,110,100, - 32,97,99,113,117,105,114,101,115,32,116,104,101,110,32,114, - 101,108,101,97,115,101,32,116,104,101,10,32,32,32,32,109, - 111,100,117,108,101,32,108,111,99,107,32,102,111,114,32,97, - 32,103,105,118,101,110,32,109,111,100,117,108,101,32,110,97, - 109,101,46,10,32,32,32,32,84,104,105,115,32,105,115,32, - 117,115,101,100,32,116,111,32,101,110,115,117,114,101,32,97, - 32,109,111,100,117,108,101,32,105,115,32,99,111,109,112,108, - 101,116,101,108,121,32,105,110,105,116,105,97,108,105,122,101, - 100,44,32,105,110,32,116,104,101,10,32,32,32,32,101,118, - 101,110,116,32,105,116,32,105,115,32,98,101,105,110,103,32, - 105,109,112,111,114,116,101,100,32,98,121,32,97,110,111,116, - 104,101,114,32,116,104,114,101,97,100,46,10,10,32,32,32, - 32,83,104,111,117,108,100,32,111,110,108,121,32,98,101,32, - 99,97,108,108,101,100,32,119,105,116,104,32,116,104,101,32, - 105,109,112,111,114,116,32,108,111,99,107,32,116,97,107,101, - 110,46,78,41,6,114,56,0,0,0,114,57,0,0,0,114, - 58,0,0,0,114,46,0,0,0,114,31,0,0,0,114,47, - 0,0,0,41,2,114,15,0,0,0,114,35,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,19, - 95,108,111,99,107,95,117,110,108,111,99,107,95,109,111,100, - 117,108,101,193,0,0,0,115,14,0,0,0,0,7,12,1, - 10,1,3,1,14,1,13,3,5,2,114,63,0,0,0,99, - 1,0,0,0,0,0,0,0,3,0,0,0,3,0,0,0, - 79,0,0,0,115,13,0,0,0,124,0,0,124,1,0,124, - 2,0,142,0,0,83,41,1,97,46,1,0,0,114,101,109, - 111,118,101,95,105,109,112,111,114,116,108,105,98,95,102,114, - 97,109,101,115,32,105,110,32,105,109,112,111,114,116,46,99, - 32,119,105,108,108,32,97,108,119,97,121,115,32,114,101,109, - 111,118,101,32,115,101,113,117,101,110,99,101,115,10,32,32, - 32,32,111,102,32,105,109,112,111,114,116,108,105,98,32,102, - 114,97,109,101,115,32,116,104,97,116,32,101,110,100,32,119, - 105,116,104,32,97,32,99,97,108,108,32,116,111,32,116,104, - 105,115,32,102,117,110,99,116,105,111,110,10,10,32,32,32, - 32,85,115,101,32,105,116,32,105,110,115,116,101,97,100,32, - 111,102,32,97,32,110,111,114,109,97,108,32,99,97,108,108, - 32,105,110,32,112,108,97,99,101,115,32,119,104,101,114,101, - 32,105,110,99,108,117,100,105,110,103,32,116,104,101,32,105, - 109,112,111,114,116,108,105,98,10,32,32,32,32,102,114,97, - 109,101,115,32,105,110,116,114,111,100,117,99,101,115,32,117, - 110,119,97,110,116,101,100,32,110,111,105,115,101,32,105,110, - 116,111,32,116,104,101,32,116,114,97,99,101,98,97,99,107, - 32,40,101,46,103,46,32,119,104,101,110,32,101,120,101,99, - 117,116,105,110,103,10,32,32,32,32,109,111,100,117,108,101, - 32,99,111,100,101,41,10,32,32,32,32,114,10,0,0,0, - 41,3,218,1,102,114,29,0,0,0,90,4,107,119,100,115, - 114,10,0,0,0,114,10,0,0,0,114,11,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,212,0,0,0,115,2, - 0,0,0,0,8,114,65,0,0,0,218,9,118,101,114,98, - 111,115,105,116,121,114,45,0,0,0,99,1,0,0,0,1, - 0,0,0,3,0,0,0,4,0,0,0,71,0,0,0,115, - 75,0,0,0,116,0,0,106,1,0,106,2,0,124,1,0, - 107,5,0,114,71,0,124,0,0,106,3,0,100,6,0,131, - 1,0,115,43,0,100,3,0,124,0,0,23,125,0,0,116, - 4,0,124,0,0,106,5,0,124,2,0,140,0,0,100,4, - 0,116,0,0,106,6,0,131,1,1,1,100,5,0,83,41, - 7,122,61,80,114,105,110,116,32,116,104,101,32,109,101,115, - 115,97,103,101,32,116,111,32,115,116,100,101,114,114,32,105, - 102,32,45,118,47,80,89,84,72,79,78,86,69,82,66,79, - 83,69,32,105,115,32,116,117,114,110,101,100,32,111,110,46, - 250,1,35,250,7,105,109,112,111,114,116,32,122,2,35,32, - 90,4,102,105,108,101,78,41,2,114,67,0,0,0,114,68, - 0,0,0,41,7,114,14,0,0,0,218,5,102,108,97,103, - 115,218,7,118,101,114,98,111,115,101,218,10,115,116,97,114, - 116,115,119,105,116,104,218,5,112,114,105,110,116,114,50,0, - 0,0,218,6,115,116,100,101,114,114,41,3,218,7,109,101, - 115,115,97,103,101,114,66,0,0,0,114,29,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,16, - 95,118,101,114,98,111,115,101,95,109,101,115,115,97,103,101, - 223,0,0,0,115,8,0,0,0,0,2,18,1,15,1,10, - 1,114,75,0,0,0,99,1,0,0,0,0,0,0,0,2, - 0,0,0,3,0,0,0,3,0,0,0,115,35,0,0,0, - 135,0,0,102,1,0,100,1,0,100,2,0,134,0,0,125, - 1,0,116,0,0,124,1,0,136,0,0,131,2,0,1,124, - 1,0,83,41,3,122,49,68,101,99,111,114,97,116,111,114, - 32,116,111,32,118,101,114,105,102,121,32,116,104,101,32,110, - 97,109,101,100,32,109,111,100,117,108,101,32,105,115,32,98, - 117,105,108,116,45,105,110,46,99,2,0,0,0,0,0,0, - 0,2,0,0,0,4,0,0,0,19,0,0,0,115,55,0, - 0,0,124,1,0,116,0,0,106,1,0,107,7,0,114,42, - 0,116,2,0,100,1,0,106,3,0,124,1,0,131,1,0, - 100,2,0,124,1,0,131,1,1,130,1,0,136,0,0,124, - 0,0,124,1,0,131,2,0,83,41,3,78,122,29,123,33, - 114,125,32,105,115,32,110,111,116,32,97,32,98,117,105,108, - 116,45,105,110,32,109,111,100,117,108,101,114,15,0,0,0, - 41,4,114,14,0,0,0,218,20,98,117,105,108,116,105,110, - 95,109,111,100,117,108,101,95,110,97,109,101,115,218,11,73, - 109,112,111,114,116,69,114,114,111,114,114,50,0,0,0,41, - 2,114,19,0,0,0,218,8,102,117,108,108,110,97,109,101, - 41,1,218,3,102,120,110,114,10,0,0,0,114,11,0,0, - 0,218,25,95,114,101,113,117,105,114,101,115,95,98,117,105, - 108,116,105,110,95,119,114,97,112,112,101,114,233,0,0,0, - 115,8,0,0,0,0,1,15,1,18,1,9,1,122,52,95, - 114,101,113,117,105,114,101,115,95,98,117,105,108,116,105,110, - 46,60,108,111,99,97,108,115,62,46,95,114,101,113,117,105, - 114,101,115,95,98,117,105,108,116,105,110,95,119,114,97,112, - 112,101,114,41,1,114,12,0,0,0,41,2,114,79,0,0, - 0,114,80,0,0,0,114,10,0,0,0,41,1,114,79,0, - 0,0,114,11,0,0,0,218,17,95,114,101,113,117,105,114, - 101,115,95,98,117,105,108,116,105,110,231,0,0,0,115,6, - 0,0,0,0,2,18,5,13,1,114,81,0,0,0,99,1, - 0,0,0,0,0,0,0,2,0,0,0,3,0,0,0,3, - 0,0,0,115,35,0,0,0,135,0,0,102,1,0,100,1, - 0,100,2,0,134,0,0,125,1,0,116,0,0,124,1,0, - 136,0,0,131,2,0,1,124,1,0,83,41,3,122,47,68, - 101,99,111,114,97,116,111,114,32,116,111,32,118,101,114,105, - 102,121,32,116,104,101,32,110,97,109,101,100,32,109,111,100, - 117,108,101,32,105,115,32,102,114,111,122,101,110,46,99,2, - 0,0,0,0,0,0,0,2,0,0,0,4,0,0,0,19, - 0,0,0,115,55,0,0,0,116,0,0,106,1,0,124,1, - 0,131,1,0,115,42,0,116,2,0,100,1,0,106,3,0, - 124,1,0,131,1,0,100,2,0,124,1,0,131,1,1,130, - 1,0,136,0,0,124,0,0,124,1,0,131,2,0,83,41, - 3,78,122,27,123,33,114,125,32,105,115,32,110,111,116,32, - 97,32,102,114,111,122,101,110,32,109,111,100,117,108,101,114, - 15,0,0,0,41,4,114,57,0,0,0,218,9,105,115,95, - 102,114,111,122,101,110,114,77,0,0,0,114,50,0,0,0, - 41,2,114,19,0,0,0,114,78,0,0,0,41,1,114,79, - 0,0,0,114,10,0,0,0,114,11,0,0,0,218,24,95, - 114,101,113,117,105,114,101,115,95,102,114,111,122,101,110,95, - 119,114,97,112,112,101,114,244,0,0,0,115,8,0,0,0, - 0,1,15,1,18,1,9,1,122,50,95,114,101,113,117,105, - 114,101,115,95,102,114,111,122,101,110,46,60,108,111,99,97, - 108,115,62,46,95,114,101,113,117,105,114,101,115,95,102,114, - 111,122,101,110,95,119,114,97,112,112,101,114,41,1,114,12, - 0,0,0,41,2,114,79,0,0,0,114,83,0,0,0,114, - 10,0,0,0,41,1,114,79,0,0,0,114,11,0,0,0, - 218,16,95,114,101,113,117,105,114,101,115,95,102,114,111,122, - 101,110,242,0,0,0,115,6,0,0,0,0,2,18,5,13, - 1,114,84,0,0,0,99,2,0,0,0,0,0,0,0,4, - 0,0,0,3,0,0,0,67,0,0,0,115,81,0,0,0, - 116,0,0,124,1,0,124,0,0,131,2,0,125,2,0,124, - 1,0,116,1,0,106,2,0,107,6,0,114,67,0,116,1, - 0,106,2,0,124,1,0,25,125,3,0,116,3,0,124,2, - 0,124,3,0,131,2,0,1,116,1,0,106,2,0,124,1, - 0,25,83,116,4,0,124,2,0,131,1,0,83,100,1,0, - 83,41,2,122,128,76,111,97,100,32,116,104,101,32,115,112, - 101,99,105,102,105,101,100,32,109,111,100,117,108,101,32,105, - 110,116,111,32,115,121,115,46,109,111,100,117,108,101,115,32, - 97,110,100,32,114,101,116,117,114,110,32,105,116,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,46,32,32, - 85,115,101,32,108,111,97,100,101,114,46,101,120,101,99,95, - 109,111,100,117,108,101,32,105,110,115,116,101,97,100,46,10, - 10,32,32,32,32,78,41,5,218,16,115,112,101,99,95,102, - 114,111,109,95,108,111,97,100,101,114,114,14,0,0,0,114, - 21,0,0,0,218,5,95,101,120,101,99,218,5,95,108,111, - 97,100,41,4,114,19,0,0,0,114,78,0,0,0,218,4, - 115,112,101,99,218,6,109,111,100,117,108,101,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,218,17,95,108,111, - 97,100,95,109,111,100,117,108,101,95,115,104,105,109,254,0, - 0,0,115,12,0,0,0,0,6,15,1,15,1,13,1,13, - 1,11,2,114,90,0,0,0,99,1,0,0,0,0,0,0, - 0,5,0,0,0,35,0,0,0,67,0,0,0,115,6,1, - 0,0,116,0,0,124,0,0,100,1,0,100,0,0,131,3, - 0,125,1,0,116,1,0,124,1,0,100,2,0,131,2,0, - 114,71,0,121,17,0,124,1,0,106,2,0,124,0,0,131, - 1,0,83,87,110,18,0,4,116,3,0,107,10,0,114,70, - 0,1,1,1,89,110,1,0,88,121,13,0,124,0,0,106, - 4,0,125,2,0,87,110,18,0,4,116,5,0,107,10,0, - 114,104,0,1,1,1,89,110,23,0,88,124,2,0,100,0, - 0,107,9,0,114,127,0,116,6,0,124,2,0,131,1,0, - 83,121,13,0,124,0,0,106,7,0,125,3,0,87,110,24, - 0,4,116,5,0,107,10,0,114,166,0,1,1,1,100,3, - 0,125,3,0,89,110,1,0,88,121,13,0,124,0,0,106, - 8,0,125,4,0,87,110,59,0,4,116,5,0,107,10,0, - 114,241,0,1,1,1,124,1,0,100,0,0,107,8,0,114, - 221,0,100,4,0,106,9,0,124,3,0,131,1,0,83,100, - 5,0,106,9,0,124,3,0,124,1,0,131,2,0,83,89, - 110,17,0,88,100,6,0,106,9,0,124,3,0,124,4,0, - 131,2,0,83,100,0,0,83,41,7,78,218,10,95,95,108, - 111,97,100,101,114,95,95,218,11,109,111,100,117,108,101,95, - 114,101,112,114,250,1,63,122,13,60,109,111,100,117,108,101, - 32,123,33,114,125,62,122,20,60,109,111,100,117,108,101,32, - 123,33,114,125,32,40,123,33,114,125,41,62,122,23,60,109, - 111,100,117,108,101,32,123,33,114,125,32,102,114,111,109,32, - 123,33,114,125,62,41,10,114,6,0,0,0,114,4,0,0, - 0,114,92,0,0,0,218,9,69,120,99,101,112,116,105,111, - 110,218,8,95,95,115,112,101,99,95,95,218,14,65,116,116, - 114,105,98,117,116,101,69,114,114,111,114,218,22,95,109,111, - 100,117,108,101,95,114,101,112,114,95,102,114,111,109,95,115, - 112,101,99,114,1,0,0,0,218,8,95,95,102,105,108,101, - 95,95,114,50,0,0,0,41,5,114,89,0,0,0,218,6, - 108,111,97,100,101,114,114,88,0,0,0,114,15,0,0,0, - 218,8,102,105,108,101,110,97,109,101,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,12,95,109,111,100,117, - 108,101,95,114,101,112,114,14,1,0,0,115,46,0,0,0, - 0,2,18,1,15,4,3,1,17,1,13,1,5,1,3,1, - 13,1,13,1,5,2,12,1,10,4,3,1,13,1,13,1, - 11,1,3,1,13,1,13,1,12,1,13,2,21,2,114,101, + 20,0,0,0,138,0,0,0,115,4,0,0,0,0,1,9, + 1,122,25,95,68,117,109,109,121,77,111,100,117,108,101,76, + 111,99,107,46,95,95,105,110,105,116,95,95,99,1,0,0, + 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, + 0,115,19,0,0,0,124,0,0,4,106,0,0,100,1,0, + 55,2,95,0,0,100,2,0,83,41,3,78,114,45,0,0, + 0,84,41,1,114,38,0,0,0,41,1,114,19,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 46,0,0,0,142,0,0,0,115,4,0,0,0,0,1,15, + 1,122,24,95,68,117,109,109,121,77,111,100,117,108,101,76, + 111,99,107,46,97,99,113,117,105,114,101,99,1,0,0,0, + 0,0,0,0,1,0,0,0,3,0,0,0,67,0,0,0, + 115,46,0,0,0,124,0,0,106,0,0,100,1,0,107,2, + 0,114,27,0,116,1,0,100,2,0,131,1,0,130,1,0, + 124,0,0,4,106,0,0,100,3,0,56,2,95,0,0,100, + 0,0,83,41,4,78,114,33,0,0,0,122,31,99,97,110, + 110,111,116,32,114,101,108,101,97,115,101,32,117,110,45,97, + 99,113,117,105,114,101,100,32,108,111,99,107,114,45,0,0, + 0,41,2,114,38,0,0,0,114,48,0,0,0,41,1,114, + 19,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,47,0,0,0,146,0,0,0,115,6,0,0, + 0,0,1,15,1,12,1,122,24,95,68,117,109,109,121,77, + 111,100,117,108,101,76,111,99,107,46,114,101,108,101,97,115, + 101,99,1,0,0,0,0,0,0,0,1,0,0,0,4,0, + 0,0,67,0,0,0,115,25,0,0,0,100,1,0,106,0, + 0,124,0,0,106,1,0,116,2,0,124,0,0,131,1,0, + 131,2,0,83,41,2,78,122,28,95,68,117,109,109,121,77, + 111,100,117,108,101,76,111,99,107,40,123,33,114,125,41,32, + 97,116,32,123,125,41,3,114,50,0,0,0,114,15,0,0, + 0,114,51,0,0,0,41,1,114,19,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,52,0,0, + 0,151,0,0,0,115,2,0,0,0,0,1,122,25,95,68, + 117,109,109,121,77,111,100,117,108,101,76,111,99,107,46,95, + 95,114,101,112,114,95,95,78,41,8,114,1,0,0,0,114, + 0,0,0,0,114,2,0,0,0,114,3,0,0,0,114,20, + 0,0,0,114,46,0,0,0,114,47,0,0,0,114,52,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,53,0,0,0,134,0,0,0,115, + 10,0,0,0,12,2,6,2,12,4,12,4,12,5,114,53, 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,52,0,0,0,101,0,0, 90,1,0,100,0,0,90,2,0,100,1,0,100,2,0,132, 0,0,90,3,0,100,3,0,100,4,0,132,0,0,90,4, 0,100,5,0,100,6,0,132,0,0,90,5,0,100,7,0, - 83,41,8,218,17,95,105,110,115,116,97,108,108,101,100,95, - 115,97,102,101,108,121,99,2,0,0,0,0,0,0,0,2, - 0,0,0,2,0,0,0,67,0,0,0,115,25,0,0,0, - 124,1,0,124,0,0,95,0,0,124,1,0,106,1,0,124, - 0,0,95,2,0,100,0,0,83,41,1,78,41,3,218,7, - 95,109,111,100,117,108,101,114,95,0,0,0,218,5,95,115, - 112,101,99,41,2,114,19,0,0,0,114,89,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,20, - 0,0,0,52,1,0,0,115,4,0,0,0,0,1,9,1, - 122,26,95,105,110,115,116,97,108,108,101,100,95,115,97,102, - 101,108,121,46,95,95,105,110,105,116,95,95,99,1,0,0, - 0,0,0,0,0,1,0,0,0,3,0,0,0,67,0,0, - 0,115,38,0,0,0,100,1,0,124,0,0,106,0,0,95, - 1,0,124,0,0,106,2,0,116,3,0,106,4,0,124,0, - 0,106,0,0,106,5,0,60,100,0,0,83,41,2,78,84, - 41,6,114,104,0,0,0,218,13,95,105,110,105,116,105,97, - 108,105,122,105,110,103,114,103,0,0,0,114,14,0,0,0, - 114,21,0,0,0,114,15,0,0,0,41,1,114,19,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,23,0,0,0,56,1,0,0,115,4,0,0,0,0,4, - 12,1,122,27,95,105,110,115,116,97,108,108,101,100,95,115, - 97,102,101,108,121,46,95,95,101,110,116,101,114,95,95,99, - 1,0,0,0,0,0,0,0,3,0,0,0,17,0,0,0, - 71,0,0,0,115,121,0,0,0,122,101,0,124,0,0,106, - 0,0,125,2,0,116,1,0,100,1,0,100,2,0,132,0, - 0,124,1,0,68,131,1,0,131,1,0,114,78,0,121,17, - 0,116,2,0,106,3,0,124,2,0,106,4,0,61,87,113, - 100,0,4,116,5,0,107,10,0,114,74,0,1,1,1,89, - 113,100,0,88,110,22,0,116,6,0,100,3,0,124,2,0, - 106,4,0,124,2,0,106,7,0,131,3,0,1,87,100,0, - 0,100,4,0,124,0,0,106,0,0,95,8,0,88,100,0, - 0,83,41,5,78,99,1,0,0,0,0,0,0,0,2,0, - 0,0,3,0,0,0,115,0,0,0,115,27,0,0,0,124, - 0,0,93,17,0,125,1,0,124,1,0,100,0,0,107,9, - 0,86,1,113,3,0,100,0,0,83,41,1,78,114,10,0, - 0,0,41,2,114,24,0,0,0,114,25,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,26,0, - 0,0,66,1,0,0,115,2,0,0,0,6,0,122,45,95, - 105,110,115,116,97,108,108,101,100,95,115,97,102,101,108,121, - 46,95,95,101,120,105,116,95,95,46,60,108,111,99,97,108, - 115,62,46,60,103,101,110,101,120,112,114,62,122,18,105,109, - 112,111,114,116,32,123,33,114,125,32,35,32,123,33,114,125, - 70,41,9,114,104,0,0,0,114,27,0,0,0,114,14,0, - 0,0,114,21,0,0,0,114,15,0,0,0,114,28,0,0, - 0,114,75,0,0,0,114,99,0,0,0,114,105,0,0,0, - 41,3,114,19,0,0,0,114,29,0,0,0,114,88,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,30,0,0,0,63,1,0,0,115,18,0,0,0,0,1, - 3,1,9,1,25,1,3,1,17,1,13,1,8,2,26,2, - 122,26,95,105,110,115,116,97,108,108,101,100,95,115,97,102, - 101,108,121,46,95,95,101,120,105,116,95,95,78,41,6,114, - 1,0,0,0,114,0,0,0,0,114,2,0,0,0,114,20, - 0,0,0,114,23,0,0,0,114,30,0,0,0,114,10,0, + 83,41,8,218,18,95,77,111,100,117,108,101,76,111,99,107, + 77,97,110,97,103,101,114,99,2,0,0,0,0,0,0,0, + 2,0,0,0,2,0,0,0,67,0,0,0,115,22,0,0, + 0,124,1,0,124,0,0,95,0,0,100,0,0,124,0,0, + 95,1,0,100,0,0,83,41,1,78,41,2,114,18,0,0, + 0,218,5,95,108,111,99,107,41,2,114,19,0,0,0,114, + 15,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,20,0,0,0,157,0,0,0,115,4,0,0, + 0,0,1,9,1,122,27,95,77,111,100,117,108,101,76,111, + 99,107,77,97,110,97,103,101,114,46,95,95,105,110,105,116, + 95,95,99,1,0,0,0,0,0,0,0,1,0,0,0,10, + 0,0,0,67,0,0,0,115,53,0,0,0,122,22,0,116, + 0,0,124,0,0,106,1,0,131,1,0,124,0,0,95,2, + 0,87,100,0,0,116,3,0,106,4,0,131,0,0,1,88, + 124,0,0,106,2,0,106,5,0,131,0,0,1,100,0,0, + 83,41,1,78,41,6,218,16,95,103,101,116,95,109,111,100, + 117,108,101,95,108,111,99,107,114,18,0,0,0,114,55,0, + 0,0,218,4,95,105,109,112,218,12,114,101,108,101,97,115, + 101,95,108,111,99,107,114,46,0,0,0,41,1,114,19,0, 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,102,0,0,0,50,1,0,0,115,6,0,0,0,12, - 2,12,4,12,7,114,102,0,0,0,99,0,0,0,0,0, - 0,0,0,0,0,0,0,8,0,0,0,64,0,0,0,115, - 172,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, - 100,1,0,90,3,0,100,2,0,100,3,0,100,4,0,100, - 3,0,100,5,0,100,3,0,100,6,0,100,7,0,132,0, - 3,90,4,0,100,8,0,100,9,0,132,0,0,90,5,0, - 100,10,0,100,11,0,132,0,0,90,6,0,101,7,0,100, - 12,0,100,13,0,132,0,0,131,1,0,90,8,0,101,8, - 0,106,9,0,100,14,0,100,13,0,132,0,0,131,1,0, - 90,8,0,101,7,0,100,15,0,100,16,0,132,0,0,131, - 1,0,90,10,0,101,7,0,100,17,0,100,18,0,132,0, - 0,131,1,0,90,11,0,101,11,0,106,9,0,100,19,0, - 100,18,0,132,0,0,131,1,0,90,11,0,100,3,0,83, - 41,20,218,10,77,111,100,117,108,101,83,112,101,99,97,208, - 5,0,0,84,104,101,32,115,112,101,99,105,102,105,99,97, - 116,105,111,110,32,102,111,114,32,97,32,109,111,100,117,108, - 101,44,32,117,115,101,100,32,102,111,114,32,108,111,97,100, - 105,110,103,46,10,10,32,32,32,32,65,32,109,111,100,117, - 108,101,39,115,32,115,112,101,99,32,105,115,32,116,104,101, - 32,115,111,117,114,99,101,32,102,111,114,32,105,110,102,111, - 114,109,97,116,105,111,110,32,97,98,111,117,116,32,116,104, - 101,32,109,111,100,117,108,101,46,32,32,70,111,114,10,32, - 32,32,32,100,97,116,97,32,97,115,115,111,99,105,97,116, - 101,100,32,119,105,116,104,32,116,104,101,32,109,111,100,117, - 108,101,44,32,105,110,99,108,117,100,105,110,103,32,115,111, - 117,114,99,101,44,32,117,115,101,32,116,104,101,32,115,112, - 101,99,39,115,10,32,32,32,32,108,111,97,100,101,114,46, - 10,10,32,32,32,32,96,110,97,109,101,96,32,105,115,32, - 116,104,101,32,97,98,115,111,108,117,116,101,32,110,97,109, - 101,32,111,102,32,116,104,101,32,109,111,100,117,108,101,46, - 32,32,96,108,111,97,100,101,114,96,32,105,115,32,116,104, - 101,32,108,111,97,100,101,114,10,32,32,32,32,116,111,32, - 117,115,101,32,119,104,101,110,32,108,111,97,100,105,110,103, - 32,116,104,101,32,109,111,100,117,108,101,46,32,32,96,112, - 97,114,101,110,116,96,32,105,115,32,116,104,101,32,110,97, - 109,101,32,111,102,32,116,104,101,10,32,32,32,32,112,97, - 99,107,97,103,101,32,116,104,101,32,109,111,100,117,108,101, - 32,105,115,32,105,110,46,32,32,84,104,101,32,112,97,114, - 101,110,116,32,105,115,32,100,101,114,105,118,101,100,32,102, - 114,111,109,32,116,104,101,32,110,97,109,101,46,10,10,32, - 32,32,32,96,105,115,95,112,97,99,107,97,103,101,96,32, - 100,101,116,101,114,109,105,110,101,115,32,105,102,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,99,111,110,115, - 105,100,101,114,101,100,32,97,32,112,97,99,107,97,103,101, - 32,111,114,10,32,32,32,32,110,111,116,46,32,32,79,110, - 32,109,111,100,117,108,101,115,32,116,104,105,115,32,105,115, - 32,114,101,102,108,101,99,116,101,100,32,98,121,32,116,104, - 101,32,96,95,95,112,97,116,104,95,95,96,32,97,116,116, - 114,105,98,117,116,101,46,10,10,32,32,32,32,96,111,114, - 105,103,105,110,96,32,105,115,32,116,104,101,32,115,112,101, - 99,105,102,105,99,32,108,111,99,97,116,105,111,110,32,117, - 115,101,100,32,98,121,32,116,104,101,32,108,111,97,100,101, - 114,32,102,114,111,109,32,119,104,105,99,104,32,116,111,10, - 32,32,32,32,108,111,97,100,32,116,104,101,32,109,111,100, - 117,108,101,44,32,105,102,32,116,104,97,116,32,105,110,102, - 111,114,109,97,116,105,111,110,32,105,115,32,97,118,97,105, - 108,97,98,108,101,46,32,32,87,104,101,110,32,102,105,108, - 101,110,97,109,101,32,105,115,10,32,32,32,32,115,101,116, - 44,32,111,114,105,103,105,110,32,119,105,108,108,32,109,97, - 116,99,104,46,10,10,32,32,32,32,96,104,97,115,95,108, - 111,99,97,116,105,111,110,96,32,105,110,100,105,99,97,116, - 101,115,32,116,104,97,116,32,97,32,115,112,101,99,39,115, - 32,34,111,114,105,103,105,110,34,32,114,101,102,108,101,99, - 116,115,32,97,32,108,111,99,97,116,105,111,110,46,10,32, - 32,32,32,87,104,101,110,32,116,104,105,115,32,105,115,32, - 84,114,117,101,44,32,96,95,95,102,105,108,101,95,95,96, - 32,97,116,116,114,105,98,117,116,101,32,111,102,32,116,104, - 101,32,109,111,100,117,108,101,32,105,115,32,115,101,116,46, - 10,10,32,32,32,32,96,99,97,99,104,101,100,96,32,105, - 115,32,116,104,101,32,108,111,99,97,116,105,111,110,32,111, - 102,32,116,104,101,32,99,97,99,104,101,100,32,98,121,116, - 101,99,111,100,101,32,102,105,108,101,44,32,105,102,32,97, - 110,121,46,32,32,73,116,10,32,32,32,32,99,111,114,114, - 101,115,112,111,110,100,115,32,116,111,32,116,104,101,32,96, - 95,95,99,97,99,104,101,100,95,95,96,32,97,116,116,114, - 105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104,101,32, - 115,101,113,117,101,110,99,101,32,111,102,32,112,97,116,104, - 32,101,110,116,114,105,101,115,32,116,111,10,32,32,32,32, - 115,101,97,114,99,104,32,119,104,101,110,32,105,109,112,111, - 114,116,105,110,103,32,115,117,98,109,111,100,117,108,101,115, - 46,32,32,73,102,32,115,101,116,44,32,105,115,95,112,97, - 99,107,97,103,101,32,115,104,111,117,108,100,32,98,101,10, - 32,32,32,32,84,114,117,101,45,45,97,110,100,32,70,97, - 108,115,101,32,111,116,104,101,114,119,105,115,101,46,10,10, - 32,32,32,32,80,97,99,107,97,103,101,115,32,97,114,101, - 32,115,105,109,112,108,121,32,109,111,100,117,108,101,115,32, - 116,104,97,116,32,40,109,97,121,41,32,104,97,118,101,32, - 115,117,98,109,111,100,117,108,101,115,46,32,32,73,102,32, - 97,32,115,112,101,99,10,32,32,32,32,104,97,115,32,97, - 32,110,111,110,45,78,111,110,101,32,118,97,108,117,101,32, - 105,110,32,96,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,96,44, - 32,116,104,101,32,105,109,112,111,114,116,10,32,32,32,32, - 115,121,115,116,101,109,32,119,105,108,108,32,99,111,110,115, - 105,100,101,114,32,109,111,100,117,108,101,115,32,108,111,97, - 100,101,100,32,102,114,111,109,32,116,104,101,32,115,112,101, - 99,32,97,115,32,112,97,99,107,97,103,101,115,46,10,10, - 32,32,32,32,79,110,108,121,32,102,105,110,100,101,114,115, - 32,40,115,101,101,32,105,109,112,111,114,116,108,105,98,46, - 97,98,99,46,77,101,116,97,80,97,116,104,70,105,110,100, - 101,114,32,97,110,100,10,32,32,32,32,105,109,112,111,114, - 116,108,105,98,46,97,98,99,46,80,97,116,104,69,110,116, - 114,121,70,105,110,100,101,114,41,32,115,104,111,117,108,100, - 32,109,111,100,105,102,121,32,77,111,100,117,108,101,83,112, - 101,99,32,105,110,115,116,97,110,99,101,115,46,10,10,32, - 32,32,32,218,6,111,114,105,103,105,110,78,218,12,108,111, - 97,100,101,114,95,115,116,97,116,101,218,10,105,115,95,112, - 97,99,107,97,103,101,99,3,0,0,0,3,0,0,0,6, - 0,0,0,2,0,0,0,67,0,0,0,115,79,0,0,0, - 124,1,0,124,0,0,95,0,0,124,2,0,124,0,0,95, - 1,0,124,3,0,124,0,0,95,2,0,124,4,0,124,0, - 0,95,3,0,124,5,0,114,48,0,103,0,0,110,3,0, - 100,0,0,124,0,0,95,4,0,100,1,0,124,0,0,95, - 5,0,100,0,0,124,0,0,95,6,0,100,0,0,83,41, - 2,78,70,41,7,114,15,0,0,0,114,99,0,0,0,114, - 107,0,0,0,114,108,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,218,13,95,115,101,116,95,102,105,108,101, - 97,116,116,114,218,7,95,99,97,99,104,101,100,41,6,114, - 19,0,0,0,114,15,0,0,0,114,99,0,0,0,114,107, - 0,0,0,114,108,0,0,0,114,109,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,20,0,0, - 0,114,1,0,0,115,14,0,0,0,0,2,9,1,9,1, - 9,1,9,1,21,3,9,1,122,19,77,111,100,117,108,101, - 83,112,101,99,46,95,95,105,110,105,116,95,95,99,1,0, - 0,0,0,0,0,0,2,0,0,0,4,0,0,0,67,0, - 0,0,115,147,0,0,0,100,1,0,106,0,0,124,0,0, - 106,1,0,131,1,0,100,2,0,106,0,0,124,0,0,106, - 2,0,131,1,0,103,2,0,125,1,0,124,0,0,106,3, - 0,100,0,0,107,9,0,114,76,0,124,1,0,106,4,0, - 100,3,0,106,0,0,124,0,0,106,3,0,131,1,0,131, - 1,0,1,124,0,0,106,5,0,100,0,0,107,9,0,114, - 116,0,124,1,0,106,4,0,100,4,0,106,0,0,124,0, - 0,106,5,0,131,1,0,131,1,0,1,100,5,0,106,0, - 0,124,0,0,106,6,0,106,7,0,100,6,0,106,8,0, - 124,1,0,131,1,0,131,2,0,83,41,7,78,122,9,110, - 97,109,101,61,123,33,114,125,122,11,108,111,97,100,101,114, - 61,123,33,114,125,122,11,111,114,105,103,105,110,61,123,33, - 114,125,122,29,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,61,123, - 125,122,6,123,125,40,123,125,41,122,2,44,32,41,9,114, - 50,0,0,0,114,15,0,0,0,114,99,0,0,0,114,107, - 0,0,0,218,6,97,112,112,101,110,100,114,110,0,0,0, - 218,9,95,95,99,108,97,115,115,95,95,114,1,0,0,0, - 218,4,106,111,105,110,41,2,114,19,0,0,0,114,29,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,52,0,0,0,126,1,0,0,115,16,0,0,0,0, - 1,15,1,21,1,15,1,25,1,15,1,12,1,13,1,122, - 19,77,111,100,117,108,101,83,112,101,99,46,95,95,114,101, - 112,114,95,95,99,2,0,0,0,0,0,0,0,3,0,0, - 0,11,0,0,0,67,0,0,0,115,145,0,0,0,124,0, - 0,106,0,0,125,2,0,121,107,0,124,0,0,106,1,0, - 124,1,0,106,1,0,107,2,0,111,114,0,124,0,0,106, - 2,0,124,1,0,106,2,0,107,2,0,111,114,0,124,0, - 0,106,3,0,124,1,0,106,3,0,107,2,0,111,114,0, - 124,2,0,124,1,0,106,0,0,107,2,0,111,114,0,124, - 0,0,106,4,0,124,1,0,106,4,0,107,2,0,111,114, - 0,124,0,0,106,5,0,124,1,0,106,5,0,107,2,0, - 83,87,110,22,0,4,116,6,0,107,10,0,114,140,0,1, - 1,1,100,1,0,83,89,110,1,0,88,100,0,0,83,41, - 2,78,70,41,7,114,110,0,0,0,114,15,0,0,0,114, - 99,0,0,0,114,107,0,0,0,218,6,99,97,99,104,101, - 100,218,12,104,97,115,95,108,111,99,97,116,105,111,110,114, - 96,0,0,0,41,3,114,19,0,0,0,90,5,111,116,104, - 101,114,90,4,115,109,115,108,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,6,95,95,101,113,95,95,136, - 1,0,0,115,20,0,0,0,0,1,9,1,3,1,18,1, - 18,1,18,1,15,1,18,1,20,1,13,1,122,17,77,111, - 100,117,108,101,83,112,101,99,46,95,95,101,113,95,95,99, - 1,0,0,0,0,0,0,0,2,0,0,0,2,0,0,0, - 67,0,0,0,115,79,0,0,0,124,0,0,106,0,0,100, - 0,0,107,8,0,114,72,0,124,0,0,106,1,0,100,0, - 0,107,9,0,114,72,0,124,0,0,106,2,0,114,72,0, - 100,1,0,100,0,0,108,3,0,125,1,0,124,1,0,106, - 4,0,124,0,0,106,1,0,131,1,0,124,0,0,95,0, - 0,124,0,0,106,0,0,83,41,2,78,114,33,0,0,0, - 41,5,114,112,0,0,0,114,107,0,0,0,114,111,0,0, - 0,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,90,11,95, - 103,101,116,95,99,97,99,104,101,100,41,2,114,19,0,0, - 0,218,19,95,98,111,111,116,115,116,114,97,112,95,101,120, - 116,101,114,110,97,108,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,116,0,0,0,148,1,0,0,115,10, - 0,0,0,0,2,15,1,24,1,12,1,21,1,122,17,77, - 111,100,117,108,101,83,112,101,99,46,99,97,99,104,101,100, - 99,2,0,0,0,0,0,0,0,2,0,0,0,2,0,0, - 0,67,0,0,0,115,13,0,0,0,124,1,0,124,0,0, - 95,0,0,100,0,0,83,41,1,78,41,1,114,112,0,0, - 0,41,2,114,19,0,0,0,114,116,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,116,0,0, - 0,156,1,0,0,115,2,0,0,0,0,2,99,1,0,0, - 0,0,0,0,0,1,0,0,0,2,0,0,0,67,0,0, - 0,115,46,0,0,0,124,0,0,106,0,0,100,1,0,107, - 8,0,114,35,0,124,0,0,106,1,0,106,2,0,100,2, - 0,131,1,0,100,3,0,25,83,124,0,0,106,1,0,83, - 100,1,0,83,41,4,122,32,84,104,101,32,110,97,109,101, - 32,111,102,32,116,104,101,32,109,111,100,117,108,101,39,115, - 32,112,97,114,101,110,116,46,78,218,1,46,114,33,0,0, - 0,41,3,114,110,0,0,0,114,15,0,0,0,218,10,114, - 112,97,114,116,105,116,105,111,110,41,1,114,19,0,0,0, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 6,112,97,114,101,110,116,160,1,0,0,115,6,0,0,0, - 0,3,15,1,20,2,122,17,77,111,100,117,108,101,83,112, - 101,99,46,112,97,114,101,110,116,99,1,0,0,0,0,0, - 0,0,1,0,0,0,1,0,0,0,67,0,0,0,115,7, - 0,0,0,124,0,0,106,0,0,83,41,1,78,41,1,114, - 111,0,0,0,41,1,114,19,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,117,0,0,0,168, - 1,0,0,115,2,0,0,0,0,2,122,23,77,111,100,117, - 108,101,83,112,101,99,46,104,97,115,95,108,111,99,97,116, - 105,111,110,99,2,0,0,0,0,0,0,0,2,0,0,0, - 2,0,0,0,67,0,0,0,115,19,0,0,0,116,0,0, - 124,1,0,131,1,0,124,0,0,95,1,0,100,0,0,83, - 41,1,78,41,2,218,4,98,111,111,108,114,111,0,0,0, - 41,2,114,19,0,0,0,218,5,118,97,108,117,101,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,117,0, - 0,0,172,1,0,0,115,2,0,0,0,0,2,41,12,114, - 1,0,0,0,114,0,0,0,0,114,2,0,0,0,114,3, - 0,0,0,114,20,0,0,0,114,52,0,0,0,114,118,0, - 0,0,218,8,112,114,111,112,101,114,116,121,114,116,0,0, - 0,218,6,115,101,116,116,101,114,114,123,0,0,0,114,117, - 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,106,0,0,0,77,1,0,0, - 115,20,0,0,0,12,35,6,2,15,1,15,11,12,10,12, - 12,18,8,21,4,18,8,18,4,114,106,0,0,0,114,107, - 0,0,0,78,114,109,0,0,0,99,2,0,0,0,2,0, - 0,0,6,0,0,0,15,0,0,0,67,0,0,0,115,206, - 0,0,0,116,0,0,124,1,0,100,1,0,131,2,0,114, - 99,0,100,2,0,100,3,0,108,1,0,109,2,0,125,4, - 0,1,124,3,0,100,4,0,107,8,0,114,59,0,124,4, - 0,124,0,0,100,5,0,124,1,0,131,1,1,83,124,3, - 0,114,71,0,103,0,0,110,3,0,100,4,0,125,5,0, - 124,4,0,124,0,0,100,5,0,124,1,0,100,6,0,124, - 5,0,131,1,2,83,124,3,0,100,4,0,107,8,0,114, - 181,0,116,0,0,124,1,0,100,7,0,131,2,0,114,175, - 0,121,19,0,124,1,0,106,3,0,124,0,0,131,1,0, - 125,3,0,87,113,181,0,4,116,4,0,107,10,0,114,171, - 0,1,1,1,100,4,0,125,3,0,89,113,181,0,88,110, - 6,0,100,8,0,125,3,0,116,5,0,124,0,0,124,1, - 0,100,9,0,124,2,0,100,7,0,124,3,0,131,2,2, - 83,41,10,122,53,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,118,97,114,105,111,117,115,32,108,111,97,100,101, - 114,32,109,101,116,104,111,100,115,46,90,12,103,101,116,95, - 102,105,108,101,110,97,109,101,114,45,0,0,0,41,1,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,78,114,99,0,0,0,114,110, - 0,0,0,114,109,0,0,0,70,114,107,0,0,0,41,6, - 114,4,0,0,0,114,120,0,0,0,114,128,0,0,0,114, - 109,0,0,0,114,77,0,0,0,114,106,0,0,0,41,6, - 114,15,0,0,0,114,99,0,0,0,114,107,0,0,0,114, - 109,0,0,0,114,128,0,0,0,90,6,115,101,97,114,99, - 104,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,85,0,0,0,177,1,0,0,115,30,0,0,0,0,2, - 15,1,16,1,12,1,16,1,18,1,15,1,7,2,12,1, - 15,1,3,1,19,1,13,1,14,3,6,2,114,85,0,0, - 0,99,3,0,0,0,0,0,0,0,8,0,0,0,53,0, - 0,0,67,0,0,0,115,118,1,0,0,121,13,0,124,0, - 0,106,0,0,125,3,0,87,110,18,0,4,116,1,0,107, - 10,0,114,33,0,1,1,1,89,110,17,0,88,124,3,0, - 100,0,0,107,9,0,114,50,0,124,3,0,83,124,0,0, - 106,2,0,125,4,0,124,1,0,100,0,0,107,8,0,114, - 105,0,121,13,0,124,0,0,106,3,0,125,1,0,87,110, - 18,0,4,116,1,0,107,10,0,114,104,0,1,1,1,89, - 110,1,0,88,121,13,0,124,0,0,106,4,0,125,5,0, - 87,110,24,0,4,116,1,0,107,10,0,114,144,0,1,1, - 1,100,0,0,125,5,0,89,110,1,0,88,124,2,0,100, - 0,0,107,8,0,114,218,0,124,5,0,100,0,0,107,8, - 0,114,212,0,121,13,0,124,1,0,106,5,0,125,2,0, - 87,113,218,0,4,116,1,0,107,10,0,114,208,0,1,1, - 1,100,0,0,125,2,0,89,113,218,0,88,110,6,0,124, - 5,0,125,2,0,121,13,0,124,0,0,106,6,0,125,6, - 0,87,110,24,0,4,116,1,0,107,10,0,114,1,1,1, - 1,1,100,0,0,125,6,0,89,110,1,0,88,121,19,0, - 116,7,0,124,0,0,106,8,0,131,1,0,125,7,0,87, - 110,24,0,4,116,1,0,107,10,0,114,47,1,1,1,1, - 100,0,0,125,7,0,89,110,1,0,88,116,9,0,124,4, - 0,124,1,0,100,1,0,124,2,0,131,2,1,125,3,0, - 124,5,0,100,0,0,107,8,0,114,87,1,100,2,0,110, - 3,0,100,3,0,124,3,0,95,10,0,124,6,0,124,3, - 0,95,11,0,124,7,0,124,3,0,95,12,0,124,3,0, - 83,41,4,78,114,107,0,0,0,70,84,41,13,114,95,0, - 0,0,114,96,0,0,0,114,1,0,0,0,114,91,0,0, - 0,114,98,0,0,0,90,7,95,79,82,73,71,73,78,218, - 10,95,95,99,97,99,104,101,100,95,95,218,4,108,105,115, - 116,218,8,95,95,112,97,116,104,95,95,114,106,0,0,0, - 114,111,0,0,0,114,116,0,0,0,114,110,0,0,0,41, - 8,114,89,0,0,0,114,99,0,0,0,114,107,0,0,0, - 114,88,0,0,0,114,15,0,0,0,90,8,108,111,99,97, - 116,105,111,110,114,116,0,0,0,114,110,0,0,0,114,10, + 0,114,23,0,0,0,161,0,0,0,115,8,0,0,0,0, + 1,3,1,22,2,11,1,122,28,95,77,111,100,117,108,101, + 76,111,99,107,77,97,110,97,103,101,114,46,95,95,101,110, + 116,101,114,95,95,99,1,0,0,0,0,0,0,0,3,0, + 0,0,1,0,0,0,79,0,0,0,115,17,0,0,0,124, + 0,0,106,0,0,106,1,0,131,0,0,1,100,0,0,83, + 41,1,78,41,2,114,55,0,0,0,114,47,0,0,0,41, + 3,114,19,0,0,0,114,29,0,0,0,90,6,107,119,97, + 114,103,115,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,30,0,0,0,168,0,0,0,115,2,0,0,0, + 0,1,122,27,95,77,111,100,117,108,101,76,111,99,107,77, + 97,110,97,103,101,114,46,95,95,101,120,105,116,95,95,78, + 41,6,114,1,0,0,0,114,0,0,0,0,114,2,0,0, + 0,114,20,0,0,0,114,23,0,0,0,114,30,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,114,54,0,0,0,155,0,0,0,115,6,0, + 0,0,12,2,12,4,12,7,114,54,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,139,0,0,0,100,1,0,125,1,0,121,17,0, + 116,0,0,136,0,0,25,131,0,0,125,1,0,87,110,18, + 0,4,116,1,0,107,10,0,114,43,0,1,1,1,89,110, + 1,0,88,124,1,0,100,1,0,107,8,0,114,135,0,116, + 2,0,100,1,0,107,8,0,114,83,0,116,3,0,136,0, + 0,131,1,0,125,1,0,110,12,0,116,4,0,136,0,0, + 131,1,0,125,1,0,135,0,0,102,1,0,100,2,0,100, + 3,0,134,0,0,125,2,0,116,5,0,106,6,0,124,1, + 0,124,2,0,131,2,0,116,0,0,136,0,0,60,124,1, + 0,83,41,4,122,109,71,101,116,32,111,114,32,99,114,101, + 97,116,101,32,116,104,101,32,109,111,100,117,108,101,32,108, + 111,99,107,32,102,111,114,32,97,32,103,105,118,101,110,32, + 109,111,100,117,108,101,32,110,97,109,101,46,10,10,32,32, + 32,32,83,104,111,117,108,100,32,111,110,108,121,32,98,101, + 32,99,97,108,108,101,100,32,119,105,116,104,32,116,104,101, + 32,105,109,112,111,114,116,32,108,111,99,107,32,116,97,107, + 101,110,46,78,99,1,0,0,0,0,0,0,0,1,0,0, + 0,2,0,0,0,19,0,0,0,115,11,0,0,0,116,0, + 0,136,0,0,61,100,0,0,83,41,1,78,41,1,218,13, + 95,109,111,100,117,108,101,95,108,111,99,107,115,41,1,218, + 1,95,41,1,114,15,0,0,0,114,10,0,0,0,114,11, + 0,0,0,218,2,99,98,188,0,0,0,115,2,0,0,0, + 0,1,122,28,95,103,101,116,95,109,111,100,117,108,101,95, + 108,111,99,107,46,60,108,111,99,97,108,115,62,46,99,98, + 41,7,114,59,0,0,0,114,28,0,0,0,114,34,0,0, + 0,114,53,0,0,0,114,32,0,0,0,218,8,95,119,101, + 97,107,114,101,102,90,3,114,101,102,41,3,114,15,0,0, + 0,114,35,0,0,0,114,61,0,0,0,114,10,0,0,0, + 41,1,114,15,0,0,0,114,11,0,0,0,114,56,0,0, + 0,174,0,0,0,115,24,0,0,0,0,4,6,1,3,1, + 17,1,13,1,5,1,12,1,12,1,15,2,12,1,18,2, + 22,1,114,56,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,71,0,0, + 0,116,0,0,124,0,0,131,1,0,125,1,0,116,1,0, + 106,2,0,131,0,0,1,121,14,0,124,1,0,106,3,0, + 131,0,0,1,87,110,18,0,4,116,4,0,107,10,0,114, + 56,0,1,1,1,89,110,11,0,88,124,1,0,106,5,0, + 131,0,0,1,100,1,0,83,41,2,97,21,1,0,0,82, + 101,108,101,97,115,101,32,116,104,101,32,103,108,111,98,97, + 108,32,105,109,112,111,114,116,32,108,111,99,107,44,32,97, + 110,100,32,97,99,113,117,105,114,101,115,32,116,104,101,110, + 32,114,101,108,101,97,115,101,32,116,104,101,10,32,32,32, + 32,109,111,100,117,108,101,32,108,111,99,107,32,102,111,114, + 32,97,32,103,105,118,101,110,32,109,111,100,117,108,101,32, + 110,97,109,101,46,10,32,32,32,32,84,104,105,115,32,105, + 115,32,117,115,101,100,32,116,111,32,101,110,115,117,114,101, + 32,97,32,109,111,100,117,108,101,32,105,115,32,99,111,109, + 112,108,101,116,101,108,121,32,105,110,105,116,105,97,108,105, + 122,101,100,44,32,105,110,32,116,104,101,10,32,32,32,32, + 101,118,101,110,116,32,105,116,32,105,115,32,98,101,105,110, + 103,32,105,109,112,111,114,116,101,100,32,98,121,32,97,110, + 111,116,104,101,114,32,116,104,114,101,97,100,46,10,10,32, + 32,32,32,83,104,111,117,108,100,32,111,110,108,121,32,98, + 101,32,99,97,108,108,101,100,32,119,105,116,104,32,116,104, + 101,32,105,109,112,111,114,116,32,108,111,99,107,32,116,97, + 107,101,110,46,78,41,6,114,56,0,0,0,114,57,0,0, + 0,114,58,0,0,0,114,46,0,0,0,114,31,0,0,0, + 114,47,0,0,0,41,2,114,15,0,0,0,114,35,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,19,95,108,111,99,107,95,117,110,108,111,99,107,95,109, + 111,100,117,108,101,193,0,0,0,115,14,0,0,0,0,7, + 12,1,10,1,3,1,14,1,13,3,5,2,114,63,0,0, + 0,99,1,0,0,0,0,0,0,0,3,0,0,0,3,0, + 0,0,79,0,0,0,115,13,0,0,0,124,0,0,124,1, + 0,124,2,0,142,0,0,83,41,1,97,46,1,0,0,114, + 101,109,111,118,101,95,105,109,112,111,114,116,108,105,98,95, + 102,114,97,109,101,115,32,105,110,32,105,109,112,111,114,116, + 46,99,32,119,105,108,108,32,97,108,119,97,121,115,32,114, + 101,109,111,118,101,32,115,101,113,117,101,110,99,101,115,10, + 32,32,32,32,111,102,32,105,109,112,111,114,116,108,105,98, + 32,102,114,97,109,101,115,32,116,104,97,116,32,101,110,100, + 32,119,105,116,104,32,97,32,99,97,108,108,32,116,111,32, + 116,104,105,115,32,102,117,110,99,116,105,111,110,10,10,32, + 32,32,32,85,115,101,32,105,116,32,105,110,115,116,101,97, + 100,32,111,102,32,97,32,110,111,114,109,97,108,32,99,97, + 108,108,32,105,110,32,112,108,97,99,101,115,32,119,104,101, + 114,101,32,105,110,99,108,117,100,105,110,103,32,116,104,101, + 32,105,109,112,111,114,116,108,105,98,10,32,32,32,32,102, + 114,97,109,101,115,32,105,110,116,114,111,100,117,99,101,115, + 32,117,110,119,97,110,116,101,100,32,110,111,105,115,101,32, + 105,110,116,111,32,116,104,101,32,116,114,97,99,101,98,97, + 99,107,32,40,101,46,103,46,32,119,104,101,110,32,101,120, + 101,99,117,116,105,110,103,10,32,32,32,32,109,111,100,117, + 108,101,32,99,111,100,101,41,10,32,32,32,32,114,10,0, + 0,0,41,3,218,1,102,114,29,0,0,0,90,4,107,119, + 100,115,114,10,0,0,0,114,10,0,0,0,114,11,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,212,0,0,0, + 115,2,0,0,0,0,8,114,65,0,0,0,218,9,118,101, + 114,98,111,115,105,116,121,114,45,0,0,0,99,1,0,0, + 0,1,0,0,0,3,0,0,0,4,0,0,0,71,0,0, + 0,115,75,0,0,0,116,0,0,106,1,0,106,2,0,124, + 1,0,107,5,0,114,71,0,124,0,0,106,3,0,100,6, + 0,131,1,0,115,43,0,100,3,0,124,0,0,23,125,0, + 0,116,4,0,124,0,0,106,5,0,124,2,0,140,0,0, + 100,4,0,116,0,0,106,6,0,131,1,1,1,100,5,0, + 83,41,7,122,61,80,114,105,110,116,32,116,104,101,32,109, + 101,115,115,97,103,101,32,116,111,32,115,116,100,101,114,114, + 32,105,102,32,45,118,47,80,89,84,72,79,78,86,69,82, + 66,79,83,69,32,105,115,32,116,117,114,110,101,100,32,111, + 110,46,250,1,35,250,7,105,109,112,111,114,116,32,122,2, + 35,32,90,4,102,105,108,101,78,41,2,114,67,0,0,0, + 114,68,0,0,0,41,7,114,14,0,0,0,218,5,102,108, + 97,103,115,218,7,118,101,114,98,111,115,101,218,10,115,116, + 97,114,116,115,119,105,116,104,218,5,112,114,105,110,116,114, + 50,0,0,0,218,6,115,116,100,101,114,114,41,3,218,7, + 109,101,115,115,97,103,101,114,66,0,0,0,114,29,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,16,95,118,101,114,98,111,115,101,95,109,101,115,115,97, + 103,101,223,0,0,0,115,8,0,0,0,0,2,18,1,15, + 1,10,1,114,75,0,0,0,99,1,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,3,0,0,0,115,35,0, + 0,0,135,0,0,102,1,0,100,1,0,100,2,0,134,0, + 0,125,1,0,116,0,0,124,1,0,136,0,0,131,2,0, + 1,124,1,0,83,41,3,122,49,68,101,99,111,114,97,116, + 111,114,32,116,111,32,118,101,114,105,102,121,32,116,104,101, + 32,110,97,109,101,100,32,109,111,100,117,108,101,32,105,115, + 32,98,117,105,108,116,45,105,110,46,99,2,0,0,0,0, + 0,0,0,2,0,0,0,4,0,0,0,19,0,0,0,115, + 55,0,0,0,124,1,0,116,0,0,106,1,0,107,7,0, + 114,42,0,116,2,0,100,1,0,106,3,0,124,1,0,131, + 1,0,100,2,0,124,1,0,131,1,1,130,1,0,136,0, + 0,124,0,0,124,1,0,131,2,0,83,41,3,78,122,29, + 123,33,114,125,32,105,115,32,110,111,116,32,97,32,98,117, + 105,108,116,45,105,110,32,109,111,100,117,108,101,114,15,0, + 0,0,41,4,114,14,0,0,0,218,20,98,117,105,108,116, + 105,110,95,109,111,100,117,108,101,95,110,97,109,101,115,218, + 11,73,109,112,111,114,116,69,114,114,111,114,114,50,0,0, + 0,41,2,114,19,0,0,0,218,8,102,117,108,108,110,97, + 109,101,41,1,218,3,102,120,110,114,10,0,0,0,114,11, + 0,0,0,218,25,95,114,101,113,117,105,114,101,115,95,98, + 117,105,108,116,105,110,95,119,114,97,112,112,101,114,233,0, + 0,0,115,8,0,0,0,0,1,15,1,18,1,9,1,122, + 52,95,114,101,113,117,105,114,101,115,95,98,117,105,108,116, + 105,110,46,60,108,111,99,97,108,115,62,46,95,114,101,113, + 117,105,114,101,115,95,98,117,105,108,116,105,110,95,119,114, + 97,112,112,101,114,41,1,114,12,0,0,0,41,2,114,79, + 0,0,0,114,80,0,0,0,114,10,0,0,0,41,1,114, + 79,0,0,0,114,11,0,0,0,218,17,95,114,101,113,117, + 105,114,101,115,95,98,117,105,108,116,105,110,231,0,0,0, + 115,6,0,0,0,0,2,18,5,13,1,114,81,0,0,0, + 99,1,0,0,0,0,0,0,0,2,0,0,0,3,0,0, + 0,3,0,0,0,115,35,0,0,0,135,0,0,102,1,0, + 100,1,0,100,2,0,134,0,0,125,1,0,116,0,0,124, + 1,0,136,0,0,131,2,0,1,124,1,0,83,41,3,122, + 47,68,101,99,111,114,97,116,111,114,32,116,111,32,118,101, + 114,105,102,121,32,116,104,101,32,110,97,109,101,100,32,109, + 111,100,117,108,101,32,105,115,32,102,114,111,122,101,110,46, + 99,2,0,0,0,0,0,0,0,2,0,0,0,4,0,0, + 0,19,0,0,0,115,55,0,0,0,116,0,0,106,1,0, + 124,1,0,131,1,0,115,42,0,116,2,0,100,1,0,106, + 3,0,124,1,0,131,1,0,100,2,0,124,1,0,131,1, + 1,130,1,0,136,0,0,124,0,0,124,1,0,131,2,0, + 83,41,3,78,122,27,123,33,114,125,32,105,115,32,110,111, + 116,32,97,32,102,114,111,122,101,110,32,109,111,100,117,108, + 101,114,15,0,0,0,41,4,114,57,0,0,0,218,9,105, + 115,95,102,114,111,122,101,110,114,77,0,0,0,114,50,0, + 0,0,41,2,114,19,0,0,0,114,78,0,0,0,41,1, + 114,79,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 24,95,114,101,113,117,105,114,101,115,95,102,114,111,122,101, + 110,95,119,114,97,112,112,101,114,244,0,0,0,115,8,0, + 0,0,0,1,15,1,18,1,9,1,122,50,95,114,101,113, + 117,105,114,101,115,95,102,114,111,122,101,110,46,60,108,111, + 99,97,108,115,62,46,95,114,101,113,117,105,114,101,115,95, + 102,114,111,122,101,110,95,119,114,97,112,112,101,114,41,1, + 114,12,0,0,0,41,2,114,79,0,0,0,114,83,0,0, + 0,114,10,0,0,0,41,1,114,79,0,0,0,114,11,0, + 0,0,218,16,95,114,101,113,117,105,114,101,115,95,102,114, + 111,122,101,110,242,0,0,0,115,6,0,0,0,0,2,18, + 5,13,1,114,84,0,0,0,99,2,0,0,0,0,0,0, + 0,4,0,0,0,3,0,0,0,67,0,0,0,115,81,0, + 0,0,116,0,0,124,1,0,124,0,0,131,2,0,125,2, + 0,124,1,0,116,1,0,106,2,0,107,6,0,114,67,0, + 116,1,0,106,2,0,124,1,0,25,125,3,0,116,3,0, + 124,2,0,124,3,0,131,2,0,1,116,1,0,106,2,0, + 124,1,0,25,83,116,4,0,124,2,0,131,1,0,83,100, + 1,0,83,41,2,122,128,76,111,97,100,32,116,104,101,32, + 115,112,101,99,105,102,105,101,100,32,109,111,100,117,108,101, + 32,105,110,116,111,32,115,121,115,46,109,111,100,117,108,101, + 115,32,97,110,100,32,114,101,116,117,114,110,32,105,116,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,46, + 32,32,85,115,101,32,108,111,97,100,101,114,46,101,120,101, + 99,95,109,111,100,117,108,101,32,105,110,115,116,101,97,100, + 46,10,10,32,32,32,32,78,41,5,218,16,115,112,101,99, + 95,102,114,111,109,95,108,111,97,100,101,114,114,14,0,0, + 0,114,21,0,0,0,218,5,95,101,120,101,99,218,5,95, + 108,111,97,100,41,4,114,19,0,0,0,114,78,0,0,0, + 218,4,115,112,101,99,218,6,109,111,100,117,108,101,114,10, 0,0,0,114,10,0,0,0,114,11,0,0,0,218,17,95, - 115,112,101,99,95,102,114,111,109,95,109,111,100,117,108,101, - 203,1,0,0,115,72,0,0,0,0,2,3,1,13,1,13, - 1,5,2,12,1,4,2,9,1,12,1,3,1,13,1,13, - 2,5,1,3,1,13,1,13,1,11,1,12,1,12,1,3, - 1,13,1,13,1,14,2,6,1,3,1,13,1,13,1,11, - 1,3,1,19,1,13,1,11,2,21,1,27,1,9,1,9, - 1,114,132,0,0,0,218,8,111,118,101,114,114,105,100,101, - 70,99,2,0,0,0,1,0,0,0,5,0,0,0,59,0, - 0,0,67,0,0,0,115,43,2,0,0,124,2,0,115,30, - 0,116,0,0,124,1,0,100,1,0,100,0,0,131,3,0, - 100,0,0,107,8,0,114,67,0,121,16,0,124,0,0,106, - 1,0,124,1,0,95,2,0,87,110,18,0,4,116,3,0, - 107,10,0,114,66,0,1,1,1,89,110,1,0,88,124,2, - 0,115,97,0,116,0,0,124,1,0,100,2,0,100,0,0, - 131,3,0,100,0,0,107,8,0,114,210,0,124,0,0,106, - 4,0,125,3,0,124,3,0,100,0,0,107,8,0,114,176, - 0,124,0,0,106,5,0,100,0,0,107,9,0,114,176,0, - 100,3,0,100,4,0,108,6,0,109,7,0,125,4,0,1, - 124,4,0,106,8,0,124,4,0,131,1,0,125,3,0,124, - 0,0,106,5,0,124,3,0,95,9,0,121,13,0,124,3, - 0,124,1,0,95,10,0,87,110,18,0,4,116,3,0,107, - 10,0,114,209,0,1,1,1,89,110,1,0,88,124,2,0, - 115,240,0,116,0,0,124,1,0,100,5,0,100,0,0,131, - 3,0,100,0,0,107,8,0,114,21,1,121,16,0,124,0, - 0,106,11,0,124,1,0,95,12,0,87,110,18,0,4,116, - 3,0,107,10,0,114,20,1,1,1,1,89,110,1,0,88, - 121,13,0,124,0,0,124,1,0,95,13,0,87,110,18,0, - 4,116,3,0,107,10,0,114,54,1,1,1,1,89,110,1, - 0,88,124,2,0,115,85,1,116,0,0,124,1,0,100,6, - 0,100,0,0,131,3,0,100,0,0,107,8,0,114,137,1, - 124,0,0,106,5,0,100,0,0,107,9,0,114,137,1,121, - 16,0,124,0,0,106,5,0,124,1,0,95,14,0,87,110, - 18,0,4,116,3,0,107,10,0,114,136,1,1,1,1,89, - 110,1,0,88,124,0,0,106,15,0,114,39,2,124,2,0, - 115,176,1,116,0,0,124,1,0,100,7,0,100,0,0,131, - 3,0,100,0,0,107,8,0,114,213,1,121,16,0,124,0, - 0,106,16,0,124,1,0,95,17,0,87,110,18,0,4,116, - 3,0,107,10,0,114,212,1,1,1,1,89,110,1,0,88, - 124,2,0,115,243,1,116,0,0,124,1,0,100,8,0,100, - 0,0,131,3,0,100,0,0,107,8,0,114,39,2,124,0, - 0,106,18,0,100,0,0,107,9,0,114,39,2,121,16,0, - 124,0,0,106,18,0,124,1,0,95,19,0,87,110,18,0, - 4,116,3,0,107,10,0,114,38,2,1,1,1,89,110,1, - 0,88,124,1,0,83,41,9,78,114,1,0,0,0,114,91, - 0,0,0,114,45,0,0,0,41,1,218,16,95,78,97,109, - 101,115,112,97,99,101,76,111,97,100,101,114,218,11,95,95, - 112,97,99,107,97,103,101,95,95,114,131,0,0,0,114,98, - 0,0,0,114,129,0,0,0,41,20,114,6,0,0,0,114, - 15,0,0,0,114,1,0,0,0,114,96,0,0,0,114,99, - 0,0,0,114,110,0,0,0,114,120,0,0,0,114,134,0, - 0,0,218,7,95,95,110,101,119,95,95,90,5,95,112,97, - 116,104,114,91,0,0,0,114,123,0,0,0,114,135,0,0, - 0,114,95,0,0,0,114,131,0,0,0,114,117,0,0,0, - 114,107,0,0,0,114,98,0,0,0,114,116,0,0,0,114, - 129,0,0,0,41,5,114,88,0,0,0,114,89,0,0,0, - 114,133,0,0,0,114,99,0,0,0,114,134,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,18, - 95,105,110,105,116,95,109,111,100,117,108,101,95,97,116,116, - 114,115,248,1,0,0,115,88,0,0,0,0,4,30,1,3, - 1,16,1,13,1,5,2,30,1,9,1,12,2,15,1,16, - 1,15,1,12,1,3,1,13,1,13,1,5,2,30,1,3, - 1,16,1,13,1,5,2,3,1,13,1,13,1,5,2,30, - 1,15,1,3,1,16,1,13,1,5,2,9,1,30,1,3, - 1,16,1,13,1,5,2,30,1,15,1,3,1,16,1,13, - 1,5,1,114,137,0,0,0,99,1,0,0,0,0,0,0, - 0,2,0,0,0,5,0,0,0,67,0,0,0,115,129,0, - 0,0,100,1,0,125,1,0,116,0,0,124,0,0,106,1, - 0,100,2,0,131,2,0,114,45,0,124,0,0,106,1,0, - 106,2,0,124,0,0,131,1,0,125,1,0,110,40,0,116, - 0,0,124,0,0,106,1,0,100,3,0,131,2,0,114,85, - 0,116,3,0,106,4,0,100,4,0,116,5,0,100,5,0, - 100,6,0,131,2,1,1,124,1,0,100,1,0,107,8,0, - 114,112,0,116,6,0,124,0,0,106,7,0,131,1,0,125, - 1,0,116,8,0,124,0,0,124,1,0,131,2,0,1,124, - 1,0,83,41,7,122,43,67,114,101,97,116,101,32,97,32, - 109,111,100,117,108,101,32,98,97,115,101,100,32,111,110,32, - 116,104,101,32,112,114,111,118,105,100,101,100,32,115,112,101, - 99,46,78,218,13,99,114,101,97,116,101,95,109,111,100,117, - 108,101,218,11,101,120,101,99,95,109,111,100,117,108,101,122, - 87,115,116,97,114,116,105,110,103,32,105,110,32,80,121,116, - 104,111,110,32,51,46,54,44,32,108,111,97,100,101,114,115, - 32,100,101,102,105,110,105,110,103,32,101,120,101,99,95,109, - 111,100,117,108,101,40,41,32,109,117,115,116,32,97,108,115, - 111,32,100,101,102,105,110,101,32,99,114,101,97,116,101,95, - 109,111,100,117,108,101,40,41,90,10,115,116,97,99,107,108, - 101,118,101,108,233,2,0,0,0,41,9,114,4,0,0,0, - 114,99,0,0,0,114,138,0,0,0,218,9,95,119,97,114, - 110,105,110,103,115,218,4,119,97,114,110,218,18,68,101,112, - 114,101,99,97,116,105,111,110,87,97,114,110,105,110,103,114, - 16,0,0,0,114,15,0,0,0,114,137,0,0,0,41,2, - 114,88,0,0,0,114,89,0,0,0,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,16,109,111,100,117,108, - 101,95,102,114,111,109,95,115,112,101,99,49,2,0,0,115, - 20,0,0,0,0,3,6,1,18,3,21,1,18,1,9,2, - 13,1,12,1,15,1,13,1,114,144,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,149,0,0,0,124,0,0,106,0,0,100,1,0, - 107,8,0,114,21,0,100,2,0,110,6,0,124,0,0,106, - 0,0,125,1,0,124,0,0,106,1,0,100,1,0,107,8, - 0,114,95,0,124,0,0,106,2,0,100,1,0,107,8,0, - 114,73,0,100,3,0,106,3,0,124,1,0,131,1,0,83, - 100,4,0,106,3,0,124,1,0,124,0,0,106,2,0,131, - 2,0,83,110,50,0,124,0,0,106,4,0,114,123,0,100, - 5,0,106,3,0,124,1,0,124,0,0,106,1,0,131,2, - 0,83,100,6,0,106,3,0,124,0,0,106,0,0,124,0, - 0,106,1,0,131,2,0,83,100,1,0,83,41,7,122,38, - 82,101,116,117,114,110,32,116,104,101,32,114,101,112,114,32, - 116,111,32,117,115,101,32,102,111,114,32,116,104,101,32,109, - 111,100,117,108,101,46,78,114,93,0,0,0,122,13,60,109, - 111,100,117,108,101,32,123,33,114,125,62,122,20,60,109,111, - 100,117,108,101,32,123,33,114,125,32,40,123,33,114,125,41, - 62,122,23,60,109,111,100,117,108,101,32,123,33,114,125,32, - 102,114,111,109,32,123,33,114,125,62,122,18,60,109,111,100, - 117,108,101,32,123,33,114,125,32,40,123,125,41,62,41,5, - 114,15,0,0,0,114,107,0,0,0,114,99,0,0,0,114, - 50,0,0,0,114,117,0,0,0,41,2,114,88,0,0,0, - 114,15,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,114,97,0,0,0,67,2,0,0,115,16,0, - 0,0,0,3,30,1,15,1,15,1,13,2,22,2,9,1, - 19,2,114,97,0,0,0,99,2,0,0,0,0,0,0,0, - 4,0,0,0,12,0,0,0,67,0,0,0,115,252,0,0, - 0,124,0,0,106,0,0,125,2,0,116,1,0,106,2,0, - 131,0,0,1,116,3,0,124,2,0,131,1,0,143,208,0, - 1,116,4,0,106,5,0,106,6,0,124,2,0,131,1,0, - 124,1,0,107,9,0,114,89,0,100,1,0,106,7,0,124, - 2,0,131,1,0,125,3,0,116,8,0,124,3,0,100,2, - 0,124,2,0,131,1,1,130,1,0,124,0,0,106,9,0, - 100,3,0,107,8,0,114,163,0,124,0,0,106,10,0,100, - 3,0,107,8,0,114,140,0,116,8,0,100,4,0,100,2, - 0,124,0,0,106,0,0,131,1,1,130,1,0,116,11,0, - 124,0,0,124,1,0,100,5,0,100,6,0,131,2,1,1, - 124,1,0,83,116,11,0,124,0,0,124,1,0,100,5,0, - 100,6,0,131,2,1,1,116,12,0,124,0,0,106,9,0, - 100,7,0,131,2,0,115,219,0,124,0,0,106,9,0,106, - 13,0,124,2,0,131,1,0,1,110,16,0,124,0,0,106, - 9,0,106,14,0,124,1,0,131,1,0,1,87,100,3,0, - 81,88,116,4,0,106,5,0,124,2,0,25,83,41,8,122, - 51,69,120,101,99,117,116,101,32,116,104,101,32,115,112,101, - 99,32,105,110,32,97,110,32,101,120,105,115,116,105,110,103, - 32,109,111,100,117,108,101,39,115,32,110,97,109,101,115,112, - 97,99,101,46,122,30,109,111,100,117,108,101,32,123,33,114, - 125,32,110,111,116,32,105,110,32,115,121,115,46,109,111,100, - 117,108,101,115,114,15,0,0,0,78,122,14,109,105,115,115, - 105,110,103,32,108,111,97,100,101,114,114,133,0,0,0,84, - 114,139,0,0,0,41,15,114,15,0,0,0,114,57,0,0, - 0,218,12,97,99,113,117,105,114,101,95,108,111,99,107,114, - 54,0,0,0,114,14,0,0,0,114,21,0,0,0,114,42, - 0,0,0,114,50,0,0,0,114,77,0,0,0,114,99,0, - 0,0,114,110,0,0,0,114,137,0,0,0,114,4,0,0, - 0,218,11,108,111,97,100,95,109,111,100,117,108,101,114,139, - 0,0,0,41,4,114,88,0,0,0,114,89,0,0,0,114, - 15,0,0,0,218,3,109,115,103,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,86,0,0,0,84,2,0, - 0,115,32,0,0,0,0,2,9,1,10,1,13,1,24,1, - 15,1,18,1,15,1,15,1,21,2,19,1,4,1,19,1, - 18,4,19,2,22,1,114,86,0,0,0,99,1,0,0,0, - 0,0,0,0,2,0,0,0,27,0,0,0,67,0,0,0, - 115,3,1,0,0,124,0,0,106,0,0,106,1,0,124,0, - 0,106,2,0,131,1,0,1,116,3,0,106,4,0,124,0, - 0,106,2,0,25,125,1,0,116,5,0,124,1,0,100,1, - 0,100,0,0,131,3,0,100,0,0,107,8,0,114,96,0, - 121,16,0,124,0,0,106,0,0,124,1,0,95,6,0,87, - 110,18,0,4,116,7,0,107,10,0,114,95,0,1,1,1, - 89,110,1,0,88,116,5,0,124,1,0,100,2,0,100,0, - 0,131,3,0,100,0,0,107,8,0,114,197,0,121,56,0, - 124,1,0,106,8,0,124,1,0,95,9,0,116,10,0,124, - 1,0,100,3,0,131,2,0,115,175,0,124,0,0,106,2, - 0,106,11,0,100,4,0,131,1,0,100,5,0,25,124,1, - 0,95,9,0,87,110,18,0,4,116,7,0,107,10,0,114, - 196,0,1,1,1,89,110,1,0,88,116,5,0,124,1,0, - 100,6,0,100,0,0,131,3,0,100,0,0,107,8,0,114, - 255,0,121,13,0,124,0,0,124,1,0,95,12,0,87,110, - 18,0,4,116,7,0,107,10,0,114,254,0,1,1,1,89, - 110,1,0,88,124,1,0,83,41,7,78,114,91,0,0,0, - 114,135,0,0,0,114,131,0,0,0,114,121,0,0,0,114, - 33,0,0,0,114,95,0,0,0,41,13,114,99,0,0,0, - 114,146,0,0,0,114,15,0,0,0,114,14,0,0,0,114, - 21,0,0,0,114,6,0,0,0,114,91,0,0,0,114,96, - 0,0,0,114,1,0,0,0,114,135,0,0,0,114,4,0, - 0,0,114,122,0,0,0,114,95,0,0,0,41,2,114,88, - 0,0,0,114,89,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,218,25,95,108,111,97,100,95,98, - 97,99,107,119,97,114,100,95,99,111,109,112,97,116,105,98, - 108,101,109,2,0,0,115,40,0,0,0,0,4,19,2,16, - 1,24,1,3,1,16,1,13,1,5,1,24,1,3,4,12, - 1,15,1,29,1,13,1,5,1,24,1,3,1,13,1,13, - 1,5,1,114,148,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,158,0, - 0,0,124,0,0,106,0,0,100,0,0,107,9,0,114,43, - 0,116,1,0,124,0,0,106,0,0,100,1,0,131,2,0, - 115,43,0,116,2,0,124,0,0,131,1,0,83,116,3,0, - 124,0,0,131,1,0,125,1,0,116,4,0,124,1,0,131, - 1,0,143,75,0,1,124,0,0,106,0,0,100,0,0,107, - 8,0,114,122,0,124,0,0,106,5,0,100,0,0,107,8, - 0,114,138,0,116,6,0,100,2,0,100,3,0,124,0,0, - 106,7,0,131,1,1,130,1,0,110,16,0,124,0,0,106, - 0,0,106,8,0,124,1,0,131,1,0,1,87,100,0,0, - 81,88,116,9,0,106,10,0,124,0,0,106,7,0,25,83, - 41,4,78,114,139,0,0,0,122,14,109,105,115,115,105,110, - 103,32,108,111,97,100,101,114,114,15,0,0,0,41,11,114, - 99,0,0,0,114,4,0,0,0,114,148,0,0,0,114,144, - 0,0,0,114,102,0,0,0,114,110,0,0,0,114,77,0, - 0,0,114,15,0,0,0,114,139,0,0,0,114,14,0,0, - 0,114,21,0,0,0,41,2,114,88,0,0,0,114,89,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,218,14,95,108,111,97,100,95,117,110,108,111,99,107,101, - 100,138,2,0,0,115,20,0,0,0,0,2,15,2,18,1, - 10,2,12,1,13,1,15,1,15,1,24,3,22,5,114,149, - 0,0,0,99,1,0,0,0,0,0,0,0,1,0,0,0, - 9,0,0,0,67,0,0,0,115,46,0,0,0,116,0,0, - 106,1,0,131,0,0,1,116,2,0,124,0,0,106,3,0, - 131,1,0,143,15,0,1,116,4,0,124,0,0,131,1,0, - 83,87,100,1,0,81,88,100,1,0,83,41,2,122,191,82, - 101,116,117,114,110,32,97,32,110,101,119,32,109,111,100,117, - 108,101,32,111,98,106,101,99,116,44,32,108,111,97,100,101, - 100,32,98,121,32,116,104,101,32,115,112,101,99,39,115,32, - 108,111,97,100,101,114,46,10,10,32,32,32,32,84,104,101, - 32,109,111,100,117,108,101,32,105,115,32,110,111,116,32,97, - 100,100,101,100,32,116,111,32,105,116,115,32,112,97,114,101, - 110,116,46,10,10,32,32,32,32,73,102,32,97,32,109,111, - 100,117,108,101,32,105,115,32,97,108,114,101,97,100,121,32, - 105,110,32,115,121,115,46,109,111,100,117,108,101,115,44,32, - 116,104,97,116,32,101,120,105,115,116,105,110,103,32,109,111, - 100,117,108,101,32,103,101,116,115,10,32,32,32,32,99,108, - 111,98,98,101,114,101,100,46,10,10,32,32,32,32,78,41, - 5,114,57,0,0,0,114,145,0,0,0,114,54,0,0,0, - 114,15,0,0,0,114,149,0,0,0,41,1,114,88,0,0, + 108,111,97,100,95,109,111,100,117,108,101,95,115,104,105,109, + 254,0,0,0,115,12,0,0,0,0,6,15,1,15,1,13, + 1,13,1,11,2,114,90,0,0,0,99,1,0,0,0,0, + 0,0,0,5,0,0,0,35,0,0,0,67,0,0,0,115, + 6,1,0,0,116,0,0,124,0,0,100,1,0,100,0,0, + 131,3,0,125,1,0,116,1,0,124,1,0,100,2,0,131, + 2,0,114,71,0,121,17,0,124,1,0,106,2,0,124,0, + 0,131,1,0,83,87,110,18,0,4,116,3,0,107,10,0, + 114,70,0,1,1,1,89,110,1,0,88,121,13,0,124,0, + 0,106,4,0,125,2,0,87,110,18,0,4,116,5,0,107, + 10,0,114,104,0,1,1,1,89,110,23,0,88,124,2,0, + 100,0,0,107,9,0,114,127,0,116,6,0,124,2,0,131, + 1,0,83,121,13,0,124,0,0,106,7,0,125,3,0,87, + 110,24,0,4,116,5,0,107,10,0,114,166,0,1,1,1, + 100,3,0,125,3,0,89,110,1,0,88,121,13,0,124,0, + 0,106,8,0,125,4,0,87,110,59,0,4,116,5,0,107, + 10,0,114,241,0,1,1,1,124,1,0,100,0,0,107,8, + 0,114,221,0,100,4,0,106,9,0,124,3,0,131,1,0, + 83,100,5,0,106,9,0,124,3,0,124,1,0,131,2,0, + 83,89,110,17,0,88,100,6,0,106,9,0,124,3,0,124, + 4,0,131,2,0,83,100,0,0,83,41,7,78,218,10,95, + 95,108,111,97,100,101,114,95,95,218,11,109,111,100,117,108, + 101,95,114,101,112,114,250,1,63,122,13,60,109,111,100,117, + 108,101,32,123,33,114,125,62,122,20,60,109,111,100,117,108, + 101,32,123,33,114,125,32,40,123,33,114,125,41,62,122,23, + 60,109,111,100,117,108,101,32,123,33,114,125,32,102,114,111, + 109,32,123,33,114,125,62,41,10,114,6,0,0,0,114,4, + 0,0,0,114,92,0,0,0,218,9,69,120,99,101,112,116, + 105,111,110,218,8,95,95,115,112,101,99,95,95,218,14,65, + 116,116,114,105,98,117,116,101,69,114,114,111,114,218,22,95, + 109,111,100,117,108,101,95,114,101,112,114,95,102,114,111,109, + 95,115,112,101,99,114,1,0,0,0,218,8,95,95,102,105, + 108,101,95,95,114,50,0,0,0,41,5,114,89,0,0,0, + 218,6,108,111,97,100,101,114,114,88,0,0,0,114,15,0, + 0,0,218,8,102,105,108,101,110,97,109,101,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,218,12,95,109,111, + 100,117,108,101,95,114,101,112,114,14,1,0,0,115,46,0, + 0,0,0,2,18,1,15,4,3,1,17,1,13,1,5,1, + 3,1,13,1,13,1,5,2,12,1,10,4,3,1,13,1, + 13,1,11,1,3,1,13,1,13,1,12,1,13,2,21,2, + 114,101,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,52,0,0,0,101, + 0,0,90,1,0,100,0,0,90,2,0,100,1,0,100,2, + 0,132,0,0,90,3,0,100,3,0,100,4,0,132,0,0, + 90,4,0,100,5,0,100,6,0,132,0,0,90,5,0,100, + 7,0,83,41,8,218,17,95,105,110,115,116,97,108,108,101, + 100,95,115,97,102,101,108,121,99,2,0,0,0,0,0,0, + 0,2,0,0,0,2,0,0,0,67,0,0,0,115,25,0, + 0,0,124,1,0,124,0,0,95,0,0,124,1,0,106,1, + 0,124,0,0,95,2,0,100,0,0,83,41,1,78,41,3, + 218,7,95,109,111,100,117,108,101,114,95,0,0,0,218,5, + 95,115,112,101,99,41,2,114,19,0,0,0,114,89,0,0, 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,87,0,0,0,161,2,0,0,115,6,0,0,0,0,9, - 10,1,16,1,114,87,0,0,0,99,0,0,0,0,0,0, - 0,0,0,0,0,0,5,0,0,0,64,0,0,0,115,181, - 0,0,0,101,0,0,90,1,0,100,0,0,90,2,0,100, - 1,0,90,3,0,101,4,0,100,2,0,100,3,0,132,0, - 0,131,1,0,90,5,0,101,6,0,100,4,0,100,4,0, - 100,5,0,100,6,0,132,2,0,131,1,0,90,7,0,101, - 6,0,100,4,0,100,7,0,100,8,0,132,1,0,131,1, - 0,90,8,0,101,6,0,101,9,0,100,9,0,100,10,0, - 132,0,0,131,1,0,131,1,0,90,10,0,101,6,0,101, - 9,0,100,11,0,100,12,0,132,0,0,131,1,0,131,1, - 0,90,11,0,101,6,0,101,9,0,100,13,0,100,14,0, - 132,0,0,131,1,0,131,1,0,90,12,0,101,6,0,101, - 9,0,100,15,0,100,16,0,132,0,0,131,1,0,131,1, - 0,90,13,0,100,4,0,83,41,17,218,15,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,122,144,77,101,116, - 97,32,112,97,116,104,32,105,109,112,111,114,116,32,102,111, - 114,32,98,117,105,108,116,45,105,110,32,109,111,100,117,108, - 101,115,46,10,10,32,32,32,32,65,108,108,32,109,101,116, - 104,111,100,115,32,97,114,101,32,101,105,116,104,101,114,32, - 99,108,97,115,115,32,111,114,32,115,116,97,116,105,99,32, - 109,101,116,104,111,100,115,32,116,111,32,97,118,111,105,100, - 32,116,104,101,32,110,101,101,100,32,116,111,10,32,32,32, - 32,105,110,115,116,97,110,116,105,97,116,101,32,116,104,101, - 32,99,108,97,115,115,46,10,10,32,32,32,32,99,1,0, - 0,0,0,0,0,0,1,0,0,0,2,0,0,0,67,0, - 0,0,115,16,0,0,0,100,1,0,106,0,0,124,0,0, - 106,1,0,131,1,0,83,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,24, - 60,109,111,100,117,108,101,32,123,33,114,125,32,40,98,117, - 105,108,116,45,105,110,41,62,41,2,114,50,0,0,0,114, - 1,0,0,0,41,1,114,89,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,92,0,0,0,186, - 2,0,0,115,2,0,0,0,0,7,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,109,111,100,117, - 108,101,95,114,101,112,114,78,99,4,0,0,0,0,0,0, - 0,4,0,0,0,5,0,0,0,67,0,0,0,115,58,0, - 0,0,124,2,0,100,0,0,107,9,0,114,16,0,100,0, - 0,83,116,0,0,106,1,0,124,1,0,131,1,0,114,50, - 0,116,2,0,124,1,0,124,0,0,100,1,0,100,2,0, - 131,2,1,83,100,0,0,83,100,0,0,83,41,3,78,114, - 107,0,0,0,122,8,98,117,105,108,116,45,105,110,41,3, - 114,57,0,0,0,90,10,105,115,95,98,117,105,108,116,105, - 110,114,85,0,0,0,41,4,218,3,99,108,115,114,78,0, - 0,0,218,4,112,97,116,104,218,6,116,97,114,103,101,116, - 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, - 9,102,105,110,100,95,115,112,101,99,195,2,0,0,115,10, - 0,0,0,0,2,12,1,4,1,15,1,19,2,122,25,66, - 117,105,108,116,105,110,73,109,112,111,114,116,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,3,0,0,0,67,0,0,0,115,41,0, - 0,0,124,0,0,106,0,0,124,1,0,124,2,0,131,2, - 0,125,3,0,124,3,0,100,1,0,107,9,0,114,37,0, - 124,3,0,106,1,0,83,100,1,0,83,41,2,122,175,70, - 105,110,100,32,116,104,101,32,98,117,105,108,116,45,105,110, - 32,109,111,100,117,108,101,46,10,10,32,32,32,32,32,32, - 32,32,73,102,32,39,112,97,116,104,39,32,105,115,32,101, - 118,101,114,32,115,112,101,99,105,102,105,101,100,32,116,104, - 101,110,32,116,104,101,32,115,101,97,114,99,104,32,105,115, - 32,99,111,110,115,105,100,101,114,101,100,32,97,32,102,97, - 105,108,117,114,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,154,0,0,0,114,99,0,0,0,41,4,114,151,0, - 0,0,114,78,0,0,0,114,152,0,0,0,114,88,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,11,102,105,110,100,95,109,111,100,117,108,101,204,2,0, - 0,115,4,0,0,0,0,9,18,1,122,27,66,117,105,108, - 116,105,110,73,109,112,111,114,116,101,114,46,102,105,110,100, - 95,109,111,100,117,108,101,99,2,0,0,0,0,0,0,0, - 3,0,0,0,10,0,0,0,67,0,0,0,115,59,0,0, - 0,116,0,0,124,1,0,131,1,0,143,23,0,1,116,1, - 0,116,2,0,106,3,0,124,1,0,131,2,0,125,2,0, - 87,100,1,0,81,88,124,0,0,124,2,0,95,4,0,100, - 2,0,124,2,0,95,5,0,124,2,0,83,41,3,122,23, - 76,111,97,100,32,97,32,98,117,105,108,116,45,105,110,32, - 109,111,100,117,108,101,46,78,218,0,41,6,114,17,0,0, - 0,114,65,0,0,0,114,57,0,0,0,90,12,105,110,105, - 116,95,98,117,105,108,116,105,110,114,91,0,0,0,114,135, - 0,0,0,41,3,114,151,0,0,0,114,78,0,0,0,114, - 89,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, - 0,0,0,114,146,0,0,0,216,2,0,0,115,10,0,0, - 0,0,6,13,1,24,1,9,1,9,1,122,27,66,117,105, - 108,116,105,110,73,109,112,111,114,116,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,4,0, - 0,0,100,1,0,83,41,2,122,57,82,101,116,117,114,110, - 32,78,111,110,101,32,97,115,32,98,117,105,108,116,45,105, - 110,32,109,111,100,117,108,101,115,32,100,111,32,110,111,116, - 32,104,97,118,101,32,99,111,100,101,32,111,98,106,101,99, - 116,115,46,78,114,10,0,0,0,41,2,114,151,0,0,0, - 114,78,0,0,0,114,10,0,0,0,114,10,0,0,0,114, - 11,0,0,0,218,8,103,101,116,95,99,111,100,101,228,2, - 0,0,115,2,0,0,0,0,4,122,24,66,117,105,108,116, - 105,110,73,109,112,111,114,116,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,0, - 83,41,2,122,56,82,101,116,117,114,110,32,78,111,110,101, - 32,97,115,32,98,117,105,108,116,45,105,110,32,109,111,100, - 117,108,101,115,32,100,111,32,110,111,116,32,104,97,118,101, - 32,115,111,117,114,99,101,32,99,111,100,101,46,78,114,10, - 0,0,0,41,2,114,151,0,0,0,114,78,0,0,0,114, - 10,0,0,0,114,10,0,0,0,114,11,0,0,0,218,10, - 103,101,116,95,115,111,117,114,99,101,234,2,0,0,115,2, - 0,0,0,0,4,122,26,66,117,105,108,116,105,110,73,109, - 112,111,114,116,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,4,0,0,0,100,1,0,83,41, - 2,122,52,82,101,116,117,114,110,32,70,97,108,115,101,32, - 97,115,32,98,117,105,108,116,45,105,110,32,109,111,100,117, - 108,101,115,32,97,114,101,32,110,101,118,101,114,32,112,97, - 99,107,97,103,101,115,46,70,114,10,0,0,0,41,2,114, - 151,0,0,0,114,78,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,109,0,0,0,240,2,0, - 0,115,2,0,0,0,0,4,122,26,66,117,105,108,116,105, - 110,73,109,112,111,114,116,101,114,46,105,115,95,112,97,99, - 107,97,103,101,41,14,114,1,0,0,0,114,0,0,0,0, - 114,2,0,0,0,114,3,0,0,0,218,12,115,116,97,116, - 105,99,109,101,116,104,111,100,114,92,0,0,0,218,11,99, - 108,97,115,115,109,101,116,104,111,100,114,154,0,0,0,114, - 155,0,0,0,114,81,0,0,0,114,146,0,0,0,114,157, - 0,0,0,114,158,0,0,0,114,109,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,150,0,0,0,177,2,0,0,115,28,0,0,0,12, - 7,6,2,18,9,3,1,21,8,3,1,18,11,3,1,21, - 11,3,1,21,5,3,1,21,5,3,1,114,150,0,0,0, - 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0, - 0,64,0,0,0,115,211,0,0,0,101,0,0,90,1,0, - 100,0,0,90,2,0,100,1,0,90,3,0,101,4,0,100, - 2,0,100,3,0,132,0,0,131,1,0,90,5,0,101,6, - 0,100,4,0,100,4,0,100,5,0,100,6,0,132,2,0, - 131,1,0,90,7,0,101,6,0,100,4,0,100,7,0,100, - 8,0,132,1,0,131,1,0,90,8,0,101,6,0,100,9, - 0,100,10,0,132,0,0,131,1,0,90,9,0,101,4,0, - 100,11,0,100,12,0,132,0,0,131,1,0,90,10,0,101, - 6,0,100,13,0,100,14,0,132,0,0,131,1,0,90,11, - 0,101,6,0,101,12,0,100,15,0,100,16,0,132,0,0, - 131,1,0,131,1,0,90,13,0,101,6,0,101,12,0,100, - 17,0,100,18,0,132,0,0,131,1,0,131,1,0,90,14, - 0,101,6,0,101,12,0,100,19,0,100,20,0,132,0,0, - 131,1,0,131,1,0,90,15,0,100,4,0,83,41,21,218, - 14,70,114,111,122,101,110,73,109,112,111,114,116,101,114,122, - 142,77,101,116,97,32,112,97,116,104,32,105,109,112,111,114, - 116,32,102,111,114,32,102,114,111,122,101,110,32,109,111,100, - 117,108,101,115,46,10,10,32,32,32,32,65,108,108,32,109, - 101,116,104,111,100,115,32,97,114,101,32,101,105,116,104,101, - 114,32,99,108,97,115,115,32,111,114,32,115,116,97,116,105, - 99,32,109,101,116,104,111,100,115,32,116,111,32,97,118,111, - 105,100,32,116,104,101,32,110,101,101,100,32,116,111,10,32, - 32,32,32,105,110,115,116,97,110,116,105,97,116,101,32,116, - 104,101,32,99,108,97,115,115,46,10,10,32,32,32,32,99, - 1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0, - 67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,124, - 0,0,106,1,0,131,1,0,83,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,22,60,109,111,100,117,108,101,32,123,33,114,125,32,40, - 102,114,111,122,101,110,41,62,41,2,114,50,0,0,0,114, - 1,0,0,0,41,1,218,1,109,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,92,0,0,0,0,3,0, - 0,115,2,0,0,0,0,7,122,26,70,114,111,122,101,110, - 73,109,112,111,114,116,101,114,46,109,111,100,117,108,101,95, - 114,101,112,114,78,99,4,0,0,0,0,0,0,0,4,0, - 0,0,5,0,0,0,67,0,0,0,115,42,0,0,0,116, - 0,0,106,1,0,124,1,0,131,1,0,114,34,0,116,2, - 0,124,1,0,124,0,0,100,1,0,100,2,0,131,2,1, - 83,100,0,0,83,100,0,0,83,41,3,78,114,107,0,0, - 0,90,6,102,114,111,122,101,110,41,3,114,57,0,0,0, - 114,82,0,0,0,114,85,0,0,0,41,4,114,151,0,0, - 0,114,78,0,0,0,114,152,0,0,0,114,153,0,0,0, + 114,20,0,0,0,52,1,0,0,115,4,0,0,0,0,1, + 9,1,122,26,95,105,110,115,116,97,108,108,101,100,95,115, + 97,102,101,108,121,46,95,95,105,110,105,116,95,95,99,1, + 0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,67, + 0,0,0,115,38,0,0,0,100,1,0,124,0,0,106,0, + 0,95,1,0,124,0,0,106,2,0,116,3,0,106,4,0, + 124,0,0,106,0,0,106,5,0,60,100,0,0,83,41,2, + 78,84,41,6,114,104,0,0,0,218,13,95,105,110,105,116, + 105,97,108,105,122,105,110,103,114,103,0,0,0,114,14,0, + 0,0,114,21,0,0,0,114,15,0,0,0,41,1,114,19, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,23,0,0,0,56,1,0,0,115,4,0,0,0, + 0,4,12,1,122,27,95,105,110,115,116,97,108,108,101,100, + 95,115,97,102,101,108,121,46,95,95,101,110,116,101,114,95, + 95,99,1,0,0,0,0,0,0,0,3,0,0,0,17,0, + 0,0,71,0,0,0,115,121,0,0,0,122,101,0,124,0, + 0,106,0,0,125,2,0,116,1,0,100,1,0,100,2,0, + 132,0,0,124,1,0,68,131,1,0,131,1,0,114,78,0, + 121,17,0,116,2,0,106,3,0,124,2,0,106,4,0,61, + 87,113,100,0,4,116,5,0,107,10,0,114,74,0,1,1, + 1,89,113,100,0,88,110,22,0,116,6,0,100,3,0,124, + 2,0,106,4,0,124,2,0,106,7,0,131,3,0,1,87, + 100,0,0,100,4,0,124,0,0,106,0,0,95,8,0,88, + 100,0,0,83,41,5,78,99,1,0,0,0,0,0,0,0, + 2,0,0,0,3,0,0,0,115,0,0,0,115,27,0,0, + 0,124,0,0,93,17,0,125,1,0,124,1,0,100,0,0, + 107,9,0,86,1,113,3,0,100,0,0,83,41,1,78,114, + 10,0,0,0,41,2,114,24,0,0,0,114,25,0,0,0, 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, - 154,0,0,0,9,3,0,0,115,6,0,0,0,0,2,15, - 1,19,2,122,24,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,102,105,110,100,95,115,112,101,99,99,3,0, - 0,0,0,0,0,0,3,0,0,0,2,0,0,0,67,0, - 0,0,115,23,0,0,0,116,0,0,106,1,0,124,1,0, - 131,1,0,114,19,0,124,0,0,83,100,1,0,83,41,2, - 122,93,70,105,110,100,32,97,32,102,114,111,122,101,110,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,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,57,0,0,0,114,82,0,0,0,41,3,114,151, - 0,0,0,114,78,0,0,0,114,152,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,155,0,0, - 0,16,3,0,0,115,2,0,0,0,0,7,122,26,70,114, - 111,122,101,110,73,109,112,111,114,116,101,114,46,102,105,110, - 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,4,0, - 0,0,100,1,0,83,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,10,0,0,0,41,2,114,151,0,0, - 0,114,88,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,138,0,0,0,25,3,0,0,115,0, - 0,0,0,122,28,70,114,111,122,101,110,73,109,112,111,114, - 116,101,114,46,99,114,101,97,116,101,95,109,111,100,117,108, - 101,99,1,0,0,0,0,0,0,0,3,0,0,0,4,0, - 0,0,67,0,0,0,115,92,0,0,0,124,0,0,106,0, - 0,106,1,0,125,1,0,116,2,0,106,3,0,124,1,0, - 131,1,0,115,54,0,116,4,0,100,1,0,106,5,0,124, - 1,0,131,1,0,100,2,0,124,1,0,131,1,1,130,1, - 0,116,6,0,116,2,0,106,7,0,124,1,0,131,2,0, - 125,2,0,116,8,0,124,2,0,124,0,0,106,9,0,131, - 2,0,1,100,0,0,83,41,3,78,122,27,123,33,114,125, - 32,105,115,32,110,111,116,32,97,32,102,114,111,122,101,110, - 32,109,111,100,117,108,101,114,15,0,0,0,41,10,114,95, - 0,0,0,114,15,0,0,0,114,57,0,0,0,114,82,0, - 0,0,114,77,0,0,0,114,50,0,0,0,114,65,0,0, - 0,218,17,103,101,116,95,102,114,111,122,101,110,95,111,98, - 106,101,99,116,218,4,101,120,101,99,114,7,0,0,0,41, - 3,114,89,0,0,0,114,15,0,0,0,218,4,99,111,100, - 101,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,139,0,0,0,29,3,0,0,115,12,0,0,0,0,2, - 12,1,15,1,18,1,9,1,18,1,122,26,70,114,111,122, - 101,110,73,109,112,111,114,116,101,114,46,101,120,101,99,95, - 109,111,100,117,108,101,99,2,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,67,0,0,0,115,29,0,0,0, - 100,1,0,100,2,0,108,0,0,109,1,0,125,2,0,1, - 124,2,0,124,0,0,124,1,0,131,2,0,83,41,3,122, - 95,76,111,97,100,32,97,32,102,114,111,122,101,110,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, - 114,45,0,0,0,41,1,114,90,0,0,0,41,2,114,120, - 0,0,0,114,90,0,0,0,41,3,114,151,0,0,0,114, - 78,0,0,0,114,90,0,0,0,114,10,0,0,0,114,10, - 0,0,0,114,11,0,0,0,114,146,0,0,0,38,3,0, - 0,115,4,0,0,0,0,7,16,1,122,26,70,114,111,122, - 101,110,73,109,112,111,114,116,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,2,0,0,0,67,0,0,0,115,13,0,0,0, - 116,0,0,106,1,0,124,1,0,131,1,0,83,41,1,122, - 45,82,101,116,117,114,110,32,116,104,101,32,99,111,100,101, - 32,111,98,106,101,99,116,32,102,111,114,32,116,104,101,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,46,41,2, - 114,57,0,0,0,114,163,0,0,0,41,2,114,151,0,0, - 0,114,78,0,0,0,114,10,0,0,0,114,10,0,0,0, - 114,11,0,0,0,114,157,0,0,0,48,3,0,0,115,2, - 0,0,0,0,4,122,23,70,114,111,122,101,110,73,109,112, - 111,114,116,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,0,83,41,2,122,54, - 82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,102, - 114,111,122,101,110,32,109,111,100,117,108,101,115,32,100,111, - 32,110,111,116,32,104,97,118,101,32,115,111,117,114,99,101, - 32,99,111,100,101,46,78,114,10,0,0,0,41,2,114,151, - 0,0,0,114,78,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,11,0,0,0,114,158,0,0,0,54,3,0,0, - 115,2,0,0,0,0,4,122,25,70,114,111,122,101,110,73, - 109,112,111,114,116,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,2, - 0,0,0,67,0,0,0,115,13,0,0,0,116,0,0,106, - 1,0,124,1,0,131,1,0,83,41,1,122,46,82,101,116, - 117,114,110,32,84,114,117,101,32,105,102,32,116,104,101,32, - 102,114,111,122,101,110,32,109,111,100,117,108,101,32,105,115, - 32,97,32,112,97,99,107,97,103,101,46,41,2,114,57,0, - 0,0,90,17,105,115,95,102,114,111,122,101,110,95,112,97, - 99,107,97,103,101,41,2,114,151,0,0,0,114,78,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 114,109,0,0,0,60,3,0,0,115,2,0,0,0,0,4, - 122,25,70,114,111,122,101,110,73,109,112,111,114,116,101,114, - 46,105,115,95,112,97,99,107,97,103,101,41,16,114,1,0, - 0,0,114,0,0,0,0,114,2,0,0,0,114,3,0,0, - 0,114,159,0,0,0,114,92,0,0,0,114,160,0,0,0, - 114,154,0,0,0,114,155,0,0,0,114,138,0,0,0,114, - 139,0,0,0,114,146,0,0,0,114,84,0,0,0,114,157, - 0,0,0,114,158,0,0,0,114,109,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, - 0,114,161,0,0,0,247,2,0,0,115,30,0,0,0,12, - 7,6,2,18,9,3,1,21,6,3,1,18,8,18,4,18, - 9,18,10,3,1,21,5,3,1,21,5,3,1,114,161,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,46,0,0,0,101,0,0,90, - 1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,2, - 0,100,3,0,132,0,0,90,4,0,100,4,0,100,5,0, - 132,0,0,90,5,0,100,6,0,83,41,7,218,18,95,73, - 109,112,111,114,116,76,111,99,107,67,111,110,116,101,120,116, - 122,36,67,111,110,116,101,120,116,32,109,97,110,97,103,101, - 114,32,102,111,114,32,116,104,101,32,105,109,112,111,114,116, - 32,108,111,99,107,46,99,1,0,0,0,0,0,0,0,1, - 0,0,0,1,0,0,0,67,0,0,0,115,14,0,0,0, - 116,0,0,106,1,0,131,0,0,1,100,1,0,83,41,2, - 122,24,65,99,113,117,105,114,101,32,116,104,101,32,105,109, - 112,111,114,116,32,108,111,99,107,46,78,41,2,114,57,0, - 0,0,114,145,0,0,0,41,1,114,19,0,0,0,114,10, - 0,0,0,114,10,0,0,0,114,11,0,0,0,114,23,0, - 0,0,73,3,0,0,115,2,0,0,0,0,2,122,28,95, - 73,109,112,111,114,116,76,111,99,107,67,111,110,116,101,120, - 116,46,95,95,101,110,116,101,114,95,95,99,4,0,0,0, - 0,0,0,0,4,0,0,0,1,0,0,0,67,0,0,0, - 115,14,0,0,0,116,0,0,106,1,0,131,0,0,1,100, - 1,0,83,41,2,122,60,82,101,108,101,97,115,101,32,116, - 104,101,32,105,109,112,111,114,116,32,108,111,99,107,32,114, - 101,103,97,114,100,108,101,115,115,32,111,102,32,97,110,121, - 32,114,97,105,115,101,100,32,101,120,99,101,112,116,105,111, - 110,115,46,78,41,2,114,57,0,0,0,114,58,0,0,0, - 41,4,114,19,0,0,0,90,8,101,120,99,95,116,121,112, - 101,90,9,101,120,99,95,118,97,108,117,101,90,13,101,120, - 99,95,116,114,97,99,101,98,97,99,107,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,30,0,0,0,77, - 3,0,0,115,2,0,0,0,0,2,122,27,95,73,109,112, - 111,114,116,76,111,99,107,67,111,110,116,101,120,116,46,95, - 95,101,120,105,116,95,95,78,41,6,114,1,0,0,0,114, - 0,0,0,0,114,2,0,0,0,114,3,0,0,0,114,23, - 0,0,0,114,30,0,0,0,114,10,0,0,0,114,10,0, - 0,0,114,10,0,0,0,114,11,0,0,0,114,166,0,0, - 0,69,3,0,0,115,6,0,0,0,12,2,6,2,12,4, - 114,166,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,88,0,0,0,124, - 1,0,106,0,0,100,1,0,124,2,0,100,2,0,24,131, - 2,0,125,3,0,116,1,0,124,3,0,131,1,0,124,2, - 0,107,0,0,114,52,0,116,2,0,100,3,0,131,1,0, - 130,1,0,124,3,0,100,4,0,25,125,4,0,124,0,0, - 114,84,0,100,5,0,106,3,0,124,4,0,124,0,0,131, - 2,0,83,124,4,0,83,41,6,122,50,82,101,115,111,108, - 118,101,32,97,32,114,101,108,97,116,105,118,101,32,109,111, - 100,117,108,101,32,110,97,109,101,32,116,111,32,97,110,32, - 97,98,115,111,108,117,116,101,32,111,110,101,46,114,121,0, - 0,0,114,45,0,0,0,122,50,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,98,101,121,111,110,100,32,116,111,112,45,108,101, - 118,101,108,32,112,97,99,107,97,103,101,114,33,0,0,0, - 122,5,123,125,46,123,125,41,4,218,6,114,115,112,108,105, - 116,218,3,108,101,110,218,10,86,97,108,117,101,69,114,114, - 111,114,114,50,0,0,0,41,5,114,15,0,0,0,218,7, - 112,97,99,107,97,103,101,218,5,108,101,118,101,108,90,4, - 98,105,116,115,90,4,98,97,115,101,114,10,0,0,0,114, - 10,0,0,0,114,11,0,0,0,218,13,95,114,101,115,111, - 108,118,101,95,110,97,109,101,82,3,0,0,115,10,0,0, - 0,0,2,22,1,18,1,12,1,10,1,114,172,0,0,0, - 99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0, - 0,67,0,0,0,115,47,0,0,0,124,0,0,106,0,0, - 124,1,0,124,2,0,131,2,0,125,3,0,124,3,0,100, - 0,0,107,8,0,114,34,0,100,0,0,83,116,1,0,124, - 1,0,124,3,0,131,2,0,83,41,1,78,41,2,114,155, - 0,0,0,114,85,0,0,0,41,4,218,6,102,105,110,100, - 101,114,114,15,0,0,0,114,152,0,0,0,114,99,0,0, - 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, - 218,17,95,102,105,110,100,95,115,112,101,99,95,108,101,103, - 97,99,121,91,3,0,0,115,8,0,0,0,0,3,18,1, - 12,1,4,1,114,174,0,0,0,99,3,0,0,0,0,0, - 0,0,9,0,0,0,26,0,0,0,67,0,0,0,115,41, - 1,0,0,116,0,0,106,1,0,100,1,0,107,9,0,114, - 41,0,116,0,0,106,1,0,12,114,41,0,116,2,0,106, - 3,0,100,2,0,116,4,0,131,2,0,1,124,0,0,116, - 0,0,106,5,0,107,6,0,125,3,0,120,234,0,116,0, - 0,106,1,0,68,93,219,0,125,4,0,116,6,0,131,0, - 0,143,90,0,1,121,13,0,124,4,0,106,7,0,125,5, - 0,87,110,51,0,4,116,8,0,107,10,0,114,148,0,1, - 1,1,116,9,0,124,4,0,124,0,0,124,1,0,131,3, - 0,125,6,0,124,6,0,100,1,0,107,8,0,114,144,0, - 119,66,0,89,110,19,0,88,124,5,0,124,0,0,124,1, - 0,124,2,0,131,3,0,125,6,0,87,100,1,0,81,88, - 124,6,0,100,1,0,107,9,0,114,66,0,124,3,0,12, - 114,25,1,124,0,0,116,0,0,106,5,0,107,6,0,114, - 25,1,116,0,0,106,5,0,124,0,0,25,125,7,0,121, - 13,0,124,7,0,106,10,0,125,8,0,87,110,22,0,4, - 116,8,0,107,10,0,114,1,1,1,1,1,124,6,0,83, - 89,113,29,1,88,124,8,0,100,1,0,107,8,0,114,18, - 1,124,6,0,83,124,8,0,83,113,66,0,124,6,0,83, - 113,66,0,87,100,1,0,83,100,1,0,83,41,3,122,23, - 70,105,110,100,32,97,32,109,111,100,117,108,101,39,115,32, - 108,111,97,100,101,114,46,78,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,11,114,14,0,0,0,218,9,109,101,116,97,95,112,97, - 116,104,114,141,0,0,0,114,142,0,0,0,218,13,73,109, - 112,111,114,116,87,97,114,110,105,110,103,114,21,0,0,0, - 114,166,0,0,0,114,154,0,0,0,114,96,0,0,0,114, - 174,0,0,0,114,95,0,0,0,41,9,114,15,0,0,0, - 114,152,0,0,0,114,153,0,0,0,90,9,105,115,95,114, - 101,108,111,97,100,114,173,0,0,0,114,154,0,0,0,114, - 88,0,0,0,114,89,0,0,0,114,95,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,100,3,0,0,115,48,0, - 0,0,0,2,25,1,16,4,15,1,16,1,10,1,3,1, - 13,1,13,1,18,1,12,1,8,2,24,1,12,2,22,1, - 13,1,3,1,13,1,13,4,9,2,12,1,4,2,7,2, - 8,2,114,177,0,0,0,99,3,0,0,0,0,0,0,0, - 4,0,0,0,4,0,0,0,67,0,0,0,115,179,0,0, - 0,116,0,0,124,0,0,116,1,0,131,2,0,115,42,0, - 116,2,0,100,1,0,106,3,0,116,4,0,124,0,0,131, - 1,0,131,1,0,131,1,0,130,1,0,124,2,0,100,2, - 0,107,0,0,114,66,0,116,5,0,100,3,0,131,1,0, - 130,1,0,124,1,0,114,144,0,116,0,0,124,1,0,116, - 1,0,131,2,0,115,102,0,116,2,0,100,4,0,131,1, - 0,130,1,0,110,42,0,124,1,0,116,6,0,106,7,0, - 107,7,0,114,144,0,100,5,0,125,3,0,116,8,0,124, - 3,0,106,3,0,124,1,0,131,1,0,131,1,0,130,1, - 0,124,0,0,12,114,175,0,124,2,0,100,2,0,107,2, - 0,114,175,0,116,5,0,100,6,0,131,1,0,130,1,0, - 100,7,0,83,41,8,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,33,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, - 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,9,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,50,0,0,0,114,13,0,0,0,114,169,0,0,0,114, - 14,0,0,0,114,21,0,0,0,218,11,83,121,115,116,101, - 109,69,114,114,111,114,41,4,114,15,0,0,0,114,170,0, - 0,0,114,171,0,0,0,114,147,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,24, - 0,0,0,0,2,15,1,27,1,12,1,12,1,6,1,15, - 1,15,1,15,1,6,2,21,1,19,1,114,182,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,12,0,0,0,67,0,0,0,115,40,1, - 0,0,100,0,0,125,2,0,124,0,0,106,0,0,100,1, - 0,131,1,0,100,2,0,25,125,3,0,124,3,0,114,175, - 0,124,3,0,116,1,0,106,2,0,107,7,0,114,59,0, - 116,3,0,124,1,0,124,3,0,131,2,0,1,124,0,0, - 116,1,0,106,2,0,107,6,0,114,85,0,116,1,0,106, - 2,0,124,0,0,25,83,116,1,0,106,2,0,124,3,0, - 25,125,4,0,121,13,0,124,4,0,106,4,0,125,2,0, - 87,110,61,0,4,116,5,0,107,10,0,114,174,0,1,1, - 1,116,6,0,100,3,0,23,106,7,0,124,0,0,124,3, - 0,131,2,0,125,5,0,116,8,0,124,5,0,100,4,0, - 124,0,0,131,1,1,100,0,0,130,2,0,89,110,1,0, - 88,116,9,0,124,0,0,124,2,0,131,2,0,125,6,0, - 124,6,0,100,0,0,107,8,0,114,232,0,116,8,0,116, - 6,0,106,7,0,124,0,0,131,1,0,100,4,0,124,0, - 0,131,1,1,130,1,0,110,12,0,116,10,0,124,6,0, - 131,1,0,125,7,0,124,3,0,114,36,1,116,1,0,106, - 2,0,124,3,0,25,125,4,0,116,11,0,124,4,0,124, - 0,0,106,0,0,100,1,0,131,1,0,100,5,0,25,124, - 7,0,131,3,0,1,124,7,0,83,41,6,78,114,121,0, - 0,0,114,33,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, - 114,15,0,0,0,114,140,0,0,0,41,12,114,122,0,0, - 0,114,14,0,0,0,114,21,0,0,0,114,65,0,0,0, - 114,131,0,0,0,114,96,0,0,0,218,8,95,69,82,82, - 95,77,83,71,114,50,0,0,0,114,77,0,0,0,114,177, - 0,0,0,114,149,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,152,0, - 0,0,114,123,0,0,0,90,13,112,97,114,101,110,116,95, - 109,111,100,117,108,101,114,147,0,0,0,114,88,0,0,0, - 114,89,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,160,3,0, - 0,115,42,0,0,0,0,1,6,1,19,1,6,1,15,1, - 13,2,15,1,11,1,13,1,3,1,13,1,13,1,22,1, - 26,1,15,1,12,1,30,2,12,1,6,2,13,1,29,1, - 114,185,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,36,0,0,0,116, - 0,0,124,0,0,131,1,0,143,18,0,1,116,1,0,124, - 0,0,124,1,0,131,2,0,83,87,100,1,0,81,88,100, - 1,0,83,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,54,0,0,0,114,185,0,0,0,41,2,114,15,0,0, - 0,114,184,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,187,3,0,0,115,4,0,0,0,0,2, - 13,1,114,186,0,0,0,114,33,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,166,0,0,0,116,0,0,124,0,0,124,1,0,124, - 2,0,131,3,0,1,124,2,0,100,1,0,107,4,0,114, - 46,0,116,1,0,124,0,0,124,1,0,124,2,0,131,3, - 0,125,0,0,116,2,0,106,3,0,131,0,0,1,124,0, - 0,116,4,0,106,5,0,107,7,0,114,84,0,116,6,0, - 124,0,0,116,7,0,131,2,0,83,116,4,0,106,5,0, - 124,0,0,25,125,3,0,124,3,0,100,2,0,107,8,0, - 114,152,0,116,2,0,106,8,0,131,0,0,1,100,3,0, - 106,9,0,124,0,0,131,1,0,125,4,0,116,10,0,124, - 4,0,100,4,0,124,0,0,131,1,1,130,1,0,116,11, - 0,124,0,0,131,1,0,1,124,3,0,83,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,33,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,114,15,0,0,0,41,12,114,182,0,0, - 0,114,172,0,0,0,114,57,0,0,0,114,145,0,0,0, - 114,14,0,0,0,114,21,0,0,0,114,186,0,0,0,218, - 11,95,103,99,100,95,105,109,112,111,114,116,114,58,0,0, - 0,114,50,0,0,0,114,77,0,0,0,114,63,0,0,0, - 41,5,114,15,0,0,0,114,170,0,0,0,114,171,0,0, - 0,114,89,0,0,0,114,74,0,0,0,114,10,0,0,0, - 114,10,0,0,0,114,11,0,0,0,114,187,0,0,0,193, - 3,0,0,115,28,0,0,0,0,9,16,1,12,1,18,1, - 10,1,15,1,13,1,13,1,12,1,10,1,6,1,9,1, - 18,1,10,1,114,187,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,239, - 0,0,0,116,0,0,124,0,0,100,1,0,131,2,0,114, - 235,0,100,2,0,124,1,0,107,6,0,114,83,0,116,1, - 0,124,1,0,131,1,0,125,1,0,124,1,0,106,2,0, - 100,2,0,131,1,0,1,116,0,0,124,0,0,100,3,0, - 131,2,0,114,83,0,124,1,0,106,3,0,124,0,0,106, - 4,0,131,1,0,1,120,149,0,124,1,0,68,93,141,0, - 125,3,0,116,0,0,124,0,0,124,3,0,131,2,0,115, - 90,0,100,4,0,106,5,0,124,0,0,106,6,0,124,3, - 0,131,2,0,125,4,0,121,17,0,116,7,0,124,2,0, - 124,4,0,131,2,0,1,87,113,90,0,4,116,8,0,107, - 10,0,114,230,0,1,125,5,0,1,122,47,0,116,9,0, - 124,5,0,131,1,0,106,10,0,116,11,0,131,1,0,114, - 209,0,124,5,0,106,12,0,124,4,0,107,2,0,114,209, - 0,119,90,0,130,0,0,87,89,100,5,0,100,5,0,125, - 5,0,126,5,0,88,113,90,0,88,113,90,0,87,124,0, - 0,83,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,131,0,0,0,250,1,42,218,7,95,95, - 97,108,108,95,95,122,5,123,125,46,123,125,78,41,13,114, - 4,0,0,0,114,130,0,0,0,218,6,114,101,109,111,118, - 101,218,6,101,120,116,101,110,100,114,189,0,0,0,114,50, - 0,0,0,114,1,0,0,0,114,65,0,0,0,114,77,0, - 0,0,114,179,0,0,0,114,71,0,0,0,218,15,95,69, - 82,82,95,77,83,71,95,80,82,69,70,73,88,114,15,0, - 0,0,41,6,114,89,0,0,0,218,8,102,114,111,109,108, - 105,115,116,114,184,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,217,3,0,0, - 115,34,0,0,0,0,10,15,1,12,1,12,1,13,1,15, - 1,16,1,13,1,15,1,21,1,3,1,17,1,18,4,21, - 1,15,1,3,1,26,1,114,195,0,0,0,99,1,0,0, - 0,0,0,0,0,2,0,0,0,2,0,0,0,67,0,0, - 0,115,72,0,0,0,124,0,0,106,0,0,100,1,0,131, - 1,0,125,1,0,124,1,0,100,2,0,107,8,0,114,68, - 0,124,0,0,100,3,0,25,125,1,0,100,4,0,124,0, - 0,107,7,0,114,68,0,124,1,0,106,1,0,100,5,0, - 131,1,0,100,6,0,25,125,1,0,124,1,0,83,41,7, - 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,135,0,0,0,78,114, - 1,0,0,0,114,131,0,0,0,114,121,0,0,0,114,33, - 0,0,0,41,2,114,42,0,0,0,114,122,0,0,0,41, - 2,218,7,103,108,111,98,97,108,115,114,170,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,249,3,0,0,115,12,0,0,0,0,7,15,1,12,1, - 10,1,12,1,19,1,114,197,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,227,0,0,0,124,4,0,100,1,0,107,2,0,114,27, - 0,116,0,0,124,0,0,131,1,0,125,5,0,110,54,0, - 124,1,0,100,2,0,107,9,0,114,45,0,124,1,0,110, - 3,0,105,0,0,125,6,0,116,1,0,124,6,0,131,1, - 0,125,7,0,116,0,0,124,0,0,124,7,0,124,4,0, - 131,3,0,125,5,0,124,3,0,115,207,0,124,4,0,100, - 1,0,107,2,0,114,122,0,116,0,0,124,0,0,106,2, - 0,100,3,0,131,1,0,100,1,0,25,131,1,0,83,124, - 0,0,115,132,0,124,5,0,83,116,3,0,124,0,0,131, - 1,0,116,3,0,124,0,0,106,2,0,100,3,0,131,1, - 0,100,1,0,25,131,1,0,24,125,8,0,116,4,0,106, - 5,0,124,5,0,106,6,0,100,2,0,116,3,0,124,5, - 0,106,6,0,131,1,0,124,8,0,24,133,2,0,25,25, - 83,110,16,0,116,7,0,124,5,0,124,3,0,116,0,0, - 131,3,0,83,100,2,0,83,41,4,97,214,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,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,33,0,0,0,78,114,121,0,0,0, - 41,8,114,187,0,0,0,114,197,0,0,0,218,9,112,97, - 114,116,105,116,105,111,110,114,168,0,0,0,114,14,0,0, - 0,114,21,0,0,0,114,1,0,0,0,114,195,0,0,0, - 41,9,114,15,0,0,0,114,196,0,0,0,218,6,108,111, - 99,97,108,115,114,193,0,0,0,114,171,0,0,0,114,89, - 0,0,0,90,8,103,108,111,98,97,108,115,95,114,170,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,8,4,0,0,115,26,0,0,0,0, - 11,12,1,15,2,24,1,12,1,18,1,6,3,12,1,23, - 1,6,1,4,4,35,3,40,2,114,200,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,53,0,0,0,116,0,0,106,1,0,124,0, - 0,131,1,0,125,1,0,124,1,0,100,0,0,107,8,0, - 114,43,0,116,2,0,100,1,0,124,0,0,23,131,1,0, - 130,1,0,116,3,0,124,1,0,131,1,0,83,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,150,0, - 0,0,114,154,0,0,0,114,77,0,0,0,114,149,0,0, - 0,41,2,114,15,0,0,0,114,88,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, - 43,4,0,0,115,8,0,0,0,0,1,15,1,12,1,16, - 1,114,201,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,74,1,0,0, - 124,1,0,97,0,0,124,0,0,97,1,0,116,2,0,116, - 1,0,131,1,0,125,2,0,120,123,0,116,1,0,106,3, - 0,106,4,0,131,0,0,68,93,106,0,92,2,0,125,3, - 0,125,4,0,116,5,0,124,4,0,124,2,0,131,2,0, - 114,40,0,124,3,0,116,1,0,106,6,0,107,6,0,114, - 91,0,116,7,0,125,5,0,110,27,0,116,0,0,106,8, - 0,124,3,0,131,1,0,114,40,0,116,9,0,125,5,0, - 110,3,0,113,40,0,116,10,0,124,4,0,124,5,0,131, - 2,0,125,6,0,116,11,0,124,6,0,124,4,0,131,2, - 0,1,113,40,0,87,116,1,0,106,3,0,116,12,0,25, - 125,7,0,120,73,0,100,5,0,68,93,65,0,125,8,0, - 124,8,0,116,1,0,106,3,0,107,7,0,114,206,0,116, - 13,0,124,8,0,131,1,0,125,9,0,110,13,0,116,1, - 0,106,3,0,124,8,0,25,125,9,0,116,14,0,124,7, - 0,124,8,0,124,9,0,131,3,0,1,113,170,0,87,121, - 16,0,116,13,0,100,2,0,131,1,0,125,10,0,87,110, - 24,0,4,116,15,0,107,10,0,114,25,1,1,1,1,100, - 3,0,125,10,0,89,110,1,0,88,116,14,0,124,7,0, - 100,2,0,124,10,0,131,3,0,1,116,13,0,100,4,0, - 131,1,0,125,11,0,116,14,0,124,7,0,100,4,0,124, - 11,0,131,3,0,1,100,3,0,83,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,141,0,0,0,114,34,0, - 0,0,78,114,62,0,0,0,41,1,122,9,95,119,97,114, - 110,105,110,103,115,41,16,114,57,0,0,0,114,14,0,0, - 0,114,13,0,0,0,114,21,0,0,0,218,5,105,116,101, - 109,115,114,178,0,0,0,114,76,0,0,0,114,150,0,0, - 0,114,82,0,0,0,114,161,0,0,0,114,132,0,0,0, - 114,137,0,0,0,114,1,0,0,0,114,201,0,0,0,114, - 5,0,0,0,114,77,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,89,0,0,0,114,99,0,0,0, - 114,88,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,50,4,0,0,115,50,0,0,0,0, - 9,6,1,6,3,12,1,28,1,15,1,15,1,9,1,15, - 1,9,2,3,1,15,1,17,3,13,1,13,1,15,1,15, - 2,13,1,20,3,3,1,16,1,13,2,11,1,16,3,12, - 1,114,205,0,0,0,99,2,0,0,0,0,0,0,0,3, - 0,0,0,3,0,0,0,67,0,0,0,115,97,0,0,0, - 116,0,0,124,0,0,124,1,0,131,2,0,1,116,1,0, - 106,2,0,106,3,0,116,4,0,131,1,0,1,116,1,0, - 106,2,0,106,3,0,116,5,0,131,1,0,1,100,1,0, - 100,2,0,108,6,0,125,2,0,124,2,0,106,7,0,116, - 1,0,106,8,0,116,9,0,25,131,1,0,1,124,2,0, - 116,1,0,106,8,0,116,9,0,25,95,10,0,100,2,0, - 83,41,3,122,50,73,110,115,116,97,108,108,32,105,109,112, - 111,114,116,108,105,98,32,97,115,32,116,104,101,32,105,109, - 112,108,101,109,101,110,116,97,116,105,111,110,32,111,102,32, - 105,109,112,111,114,116,46,114,33,0,0,0,78,41,11,114, - 205,0,0,0,114,14,0,0,0,114,175,0,0,0,114,113, - 0,0,0,114,150,0,0,0,114,161,0,0,0,114,119,0, - 0,0,218,8,95,105,110,115,116,97,108,108,114,21,0,0, - 0,114,1,0,0,0,114,120,0,0,0,41,3,114,203,0, - 0,0,114,204,0,0,0,114,119,0,0,0,114,10,0,0, - 0,114,10,0,0,0,114,11,0,0,0,114,206,0,0,0, - 97,4,0,0,115,12,0,0,0,0,2,13,2,16,1,16, - 2,12,1,20,1,114,206,0,0,0,41,50,114,3,0,0, - 0,114,12,0,0,0,114,16,0,0,0,114,17,0,0,0, - 114,59,0,0,0,114,41,0,0,0,114,48,0,0,0,114, - 31,0,0,0,114,32,0,0,0,114,53,0,0,0,114,54, - 0,0,0,114,56,0,0,0,114,63,0,0,0,114,65,0, - 0,0,114,75,0,0,0,114,81,0,0,0,114,84,0,0, - 0,114,90,0,0,0,114,101,0,0,0,114,102,0,0,0, - 114,106,0,0,0,114,85,0,0,0,218,6,111,98,106,101, - 99,116,90,9,95,80,79,80,85,76,65,84,69,114,132,0, - 0,0,114,137,0,0,0,114,144,0,0,0,114,97,0,0, - 0,114,86,0,0,0,114,148,0,0,0,114,149,0,0,0, - 114,87,0,0,0,114,150,0,0,0,114,161,0,0,0,114, - 166,0,0,0,114,172,0,0,0,114,174,0,0,0,114,177, - 0,0,0,114,182,0,0,0,114,192,0,0,0,114,183,0, - 0,0,114,185,0,0,0,114,186,0,0,0,114,187,0,0, - 0,114,195,0,0,0,114,197,0,0,0,114,200,0,0,0, - 114,201,0,0,0,114,205,0,0,0,114,206,0,0,0,114, + 26,0,0,0,66,1,0,0,115,2,0,0,0,6,0,122, + 45,95,105,110,115,116,97,108,108,101,100,95,115,97,102,101, + 108,121,46,95,95,101,120,105,116,95,95,46,60,108,111,99, + 97,108,115,62,46,60,103,101,110,101,120,112,114,62,122,18, + 105,109,112,111,114,116,32,123,33,114,125,32,35,32,123,33, + 114,125,70,41,9,114,104,0,0,0,114,27,0,0,0,114, + 14,0,0,0,114,21,0,0,0,114,15,0,0,0,114,28, + 0,0,0,114,75,0,0,0,114,99,0,0,0,114,105,0, + 0,0,41,3,114,19,0,0,0,114,29,0,0,0,114,88, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,30,0,0,0,63,1,0,0,115,18,0,0,0, + 0,1,3,1,9,1,25,1,3,1,17,1,13,1,8,2, + 26,2,122,26,95,105,110,115,116,97,108,108,101,100,95,115, + 97,102,101,108,121,46,95,95,101,120,105,116,95,95,78,41, + 6,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0, + 114,20,0,0,0,114,23,0,0,0,114,30,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,8,0,0, - 0,115,94,0,0,0,6,17,12,8,12,4,19,20,6,2, - 6,3,22,4,19,68,19,21,19,19,12,19,12,19,12,11, - 18,8,12,11,12,12,12,16,12,36,19,27,19,100,24,23, - 9,3,18,45,18,57,12,18,12,17,12,25,12,29,12,23, - 12,16,19,70,19,78,19,13,12,9,12,9,15,40,12,17, - 6,1,10,2,12,27,12,6,18,24,12,32,12,15,24,35, - 12,7,12,47, + 0,0,0,114,102,0,0,0,50,1,0,0,115,6,0,0, + 0,12,2,12,4,12,7,114,102,0,0,0,99,0,0,0, + 0,0,0,0,0,0,0,0,0,8,0,0,0,64,0,0, + 0,115,172,0,0,0,101,0,0,90,1,0,100,0,0,90, + 2,0,100,1,0,90,3,0,100,2,0,100,3,0,100,4, + 0,100,3,0,100,5,0,100,3,0,100,6,0,100,7,0, + 132,0,3,90,4,0,100,8,0,100,9,0,132,0,0,90, + 5,0,100,10,0,100,11,0,132,0,0,90,6,0,101,7, + 0,100,12,0,100,13,0,132,0,0,131,1,0,90,8,0, + 101,8,0,106,9,0,100,14,0,100,13,0,132,0,0,131, + 1,0,90,8,0,101,7,0,100,15,0,100,16,0,132,0, + 0,131,1,0,90,10,0,101,7,0,100,17,0,100,18,0, + 132,0,0,131,1,0,90,11,0,101,11,0,106,9,0,100, + 19,0,100,18,0,132,0,0,131,1,0,90,11,0,100,3, + 0,83,41,20,218,10,77,111,100,117,108,101,83,112,101,99, + 97,208,5,0,0,84,104,101,32,115,112,101,99,105,102,105, + 99,97,116,105,111,110,32,102,111,114,32,97,32,109,111,100, + 117,108,101,44,32,117,115,101,100,32,102,111,114,32,108,111, + 97,100,105,110,103,46,10,10,32,32,32,32,65,32,109,111, + 100,117,108,101,39,115,32,115,112,101,99,32,105,115,32,116, + 104,101,32,115,111,117,114,99,101,32,102,111,114,32,105,110, + 102,111,114,109,97,116,105,111,110,32,97,98,111,117,116,32, + 116,104,101,32,109,111,100,117,108,101,46,32,32,70,111,114, + 10,32,32,32,32,100,97,116,97,32,97,115,115,111,99,105, + 97,116,101,100,32,119,105,116,104,32,116,104,101,32,109,111, + 100,117,108,101,44,32,105,110,99,108,117,100,105,110,103,32, + 115,111,117,114,99,101,44,32,117,115,101,32,116,104,101,32, + 115,112,101,99,39,115,10,32,32,32,32,108,111,97,100,101, + 114,46,10,10,32,32,32,32,96,110,97,109,101,96,32,105, + 115,32,116,104,101,32,97,98,115,111,108,117,116,101,32,110, + 97,109,101,32,111,102,32,116,104,101,32,109,111,100,117,108, + 101,46,32,32,96,108,111,97,100,101,114,96,32,105,115,32, + 116,104,101,32,108,111,97,100,101,114,10,32,32,32,32,116, + 111,32,117,115,101,32,119,104,101,110,32,108,111,97,100,105, + 110,103,32,116,104,101,32,109,111,100,117,108,101,46,32,32, + 96,112,97,114,101,110,116,96,32,105,115,32,116,104,101,32, + 110,97,109,101,32,111,102,32,116,104,101,10,32,32,32,32, + 112,97,99,107,97,103,101,32,116,104,101,32,109,111,100,117, + 108,101,32,105,115,32,105,110,46,32,32,84,104,101,32,112, + 97,114,101,110,116,32,105,115,32,100,101,114,105,118,101,100, + 32,102,114,111,109,32,116,104,101,32,110,97,109,101,46,10, + 10,32,32,32,32,96,105,115,95,112,97,99,107,97,103,101, + 96,32,100,101,116,101,114,109,105,110,101,115,32,105,102,32, + 116,104,101,32,109,111,100,117,108,101,32,105,115,32,99,111, + 110,115,105,100,101,114,101,100,32,97,32,112,97,99,107,97, + 103,101,32,111,114,10,32,32,32,32,110,111,116,46,32,32, + 79,110,32,109,111,100,117,108,101,115,32,116,104,105,115,32, + 105,115,32,114,101,102,108,101,99,116,101,100,32,98,121,32, + 116,104,101,32,96,95,95,112,97,116,104,95,95,96,32,97, + 116,116,114,105,98,117,116,101,46,10,10,32,32,32,32,96, + 111,114,105,103,105,110,96,32,105,115,32,116,104,101,32,115, + 112,101,99,105,102,105,99,32,108,111,99,97,116,105,111,110, + 32,117,115,101,100,32,98,121,32,116,104,101,32,108,111,97, + 100,101,114,32,102,114,111,109,32,119,104,105,99,104,32,116, + 111,10,32,32,32,32,108,111,97,100,32,116,104,101,32,109, + 111,100,117,108,101,44,32,105,102,32,116,104,97,116,32,105, + 110,102,111,114,109,97,116,105,111,110,32,105,115,32,97,118, + 97,105,108,97,98,108,101,46,32,32,87,104,101,110,32,102, + 105,108,101,110,97,109,101,32,105,115,10,32,32,32,32,115, + 101,116,44,32,111,114,105,103,105,110,32,119,105,108,108,32, + 109,97,116,99,104,46,10,10,32,32,32,32,96,104,97,115, + 95,108,111,99,97,116,105,111,110,96,32,105,110,100,105,99, + 97,116,101,115,32,116,104,97,116,32,97,32,115,112,101,99, + 39,115,32,34,111,114,105,103,105,110,34,32,114,101,102,108, + 101,99,116,115,32,97,32,108,111,99,97,116,105,111,110,46, + 10,32,32,32,32,87,104,101,110,32,116,104,105,115,32,105, + 115,32,84,114,117,101,44,32,96,95,95,102,105,108,101,95, + 95,96,32,97,116,116,114,105,98,117,116,101,32,111,102,32, + 116,104,101,32,109,111,100,117,108,101,32,105,115,32,115,101, + 116,46,10,10,32,32,32,32,96,99,97,99,104,101,100,96, + 32,105,115,32,116,104,101,32,108,111,99,97,116,105,111,110, + 32,111,102,32,116,104,101,32,99,97,99,104,101,100,32,98, + 121,116,101,99,111,100,101,32,102,105,108,101,44,32,105,102, + 32,97,110,121,46,32,32,73,116,10,32,32,32,32,99,111, + 114,114,101,115,112,111,110,100,115,32,116,111,32,116,104,101, + 32,96,95,95,99,97,99,104,101,100,95,95,96,32,97,116, + 116,114,105,98,117,116,101,46,10,10,32,32,32,32,96,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,96,32,105,115,32,116,104, + 101,32,115,101,113,117,101,110,99,101,32,111,102,32,112,97, + 116,104,32,101,110,116,114,105,101,115,32,116,111,10,32,32, + 32,32,115,101,97,114,99,104,32,119,104,101,110,32,105,109, + 112,111,114,116,105,110,103,32,115,117,98,109,111,100,117,108, + 101,115,46,32,32,73,102,32,115,101,116,44,32,105,115,95, + 112,97,99,107,97,103,101,32,115,104,111,117,108,100,32,98, + 101,10,32,32,32,32,84,114,117,101,45,45,97,110,100,32, + 70,97,108,115,101,32,111,116,104,101,114,119,105,115,101,46, + 10,10,32,32,32,32,80,97,99,107,97,103,101,115,32,97, + 114,101,32,115,105,109,112,108,121,32,109,111,100,117,108,101, + 115,32,116,104,97,116,32,40,109,97,121,41,32,104,97,118, + 101,32,115,117,98,109,111,100,117,108,101,115,46,32,32,73, + 102,32,97,32,115,112,101,99,10,32,32,32,32,104,97,115, + 32,97,32,110,111,110,45,78,111,110,101,32,118,97,108,117, + 101,32,105,110,32,96,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, + 96,44,32,116,104,101,32,105,109,112,111,114,116,10,32,32, + 32,32,115,121,115,116,101,109,32,119,105,108,108,32,99,111, + 110,115,105,100,101,114,32,109,111,100,117,108,101,115,32,108, + 111,97,100,101,100,32,102,114,111,109,32,116,104,101,32,115, + 112,101,99,32,97,115,32,112,97,99,107,97,103,101,115,46, + 10,10,32,32,32,32,79,110,108,121,32,102,105,110,100,101, + 114,115,32,40,115,101,101,32,105,109,112,111,114,116,108,105, + 98,46,97,98,99,46,77,101,116,97,80,97,116,104,70,105, + 110,100,101,114,32,97,110,100,10,32,32,32,32,105,109,112, + 111,114,116,108,105,98,46,97,98,99,46,80,97,116,104,69, + 110,116,114,121,70,105,110,100,101,114,41,32,115,104,111,117, + 108,100,32,109,111,100,105,102,121,32,77,111,100,117,108,101, + 83,112,101,99,32,105,110,115,116,97,110,99,101,115,46,10, + 10,32,32,32,32,218,6,111,114,105,103,105,110,78,218,12, + 108,111,97,100,101,114,95,115,116,97,116,101,218,10,105,115, + 95,112,97,99,107,97,103,101,99,3,0,0,0,3,0,0, + 0,6,0,0,0,2,0,0,0,67,0,0,0,115,79,0, + 0,0,124,1,0,124,0,0,95,0,0,124,2,0,124,0, + 0,95,1,0,124,3,0,124,0,0,95,2,0,124,4,0, + 124,0,0,95,3,0,124,5,0,114,48,0,103,0,0,110, + 3,0,100,0,0,124,0,0,95,4,0,100,1,0,124,0, + 0,95,5,0,100,0,0,124,0,0,95,6,0,100,0,0, + 83,41,2,78,70,41,7,114,15,0,0,0,114,99,0,0, + 0,114,107,0,0,0,114,108,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,218,13,95,115,101,116,95,102,105, + 108,101,97,116,116,114,218,7,95,99,97,99,104,101,100,41, + 6,114,19,0,0,0,114,15,0,0,0,114,99,0,0,0, + 114,107,0,0,0,114,108,0,0,0,114,109,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,20, + 0,0,0,114,1,0,0,115,14,0,0,0,0,2,9,1, + 9,1,9,1,9,1,21,3,9,1,122,19,77,111,100,117, + 108,101,83,112,101,99,46,95,95,105,110,105,116,95,95,99, + 1,0,0,0,0,0,0,0,2,0,0,0,4,0,0,0, + 67,0,0,0,115,147,0,0,0,100,1,0,106,0,0,124, + 0,0,106,1,0,131,1,0,100,2,0,106,0,0,124,0, + 0,106,2,0,131,1,0,103,2,0,125,1,0,124,0,0, + 106,3,0,100,0,0,107,9,0,114,76,0,124,1,0,106, + 4,0,100,3,0,106,0,0,124,0,0,106,3,0,131,1, + 0,131,1,0,1,124,0,0,106,5,0,100,0,0,107,9, + 0,114,116,0,124,1,0,106,4,0,100,4,0,106,0,0, + 124,0,0,106,5,0,131,1,0,131,1,0,1,100,5,0, + 106,0,0,124,0,0,106,6,0,106,7,0,100,6,0,106, + 8,0,124,1,0,131,1,0,131,2,0,83,41,7,78,122, + 9,110,97,109,101,61,123,33,114,125,122,11,108,111,97,100, + 101,114,61,123,33,114,125,122,11,111,114,105,103,105,110,61, + 123,33,114,125,122,29,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, + 61,123,125,122,6,123,125,40,123,125,41,122,2,44,32,41, + 9,114,50,0,0,0,114,15,0,0,0,114,99,0,0,0, + 114,107,0,0,0,218,6,97,112,112,101,110,100,114,110,0, + 0,0,218,9,95,95,99,108,97,115,115,95,95,114,1,0, + 0,0,218,4,106,111,105,110,41,2,114,19,0,0,0,114, + 29,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,52,0,0,0,126,1,0,0,115,16,0,0, + 0,0,1,15,1,21,1,15,1,25,1,15,1,12,1,13, + 1,122,19,77,111,100,117,108,101,83,112,101,99,46,95,95, + 114,101,112,114,95,95,99,2,0,0,0,0,0,0,0,3, + 0,0,0,11,0,0,0,67,0,0,0,115,145,0,0,0, + 124,0,0,106,0,0,125,2,0,121,107,0,124,0,0,106, + 1,0,124,1,0,106,1,0,107,2,0,111,114,0,124,0, + 0,106,2,0,124,1,0,106,2,0,107,2,0,111,114,0, + 124,0,0,106,3,0,124,1,0,106,3,0,107,2,0,111, + 114,0,124,2,0,124,1,0,106,0,0,107,2,0,111,114, + 0,124,0,0,106,4,0,124,1,0,106,4,0,107,2,0, + 111,114,0,124,0,0,106,5,0,124,1,0,106,5,0,107, + 2,0,83,87,110,22,0,4,116,6,0,107,10,0,114,140, + 0,1,1,1,100,1,0,83,89,110,1,0,88,100,0,0, + 83,41,2,78,70,41,7,114,110,0,0,0,114,15,0,0, + 0,114,99,0,0,0,114,107,0,0,0,218,6,99,97,99, + 104,101,100,218,12,104,97,115,95,108,111,99,97,116,105,111, + 110,114,96,0,0,0,41,3,114,19,0,0,0,90,5,111, + 116,104,101,114,90,4,115,109,115,108,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,218,6,95,95,101,113,95, + 95,136,1,0,0,115,20,0,0,0,0,1,9,1,3,1, + 18,1,18,1,18,1,15,1,18,1,20,1,13,1,122,17, + 77,111,100,117,108,101,83,112,101,99,46,95,95,101,113,95, + 95,99,1,0,0,0,0,0,0,0,2,0,0,0,2,0, + 0,0,67,0,0,0,115,79,0,0,0,124,0,0,106,0, + 0,100,0,0,107,8,0,114,72,0,124,0,0,106,1,0, + 100,0,0,107,9,0,114,72,0,124,0,0,106,2,0,114, + 72,0,100,1,0,100,0,0,108,3,0,125,1,0,124,1, + 0,106,4,0,124,0,0,106,1,0,131,1,0,124,0,0, + 95,0,0,124,0,0,106,0,0,83,41,2,78,114,33,0, + 0,0,41,5,114,112,0,0,0,114,107,0,0,0,114,111, + 0,0,0,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,90, + 11,95,103,101,116,95,99,97,99,104,101,100,41,2,114,19, + 0,0,0,218,19,95,98,111,111,116,115,116,114,97,112,95, + 101,120,116,101,114,110,97,108,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,116,0,0,0,148,1,0,0, + 115,10,0,0,0,0,2,15,1,24,1,12,1,21,1,122, + 17,77,111,100,117,108,101,83,112,101,99,46,99,97,99,104, + 101,100,99,2,0,0,0,0,0,0,0,2,0,0,0,2, + 0,0,0,67,0,0,0,115,13,0,0,0,124,1,0,124, + 0,0,95,0,0,100,0,0,83,41,1,78,41,1,114,112, + 0,0,0,41,2,114,19,0,0,0,114,116,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,116, + 0,0,0,156,1,0,0,115,2,0,0,0,0,2,99,1, + 0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,67, + 0,0,0,115,46,0,0,0,124,0,0,106,0,0,100,1, + 0,107,8,0,114,35,0,124,0,0,106,1,0,106,2,0, + 100,2,0,131,1,0,100,3,0,25,83,124,0,0,106,1, + 0,83,100,1,0,83,41,4,122,32,84,104,101,32,110,97, + 109,101,32,111,102,32,116,104,101,32,109,111,100,117,108,101, + 39,115,32,112,97,114,101,110,116,46,78,218,1,46,114,33, + 0,0,0,41,3,114,110,0,0,0,114,15,0,0,0,218, + 10,114,112,97,114,116,105,116,105,111,110,41,1,114,19,0, + 0,0,114,10,0,0,0,114,10,0,0,0,114,11,0,0, + 0,218,6,112,97,114,101,110,116,160,1,0,0,115,6,0, + 0,0,0,3,15,1,20,2,122,17,77,111,100,117,108,101, + 83,112,101,99,46,112,97,114,101,110,116,99,1,0,0,0, + 0,0,0,0,1,0,0,0,1,0,0,0,67,0,0,0, + 115,7,0,0,0,124,0,0,106,0,0,83,41,1,78,41, + 1,114,111,0,0,0,41,1,114,19,0,0,0,114,10,0, + 0,0,114,10,0,0,0,114,11,0,0,0,114,117,0,0, + 0,168,1,0,0,115,2,0,0,0,0,2,122,23,77,111, + 100,117,108,101,83,112,101,99,46,104,97,115,95,108,111,99, + 97,116,105,111,110,99,2,0,0,0,0,0,0,0,2,0, + 0,0,2,0,0,0,67,0,0,0,115,19,0,0,0,116, + 0,0,124,1,0,131,1,0,124,0,0,95,1,0,100,0, + 0,83,41,1,78,41,2,218,4,98,111,111,108,114,111,0, + 0,0,41,2,114,19,0,0,0,218,5,118,97,108,117,101, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 117,0,0,0,172,1,0,0,115,2,0,0,0,0,2,41, + 12,114,1,0,0,0,114,0,0,0,0,114,2,0,0,0, + 114,3,0,0,0,114,20,0,0,0,114,52,0,0,0,114, + 118,0,0,0,218,8,112,114,111,112,101,114,116,121,114,116, + 0,0,0,218,6,115,101,116,116,101,114,114,123,0,0,0, + 114,117,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,106,0,0,0,77,1, + 0,0,115,20,0,0,0,12,35,6,2,15,1,15,11,12, + 10,12,12,18,8,21,4,18,8,18,4,114,106,0,0,0, + 114,107,0,0,0,78,114,109,0,0,0,99,2,0,0,0, + 2,0,0,0,6,0,0,0,15,0,0,0,67,0,0,0, + 115,206,0,0,0,116,0,0,124,1,0,100,1,0,131,2, + 0,114,99,0,100,2,0,100,3,0,108,1,0,109,2,0, + 125,4,0,1,124,3,0,100,4,0,107,8,0,114,59,0, + 124,4,0,124,0,0,100,5,0,124,1,0,131,1,1,83, + 124,3,0,114,71,0,103,0,0,110,3,0,100,4,0,125, + 5,0,124,4,0,124,0,0,100,5,0,124,1,0,100,6, + 0,124,5,0,131,1,2,83,124,3,0,100,4,0,107,8, + 0,114,181,0,116,0,0,124,1,0,100,7,0,131,2,0, + 114,175,0,121,19,0,124,1,0,106,3,0,124,0,0,131, + 1,0,125,3,0,87,113,181,0,4,116,4,0,107,10,0, + 114,171,0,1,1,1,100,4,0,125,3,0,89,113,181,0, + 88,110,6,0,100,8,0,125,3,0,116,5,0,124,0,0, + 124,1,0,100,9,0,124,2,0,100,7,0,124,3,0,131, + 2,2,83,41,10,122,53,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,118,97,114,105,111,117,115,32,108,111,97, + 100,101,114,32,109,101,116,104,111,100,115,46,90,12,103,101, + 116,95,102,105,108,101,110,97,109,101,114,45,0,0,0,41, + 1,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,78,114,99,0,0,0, + 114,110,0,0,0,114,109,0,0,0,70,114,107,0,0,0, + 41,6,114,4,0,0,0,114,120,0,0,0,114,128,0,0, + 0,114,109,0,0,0,114,77,0,0,0,114,106,0,0,0, + 41,6,114,15,0,0,0,114,99,0,0,0,114,107,0,0, + 0,114,109,0,0,0,114,128,0,0,0,90,6,115,101,97, + 114,99,104,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,85,0,0,0,177,1,0,0,115,30,0,0,0, + 0,2,15,1,16,1,12,1,16,1,18,1,15,1,7,2, + 12,1,15,1,3,1,19,1,13,1,14,3,6,2,114,85, + 0,0,0,99,3,0,0,0,0,0,0,0,8,0,0,0, + 53,0,0,0,67,0,0,0,115,118,1,0,0,121,13,0, + 124,0,0,106,0,0,125,3,0,87,110,18,0,4,116,1, + 0,107,10,0,114,33,0,1,1,1,89,110,17,0,88,124, + 3,0,100,0,0,107,9,0,114,50,0,124,3,0,83,124, + 0,0,106,2,0,125,4,0,124,1,0,100,0,0,107,8, + 0,114,105,0,121,13,0,124,0,0,106,3,0,125,1,0, + 87,110,18,0,4,116,1,0,107,10,0,114,104,0,1,1, + 1,89,110,1,0,88,121,13,0,124,0,0,106,4,0,125, + 5,0,87,110,24,0,4,116,1,0,107,10,0,114,144,0, + 1,1,1,100,0,0,125,5,0,89,110,1,0,88,124,2, + 0,100,0,0,107,8,0,114,218,0,124,5,0,100,0,0, + 107,8,0,114,212,0,121,13,0,124,1,0,106,5,0,125, + 2,0,87,113,218,0,4,116,1,0,107,10,0,114,208,0, + 1,1,1,100,0,0,125,2,0,89,113,218,0,88,110,6, + 0,124,5,0,125,2,0,121,13,0,124,0,0,106,6,0, + 125,6,0,87,110,24,0,4,116,1,0,107,10,0,114,1, + 1,1,1,1,100,0,0,125,6,0,89,110,1,0,88,121, + 19,0,116,7,0,124,0,0,106,8,0,131,1,0,125,7, + 0,87,110,24,0,4,116,1,0,107,10,0,114,47,1,1, + 1,1,100,0,0,125,7,0,89,110,1,0,88,116,9,0, + 124,4,0,124,1,0,100,1,0,124,2,0,131,2,1,125, + 3,0,124,5,0,100,0,0,107,8,0,114,87,1,100,2, + 0,110,3,0,100,3,0,124,3,0,95,10,0,124,6,0, + 124,3,0,95,11,0,124,7,0,124,3,0,95,12,0,124, + 3,0,83,41,4,78,114,107,0,0,0,70,84,41,13,114, + 95,0,0,0,114,96,0,0,0,114,1,0,0,0,114,91, + 0,0,0,114,98,0,0,0,90,7,95,79,82,73,71,73, + 78,218,10,95,95,99,97,99,104,101,100,95,95,218,4,108, + 105,115,116,218,8,95,95,112,97,116,104,95,95,114,106,0, + 0,0,114,111,0,0,0,114,116,0,0,0,114,110,0,0, + 0,41,8,114,89,0,0,0,114,99,0,0,0,114,107,0, + 0,0,114,88,0,0,0,114,15,0,0,0,90,8,108,111, + 99,97,116,105,111,110,114,116,0,0,0,114,110,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 17,95,115,112,101,99,95,102,114,111,109,95,109,111,100,117, + 108,101,203,1,0,0,115,72,0,0,0,0,2,3,1,13, + 1,13,1,5,2,12,1,4,2,9,1,12,1,3,1,13, + 1,13,2,5,1,3,1,13,1,13,1,11,1,12,1,12, + 1,3,1,13,1,13,1,14,2,6,1,3,1,13,1,13, + 1,11,1,3,1,19,1,13,1,11,2,21,1,27,1,9, + 1,9,1,114,132,0,0,0,218,8,111,118,101,114,114,105, + 100,101,70,99,2,0,0,0,1,0,0,0,5,0,0,0, + 59,0,0,0,67,0,0,0,115,43,2,0,0,124,2,0, + 115,30,0,116,0,0,124,1,0,100,1,0,100,0,0,131, + 3,0,100,0,0,107,8,0,114,67,0,121,16,0,124,0, + 0,106,1,0,124,1,0,95,2,0,87,110,18,0,4,116, + 3,0,107,10,0,114,66,0,1,1,1,89,110,1,0,88, + 124,2,0,115,97,0,116,0,0,124,1,0,100,2,0,100, + 0,0,131,3,0,100,0,0,107,8,0,114,210,0,124,0, + 0,106,4,0,125,3,0,124,3,0,100,0,0,107,8,0, + 114,176,0,124,0,0,106,5,0,100,0,0,107,9,0,114, + 176,0,100,3,0,100,4,0,108,6,0,109,7,0,125,4, + 0,1,124,4,0,106,8,0,124,4,0,131,1,0,125,3, + 0,124,0,0,106,5,0,124,3,0,95,9,0,121,13,0, + 124,3,0,124,1,0,95,10,0,87,110,18,0,4,116,3, + 0,107,10,0,114,209,0,1,1,1,89,110,1,0,88,124, + 2,0,115,240,0,116,0,0,124,1,0,100,5,0,100,0, + 0,131,3,0,100,0,0,107,8,0,114,21,1,121,16,0, + 124,0,0,106,11,0,124,1,0,95,12,0,87,110,18,0, + 4,116,3,0,107,10,0,114,20,1,1,1,1,89,110,1, + 0,88,121,13,0,124,0,0,124,1,0,95,13,0,87,110, + 18,0,4,116,3,0,107,10,0,114,54,1,1,1,1,89, + 110,1,0,88,124,2,0,115,85,1,116,0,0,124,1,0, + 100,6,0,100,0,0,131,3,0,100,0,0,107,8,0,114, + 137,1,124,0,0,106,5,0,100,0,0,107,9,0,114,137, + 1,121,16,0,124,0,0,106,5,0,124,1,0,95,14,0, + 87,110,18,0,4,116,3,0,107,10,0,114,136,1,1,1, + 1,89,110,1,0,88,124,0,0,106,15,0,114,39,2,124, + 2,0,115,176,1,116,0,0,124,1,0,100,7,0,100,0, + 0,131,3,0,100,0,0,107,8,0,114,213,1,121,16,0, + 124,0,0,106,16,0,124,1,0,95,17,0,87,110,18,0, + 4,116,3,0,107,10,0,114,212,1,1,1,1,89,110,1, + 0,88,124,2,0,115,243,1,116,0,0,124,1,0,100,8, + 0,100,0,0,131,3,0,100,0,0,107,8,0,114,39,2, + 124,0,0,106,18,0,100,0,0,107,9,0,114,39,2,121, + 16,0,124,0,0,106,18,0,124,1,0,95,19,0,87,110, + 18,0,4,116,3,0,107,10,0,114,38,2,1,1,1,89, + 110,1,0,88,124,1,0,83,41,9,78,114,1,0,0,0, + 114,91,0,0,0,114,45,0,0,0,41,1,218,16,95,78, + 97,109,101,115,112,97,99,101,76,111,97,100,101,114,218,11, + 95,95,112,97,99,107,97,103,101,95,95,114,131,0,0,0, + 114,98,0,0,0,114,129,0,0,0,41,20,114,6,0,0, + 0,114,15,0,0,0,114,1,0,0,0,114,96,0,0,0, + 114,99,0,0,0,114,110,0,0,0,114,120,0,0,0,114, + 134,0,0,0,218,7,95,95,110,101,119,95,95,90,5,95, + 112,97,116,104,114,91,0,0,0,114,123,0,0,0,114,135, + 0,0,0,114,95,0,0,0,114,131,0,0,0,114,117,0, + 0,0,114,107,0,0,0,114,98,0,0,0,114,116,0,0, + 0,114,129,0,0,0,41,5,114,88,0,0,0,114,89,0, + 0,0,114,133,0,0,0,114,99,0,0,0,114,134,0,0, + 0,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 218,18,95,105,110,105,116,95,109,111,100,117,108,101,95,97, + 116,116,114,115,248,1,0,0,115,88,0,0,0,0,4,30, + 1,3,1,16,1,13,1,5,2,30,1,9,1,12,2,15, + 1,16,1,15,1,12,1,3,1,13,1,13,1,5,2,30, + 1,3,1,16,1,13,1,5,2,3,1,13,1,13,1,5, + 2,30,1,15,1,3,1,16,1,13,1,5,2,9,1,30, + 1,3,1,16,1,13,1,5,2,30,1,15,1,3,1,16, + 1,13,1,5,1,114,137,0,0,0,99,1,0,0,0,0, + 0,0,0,2,0,0,0,5,0,0,0,67,0,0,0,115, + 129,0,0,0,100,1,0,125,1,0,116,0,0,124,0,0, + 106,1,0,100,2,0,131,2,0,114,45,0,124,0,0,106, + 1,0,106,2,0,124,0,0,131,1,0,125,1,0,110,40, + 0,116,0,0,124,0,0,106,1,0,100,3,0,131,2,0, + 114,85,0,116,3,0,106,4,0,100,4,0,116,5,0,100, + 5,0,100,6,0,131,2,1,1,124,1,0,100,1,0,107, + 8,0,114,112,0,116,6,0,124,0,0,106,7,0,131,1, + 0,125,1,0,116,8,0,124,0,0,124,1,0,131,2,0, + 1,124,1,0,83,41,7,122,43,67,114,101,97,116,101,32, + 97,32,109,111,100,117,108,101,32,98,97,115,101,100,32,111, + 110,32,116,104,101,32,112,114,111,118,105,100,101,100,32,115, + 112,101,99,46,78,218,13,99,114,101,97,116,101,95,109,111, + 100,117,108,101,218,11,101,120,101,99,95,109,111,100,117,108, + 101,122,87,115,116,97,114,116,105,110,103,32,105,110,32,80, + 121,116,104,111,110,32,51,46,54,44,32,108,111,97,100,101, + 114,115,32,100,101,102,105,110,105,110,103,32,101,120,101,99, + 95,109,111,100,117,108,101,40,41,32,109,117,115,116,32,97, + 108,115,111,32,100,101,102,105,110,101,32,99,114,101,97,116, + 101,95,109,111,100,117,108,101,40,41,90,10,115,116,97,99, + 107,108,101,118,101,108,233,2,0,0,0,41,9,114,4,0, + 0,0,114,99,0,0,0,114,138,0,0,0,218,9,95,119, + 97,114,110,105,110,103,115,218,4,119,97,114,110,218,18,68, + 101,112,114,101,99,97,116,105,111,110,87,97,114,110,105,110, + 103,114,16,0,0,0,114,15,0,0,0,114,137,0,0,0, + 41,2,114,88,0,0,0,114,89,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,218,16,109,111,100, + 117,108,101,95,102,114,111,109,95,115,112,101,99,49,2,0, + 0,115,20,0,0,0,0,3,6,1,18,3,21,1,18,1, + 9,2,13,1,12,1,15,1,13,1,114,144,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,149,0,0,0,124,0,0,106,0,0,100, + 1,0,107,8,0,114,21,0,100,2,0,110,6,0,124,0, + 0,106,0,0,125,1,0,124,0,0,106,1,0,100,1,0, + 107,8,0,114,95,0,124,0,0,106,2,0,100,1,0,107, + 8,0,114,73,0,100,3,0,106,3,0,124,1,0,131,1, + 0,83,100,4,0,106,3,0,124,1,0,124,0,0,106,2, + 0,131,2,0,83,110,50,0,124,0,0,106,4,0,114,123, + 0,100,5,0,106,3,0,124,1,0,124,0,0,106,1,0, + 131,2,0,83,100,6,0,106,3,0,124,0,0,106,0,0, + 124,0,0,106,1,0,131,2,0,83,100,1,0,83,41,7, + 122,38,82,101,116,117,114,110,32,116,104,101,32,114,101,112, + 114,32,116,111,32,117,115,101,32,102,111,114,32,116,104,101, + 32,109,111,100,117,108,101,46,78,114,93,0,0,0,122,13, + 60,109,111,100,117,108,101,32,123,33,114,125,62,122,20,60, + 109,111,100,117,108,101,32,123,33,114,125,32,40,123,33,114, + 125,41,62,122,23,60,109,111,100,117,108,101,32,123,33,114, + 125,32,102,114,111,109,32,123,33,114,125,62,122,18,60,109, + 111,100,117,108,101,32,123,33,114,125,32,40,123,125,41,62, + 41,5,114,15,0,0,0,114,107,0,0,0,114,99,0,0, + 0,114,50,0,0,0,114,117,0,0,0,41,2,114,88,0, + 0,0,114,15,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,97,0,0,0,67,2,0,0,115, + 16,0,0,0,0,3,30,1,15,1,15,1,13,2,22,2, + 9,1,19,2,114,97,0,0,0,99,2,0,0,0,0,0, + 0,0,4,0,0,0,12,0,0,0,67,0,0,0,115,253, + 0,0,0,124,0,0,106,0,0,125,2,0,116,1,0,106, + 2,0,131,0,0,1,116,3,0,124,2,0,131,1,0,143, + 208,0,1,116,4,0,106,5,0,106,6,0,124,2,0,131, + 1,0,124,1,0,107,9,0,114,89,0,100,1,0,106,7, + 0,124,2,0,131,1,0,125,3,0,116,8,0,124,3,0, + 100,2,0,124,2,0,131,1,1,130,1,0,124,0,0,106, + 9,0,100,3,0,107,8,0,114,163,0,124,0,0,106,10, + 0,100,3,0,107,8,0,114,140,0,116,8,0,100,4,0, + 100,2,0,124,0,0,106,0,0,131,1,1,130,1,0,116, + 11,0,124,0,0,124,1,0,100,5,0,100,6,0,131,2, + 1,1,124,1,0,83,116,11,0,124,0,0,124,1,0,100, + 5,0,100,6,0,131,2,1,1,116,12,0,124,0,0,106, + 9,0,100,7,0,131,2,0,115,219,0,124,0,0,106,9, + 0,106,13,0,124,2,0,131,1,0,1,110,16,0,124,0, + 0,106,9,0,106,14,0,124,1,0,131,1,0,1,87,100, + 3,0,81,82,88,116,4,0,106,5,0,124,2,0,25,83, + 41,8,122,51,69,120,101,99,117,116,101,32,116,104,101,32, + 115,112,101,99,32,105,110,32,97,110,32,101,120,105,115,116, + 105,110,103,32,109,111,100,117,108,101,39,115,32,110,97,109, + 101,115,112,97,99,101,46,122,30,109,111,100,117,108,101,32, + 123,33,114,125,32,110,111,116,32,105,110,32,115,121,115,46, + 109,111,100,117,108,101,115,114,15,0,0,0,78,122,14,109, + 105,115,115,105,110,103,32,108,111,97,100,101,114,114,133,0, + 0,0,84,114,139,0,0,0,41,15,114,15,0,0,0,114, + 57,0,0,0,218,12,97,99,113,117,105,114,101,95,108,111, + 99,107,114,54,0,0,0,114,14,0,0,0,114,21,0,0, + 0,114,42,0,0,0,114,50,0,0,0,114,77,0,0,0, + 114,99,0,0,0,114,110,0,0,0,114,137,0,0,0,114, + 4,0,0,0,218,11,108,111,97,100,95,109,111,100,117,108, + 101,114,139,0,0,0,41,4,114,88,0,0,0,114,89,0, + 0,0,114,15,0,0,0,218,3,109,115,103,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,86,0,0,0, + 84,2,0,0,115,32,0,0,0,0,2,9,1,10,1,13, + 1,24,1,15,1,18,1,15,1,15,1,21,2,19,1,4, + 1,19,1,18,4,19,2,23,1,114,86,0,0,0,99,1, + 0,0,0,0,0,0,0,2,0,0,0,27,0,0,0,67, + 0,0,0,115,3,1,0,0,124,0,0,106,0,0,106,1, + 0,124,0,0,106,2,0,131,1,0,1,116,3,0,106,4, + 0,124,0,0,106,2,0,25,125,1,0,116,5,0,124,1, + 0,100,1,0,100,0,0,131,3,0,100,0,0,107,8,0, + 114,96,0,121,16,0,124,0,0,106,0,0,124,1,0,95, + 6,0,87,110,18,0,4,116,7,0,107,10,0,114,95,0, + 1,1,1,89,110,1,0,88,116,5,0,124,1,0,100,2, + 0,100,0,0,131,3,0,100,0,0,107,8,0,114,197,0, + 121,56,0,124,1,0,106,8,0,124,1,0,95,9,0,116, + 10,0,124,1,0,100,3,0,131,2,0,115,175,0,124,0, + 0,106,2,0,106,11,0,100,4,0,131,1,0,100,5,0, + 25,124,1,0,95,9,0,87,110,18,0,4,116,7,0,107, + 10,0,114,196,0,1,1,1,89,110,1,0,88,116,5,0, + 124,1,0,100,6,0,100,0,0,131,3,0,100,0,0,107, + 8,0,114,255,0,121,13,0,124,0,0,124,1,0,95,12, + 0,87,110,18,0,4,116,7,0,107,10,0,114,254,0,1, + 1,1,89,110,1,0,88,124,1,0,83,41,7,78,114,91, + 0,0,0,114,135,0,0,0,114,131,0,0,0,114,121,0, + 0,0,114,33,0,0,0,114,95,0,0,0,41,13,114,99, + 0,0,0,114,146,0,0,0,114,15,0,0,0,114,14,0, + 0,0,114,21,0,0,0,114,6,0,0,0,114,91,0,0, + 0,114,96,0,0,0,114,1,0,0,0,114,135,0,0,0, + 114,4,0,0,0,114,122,0,0,0,114,95,0,0,0,41, + 2,114,88,0,0,0,114,89,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,25,95,108,111,97, + 100,95,98,97,99,107,119,97,114,100,95,99,111,109,112,97, + 116,105,98,108,101,109,2,0,0,115,40,0,0,0,0,4, + 19,2,16,1,24,1,3,1,16,1,13,1,5,1,24,1, + 3,4,12,1,15,1,29,1,13,1,5,1,24,1,3,1, + 13,1,13,1,5,1,114,148,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,159,0,0,0,124,0,0,106,0,0,100,0,0,107,9, + 0,114,43,0,116,1,0,124,0,0,106,0,0,100,1,0, + 131,2,0,115,43,0,116,2,0,124,0,0,131,1,0,83, + 116,3,0,124,0,0,131,1,0,125,1,0,116,4,0,124, + 1,0,131,1,0,143,75,0,1,124,0,0,106,0,0,100, + 0,0,107,8,0,114,122,0,124,0,0,106,5,0,100,0, + 0,107,8,0,114,138,0,116,6,0,100,2,0,100,3,0, + 124,0,0,106,7,0,131,1,1,130,1,0,110,16,0,124, + 0,0,106,0,0,106,8,0,124,1,0,131,1,0,1,87, + 100,0,0,81,82,88,116,9,0,106,10,0,124,0,0,106, + 7,0,25,83,41,4,78,114,139,0,0,0,122,14,109,105, + 115,115,105,110,103,32,108,111,97,100,101,114,114,15,0,0, + 0,41,11,114,99,0,0,0,114,4,0,0,0,114,148,0, + 0,0,114,144,0,0,0,114,102,0,0,0,114,110,0,0, + 0,114,77,0,0,0,114,15,0,0,0,114,139,0,0,0, + 114,14,0,0,0,114,21,0,0,0,41,2,114,88,0,0, + 0,114,89,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,14,95,108,111,97,100,95,117,110,108, + 111,99,107,101,100,138,2,0,0,115,20,0,0,0,0,2, + 15,2,18,1,10,2,12,1,13,1,15,1,15,1,24,3, + 23,5,114,149,0,0,0,99,1,0,0,0,0,0,0,0, + 1,0,0,0,9,0,0,0,67,0,0,0,115,47,0,0, + 0,116,0,0,106,1,0,131,0,0,1,116,2,0,124,0, + 0,106,3,0,131,1,0,143,15,0,1,116,4,0,124,0, + 0,131,1,0,83,87,100,1,0,81,82,88,100,1,0,83, + 41,2,122,191,82,101,116,117,114,110,32,97,32,110,101,119, + 32,109,111,100,117,108,101,32,111,98,106,101,99,116,44,32, + 108,111,97,100,101,100,32,98,121,32,116,104,101,32,115,112, + 101,99,39,115,32,108,111,97,100,101,114,46,10,10,32,32, + 32,32,84,104,101,32,109,111,100,117,108,101,32,105,115,32, + 110,111,116,32,97,100,100,101,100,32,116,111,32,105,116,115, + 32,112,97,114,101,110,116,46,10,10,32,32,32,32,73,102, + 32,97,32,109,111,100,117,108,101,32,105,115,32,97,108,114, + 101,97,100,121,32,105,110,32,115,121,115,46,109,111,100,117, + 108,101,115,44,32,116,104,97,116,32,101,120,105,115,116,105, + 110,103,32,109,111,100,117,108,101,32,103,101,116,115,10,32, + 32,32,32,99,108,111,98,98,101,114,101,100,46,10,10,32, + 32,32,32,78,41,5,114,57,0,0,0,114,145,0,0,0, + 114,54,0,0,0,114,15,0,0,0,114,149,0,0,0,41, + 1,114,88,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,87,0,0,0,161,2,0,0,115,6, + 0,0,0,0,9,10,1,16,1,114,87,0,0,0,99,0, + 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,64, + 0,0,0,115,181,0,0,0,101,0,0,90,1,0,100,0, + 0,90,2,0,100,1,0,90,3,0,101,4,0,100,2,0, + 100,3,0,132,0,0,131,1,0,90,5,0,101,6,0,100, + 4,0,100,4,0,100,5,0,100,6,0,132,2,0,131,1, + 0,90,7,0,101,6,0,100,4,0,100,7,0,100,8,0, + 132,1,0,131,1,0,90,8,0,101,6,0,101,9,0,100, + 9,0,100,10,0,132,0,0,131,1,0,131,1,0,90,10, + 0,101,6,0,101,9,0,100,11,0,100,12,0,132,0,0, + 131,1,0,131,1,0,90,11,0,101,6,0,101,9,0,100, + 13,0,100,14,0,132,0,0,131,1,0,131,1,0,90,12, + 0,101,6,0,101,9,0,100,15,0,100,16,0,132,0,0, + 131,1,0,131,1,0,90,13,0,100,4,0,83,41,17,218, + 15,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 122,144,77,101,116,97,32,112,97,116,104,32,105,109,112,111, + 114,116,32,102,111,114,32,98,117,105,108,116,45,105,110,32, + 109,111,100,117,108,101,115,46,10,10,32,32,32,32,65,108, + 108,32,109,101,116,104,111,100,115,32,97,114,101,32,101,105, + 116,104,101,114,32,99,108,97,115,115,32,111,114,32,115,116, + 97,116,105,99,32,109,101,116,104,111,100,115,32,116,111,32, + 97,118,111,105,100,32,116,104,101,32,110,101,101,100,32,116, + 111,10,32,32,32,32,105,110,115,116,97,110,116,105,97,116, + 101,32,116,104,101,32,99,108,97,115,115,46,10,10,32,32, + 32,32,99,1,0,0,0,0,0,0,0,1,0,0,0,2, + 0,0,0,67,0,0,0,115,16,0,0,0,100,1,0,106, + 0,0,124,0,0,106,1,0,131,1,0,83,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,24,60,109,111,100,117,108,101,32,123,33,114, + 125,32,40,98,117,105,108,116,45,105,110,41,62,41,2,114, + 50,0,0,0,114,1,0,0,0,41,1,114,89,0,0,0, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,114, + 92,0,0,0,186,2,0,0,115,2,0,0,0,0,7,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,109,111,100,117,108,101,95,114,101,112,114,78,99,4,0, + 0,0,0,0,0,0,4,0,0,0,5,0,0,0,67,0, + 0,0,115,58,0,0,0,124,2,0,100,0,0,107,9,0, + 114,16,0,100,0,0,83,116,0,0,106,1,0,124,1,0, + 131,1,0,114,50,0,116,2,0,124,1,0,124,0,0,100, + 1,0,100,2,0,131,2,1,83,100,0,0,83,100,0,0, + 83,41,3,78,114,107,0,0,0,122,8,98,117,105,108,116, + 45,105,110,41,3,114,57,0,0,0,90,10,105,115,95,98, + 117,105,108,116,105,110,114,85,0,0,0,41,4,218,3,99, + 108,115,114,78,0,0,0,218,4,112,97,116,104,218,6,116, + 97,114,103,101,116,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,9,102,105,110,100,95,115,112,101,99,195, + 2,0,0,115,10,0,0,0,0,2,12,1,4,1,15,1, + 19,2,122,25,66,117,105,108,116,105,110,73,109,112,111,114, + 116,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,3,0,0,0,67,0, + 0,0,115,41,0,0,0,124,0,0,106,0,0,124,1,0, + 124,2,0,131,2,0,125,3,0,124,3,0,100,1,0,107, + 9,0,114,37,0,124,3,0,106,1,0,83,100,1,0,83, + 41,2,122,175,70,105,110,100,32,116,104,101,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,46,10,10,32, + 32,32,32,32,32,32,32,73,102,32,39,112,97,116,104,39, + 32,105,115,32,101,118,101,114,32,115,112,101,99,105,102,105, + 101,100,32,116,104,101,110,32,116,104,101,32,115,101,97,114, + 99,104,32,105,115,32,99,111,110,115,105,100,101,114,101,100, + 32,97,32,102,97,105,108,117,114,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,154,0,0,0,114,99,0,0,0, + 41,4,114,151,0,0,0,114,78,0,0,0,114,152,0,0, + 0,114,88,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,218,11,102,105,110,100,95,109,111,100,117, + 108,101,204,2,0,0,115,4,0,0,0,0,9,18,1,122, + 27,66,117,105,108,116,105,110,73,109,112,111,114,116,101,114, + 46,102,105,110,100,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,3,0,0,0,10,0,0,0,67,0,0, + 0,115,60,0,0,0,116,0,0,124,1,0,131,1,0,143, + 23,0,1,116,1,0,116,2,0,106,3,0,124,1,0,131, + 2,0,125,2,0,87,100,1,0,81,82,88,124,0,0,124, + 2,0,95,4,0,100,2,0,124,2,0,95,5,0,124,2, + 0,83,41,3,122,23,76,111,97,100,32,97,32,98,117,105, + 108,116,45,105,110,32,109,111,100,117,108,101,46,78,218,0, + 41,6,114,17,0,0,0,114,65,0,0,0,114,57,0,0, + 0,90,12,105,110,105,116,95,98,117,105,108,116,105,110,114, + 91,0,0,0,114,135,0,0,0,41,3,114,151,0,0,0, + 114,78,0,0,0,114,89,0,0,0,114,10,0,0,0,114, + 10,0,0,0,114,11,0,0,0,114,146,0,0,0,216,2, + 0,0,115,10,0,0,0,0,6,13,1,25,1,9,1,9, + 1,122,27,66,117,105,108,116,105,110,73,109,112,111,114,116, + 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,4,0,0,0,100,1,0,83,41,2,122,57, + 82,101,116,117,114,110,32,78,111,110,101,32,97,115,32,98, + 117,105,108,116,45,105,110,32,109,111,100,117,108,101,115,32, + 100,111,32,110,111,116,32,104,97,118,101,32,99,111,100,101, + 32,111,98,106,101,99,116,115,46,78,114,10,0,0,0,41, + 2,114,151,0,0,0,114,78,0,0,0,114,10,0,0,0, + 114,10,0,0,0,114,11,0,0,0,218,8,103,101,116,95, + 99,111,100,101,228,2,0,0,115,2,0,0,0,0,4,122, + 24,66,117,105,108,116,105,110,73,109,112,111,114,116,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,0,83,41,2,122,56,82,101,116,117,114, + 110,32,78,111,110,101,32,97,115,32,98,117,105,108,116,45, + 105,110,32,109,111,100,117,108,101,115,32,100,111,32,110,111, + 116,32,104,97,118,101,32,115,111,117,114,99,101,32,99,111, + 100,101,46,78,114,10,0,0,0,41,2,114,151,0,0,0, + 114,78,0,0,0,114,10,0,0,0,114,10,0,0,0,114, + 11,0,0,0,218,10,103,101,116,95,115,111,117,114,99,101, + 234,2,0,0,115,2,0,0,0,0,4,122,26,66,117,105, + 108,116,105,110,73,109,112,111,114,116,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,4,0,0, + 0,100,1,0,83,41,2,122,52,82,101,116,117,114,110,32, + 70,97,108,115,101,32,97,115,32,98,117,105,108,116,45,105, + 110,32,109,111,100,117,108,101,115,32,97,114,101,32,110,101, + 118,101,114,32,112,97,99,107,97,103,101,115,46,70,114,10, + 0,0,0,41,2,114,151,0,0,0,114,78,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,109, + 0,0,0,240,2,0,0,115,2,0,0,0,0,4,122,26, + 66,117,105,108,116,105,110,73,109,112,111,114,116,101,114,46, + 105,115,95,112,97,99,107,97,103,101,41,14,114,1,0,0, + 0,114,0,0,0,0,114,2,0,0,0,114,3,0,0,0, + 218,12,115,116,97,116,105,99,109,101,116,104,111,100,114,92, + 0,0,0,218,11,99,108,97,115,115,109,101,116,104,111,100, + 114,154,0,0,0,114,155,0,0,0,114,81,0,0,0,114, + 146,0,0,0,114,157,0,0,0,114,158,0,0,0,114,109, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,150,0,0,0,177,2,0,0, + 115,28,0,0,0,12,7,6,2,18,9,3,1,21,8,3, + 1,18,11,3,1,21,11,3,1,21,5,3,1,21,5,3, + 1,114,150,0,0,0,99,0,0,0,0,0,0,0,0,0, + 0,0,0,5,0,0,0,64,0,0,0,115,211,0,0,0, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,101,4,0,100,2,0,100,3,0,132,0,0,131,1, + 0,90,5,0,101,6,0,100,4,0,100,4,0,100,5,0, + 100,6,0,132,2,0,131,1,0,90,7,0,101,6,0,100, + 4,0,100,7,0,100,8,0,132,1,0,131,1,0,90,8, + 0,101,6,0,100,9,0,100,10,0,132,0,0,131,1,0, + 90,9,0,101,4,0,100,11,0,100,12,0,132,0,0,131, + 1,0,90,10,0,101,6,0,100,13,0,100,14,0,132,0, + 0,131,1,0,90,11,0,101,6,0,101,12,0,100,15,0, + 100,16,0,132,0,0,131,1,0,131,1,0,90,13,0,101, + 6,0,101,12,0,100,17,0,100,18,0,132,0,0,131,1, + 0,131,1,0,90,14,0,101,6,0,101,12,0,100,19,0, + 100,20,0,132,0,0,131,1,0,131,1,0,90,15,0,100, + 4,0,83,41,21,218,14,70,114,111,122,101,110,73,109,112, + 111,114,116,101,114,122,142,77,101,116,97,32,112,97,116,104, + 32,105,109,112,111,114,116,32,102,111,114,32,102,114,111,122, + 101,110,32,109,111,100,117,108,101,115,46,10,10,32,32,32, + 32,65,108,108,32,109,101,116,104,111,100,115,32,97,114,101, + 32,101,105,116,104,101,114,32,99,108,97,115,115,32,111,114, + 32,115,116,97,116,105,99,32,109,101,116,104,111,100,115,32, + 116,111,32,97,118,111,105,100,32,116,104,101,32,110,101,101, + 100,32,116,111,10,32,32,32,32,105,110,115,116,97,110,116, + 105,97,116,101,32,116,104,101,32,99,108,97,115,115,46,10, + 10,32,32,32,32,99,1,0,0,0,0,0,0,0,1,0, + 0,0,2,0,0,0,67,0,0,0,115,16,0,0,0,100, + 1,0,106,0,0,124,0,0,106,1,0,131,1,0,83,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,22,60,109,111,100,117,108,101,32, + 123,33,114,125,32,40,102,114,111,122,101,110,41,62,41,2, + 114,50,0,0,0,114,1,0,0,0,41,1,218,1,109,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,92, + 0,0,0,0,3,0,0,115,2,0,0,0,0,7,122,26, + 70,114,111,122,101,110,73,109,112,111,114,116,101,114,46,109, + 111,100,117,108,101,95,114,101,112,114,78,99,4,0,0,0, + 0,0,0,0,4,0,0,0,5,0,0,0,67,0,0,0, + 115,42,0,0,0,116,0,0,106,1,0,124,1,0,131,1, + 0,114,34,0,116,2,0,124,1,0,124,0,0,100,1,0, + 100,2,0,131,2,1,83,100,0,0,83,100,0,0,83,41, + 3,78,114,107,0,0,0,90,6,102,114,111,122,101,110,41, + 3,114,57,0,0,0,114,82,0,0,0,114,85,0,0,0, + 41,4,114,151,0,0,0,114,78,0,0,0,114,152,0,0, + 0,114,153,0,0,0,114,10,0,0,0,114,10,0,0,0, + 114,11,0,0,0,114,154,0,0,0,9,3,0,0,115,6, + 0,0,0,0,2,15,1,19,2,122,24,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,102,105,110,100,95,115, + 112,101,99,99,3,0,0,0,0,0,0,0,3,0,0,0, + 2,0,0,0,67,0,0,0,115,23,0,0,0,116,0,0, + 106,1,0,124,1,0,131,1,0,114,19,0,124,0,0,83, + 100,1,0,83,41,2,122,93,70,105,110,100,32,97,32,102, + 114,111,122,101,110,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,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,57,0,0,0,114,82,0, + 0,0,41,3,114,151,0,0,0,114,78,0,0,0,114,152, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,155,0,0,0,16,3,0,0,115,2,0,0,0, + 0,7,122,26,70,114,111,122,101,110,73,109,112,111,114,116, + 101,114,46,102,105,110,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,4,0,0,0,100,1,0,83,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,10,0,0,0, + 41,2,114,151,0,0,0,114,88,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,138,0,0,0, + 25,3,0,0,115,0,0,0,0,122,28,70,114,111,122,101, + 110,73,109,112,111,114,116,101,114,46,99,114,101,97,116,101, + 95,109,111,100,117,108,101,99,1,0,0,0,0,0,0,0, + 3,0,0,0,4,0,0,0,67,0,0,0,115,92,0,0, + 0,124,0,0,106,0,0,106,1,0,125,1,0,116,2,0, + 106,3,0,124,1,0,131,1,0,115,54,0,116,4,0,100, + 1,0,106,5,0,124,1,0,131,1,0,100,2,0,124,1, + 0,131,1,1,130,1,0,116,6,0,116,2,0,106,7,0, + 124,1,0,131,2,0,125,2,0,116,8,0,124,2,0,124, + 0,0,106,9,0,131,2,0,1,100,0,0,83,41,3,78, + 122,27,123,33,114,125,32,105,115,32,110,111,116,32,97,32, + 102,114,111,122,101,110,32,109,111,100,117,108,101,114,15,0, + 0,0,41,10,114,95,0,0,0,114,15,0,0,0,114,57, + 0,0,0,114,82,0,0,0,114,77,0,0,0,114,50,0, + 0,0,114,65,0,0,0,218,17,103,101,116,95,102,114,111, + 122,101,110,95,111,98,106,101,99,116,218,4,101,120,101,99, + 114,7,0,0,0,41,3,114,89,0,0,0,114,15,0,0, + 0,218,4,99,111,100,101,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,139,0,0,0,29,3,0,0,115, + 12,0,0,0,0,2,12,1,15,1,18,1,9,1,18,1, + 122,26,70,114,111,122,101,110,73,109,112,111,114,116,101,114, + 46,101,120,101,99,95,109,111,100,117,108,101,99,2,0,0, + 0,0,0,0,0,3,0,0,0,3,0,0,0,67,0,0, + 0,115,29,0,0,0,100,1,0,100,2,0,108,0,0,109, + 1,0,125,2,0,1,124,2,0,124,0,0,124,1,0,131, + 2,0,83,41,3,122,95,76,111,97,100,32,97,32,102,114, + 111,122,101,110,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,114,45,0,0,0,41,1,114,90,0, + 0,0,41,2,114,120,0,0,0,114,90,0,0,0,41,3, + 114,151,0,0,0,114,78,0,0,0,114,90,0,0,0,114, + 10,0,0,0,114,10,0,0,0,114,11,0,0,0,114,146, + 0,0,0,38,3,0,0,115,4,0,0,0,0,7,16,1, + 122,26,70,114,111,122,101,110,73,109,112,111,114,116,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,2,0,0,0,67,0,0, + 0,115,13,0,0,0,116,0,0,106,1,0,124,1,0,131, + 1,0,83,41,1,122,45,82,101,116,117,114,110,32,116,104, + 101,32,99,111,100,101,32,111,98,106,101,99,116,32,102,111, + 114,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,46,41,2,114,57,0,0,0,114,163,0,0,0, + 41,2,114,151,0,0,0,114,78,0,0,0,114,10,0,0, + 0,114,10,0,0,0,114,11,0,0,0,114,157,0,0,0, + 48,3,0,0,115,2,0,0,0,0,4,122,23,70,114,111, + 122,101,110,73,109,112,111,114,116,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, + 0,83,41,2,122,54,82,101,116,117,114,110,32,78,111,110, + 101,32,97,115,32,102,114,111,122,101,110,32,109,111,100,117, + 108,101,115,32,100,111,32,110,111,116,32,104,97,118,101,32, + 115,111,117,114,99,101,32,99,111,100,101,46,78,114,10,0, + 0,0,41,2,114,151,0,0,0,114,78,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,11,0,0,0,114,158,0, + 0,0,54,3,0,0,115,2,0,0,0,0,4,122,25,70, + 114,111,122,101,110,73,109,112,111,114,116,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,2,0,0,0,67,0,0,0,115,13,0, + 0,0,116,0,0,106,1,0,124,1,0,131,1,0,83,41, + 1,122,46,82,101,116,117,114,110,32,84,114,117,101,32,105, + 102,32,116,104,101,32,102,114,111,122,101,110,32,109,111,100, + 117,108,101,32,105,115,32,97,32,112,97,99,107,97,103,101, + 46,41,2,114,57,0,0,0,90,17,105,115,95,102,114,111, + 122,101,110,95,112,97,99,107,97,103,101,41,2,114,151,0, + 0,0,114,78,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,114,109,0,0,0,60,3,0,0,115, + 2,0,0,0,0,4,122,25,70,114,111,122,101,110,73,109, + 112,111,114,116,101,114,46,105,115,95,112,97,99,107,97,103, + 101,41,16,114,1,0,0,0,114,0,0,0,0,114,2,0, + 0,0,114,3,0,0,0,114,159,0,0,0,114,92,0,0, + 0,114,160,0,0,0,114,154,0,0,0,114,155,0,0,0, + 114,138,0,0,0,114,139,0,0,0,114,146,0,0,0,114, + 84,0,0,0,114,157,0,0,0,114,158,0,0,0,114,109, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,10,0, + 0,0,114,11,0,0,0,114,161,0,0,0,247,2,0,0, + 115,30,0,0,0,12,7,6,2,18,9,3,1,21,6,3, + 1,18,8,18,4,18,9,18,10,3,1,21,5,3,1,21, + 5,3,1,114,161,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,46,0, + 0,0,101,0,0,90,1,0,100,0,0,90,2,0,100,1, + 0,90,3,0,100,2,0,100,3,0,132,0,0,90,4,0, + 100,4,0,100,5,0,132,0,0,90,5,0,100,6,0,83, + 41,7,218,18,95,73,109,112,111,114,116,76,111,99,107,67, + 111,110,116,101,120,116,122,36,67,111,110,116,101,120,116,32, + 109,97,110,97,103,101,114,32,102,111,114,32,116,104,101,32, + 105,109,112,111,114,116,32,108,111,99,107,46,99,1,0,0, + 0,0,0,0,0,1,0,0,0,1,0,0,0,67,0,0, + 0,115,14,0,0,0,116,0,0,106,1,0,131,0,0,1, + 100,1,0,83,41,2,122,24,65,99,113,117,105,114,101,32, + 116,104,101,32,105,109,112,111,114,116,32,108,111,99,107,46, + 78,41,2,114,57,0,0,0,114,145,0,0,0,41,1,114, + 19,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,23,0,0,0,73,3,0,0,115,2,0,0, + 0,0,2,122,28,95,73,109,112,111,114,116,76,111,99,107, + 67,111,110,116,101,120,116,46,95,95,101,110,116,101,114,95, + 95,99,4,0,0,0,0,0,0,0,4,0,0,0,1,0, + 0,0,67,0,0,0,115,14,0,0,0,116,0,0,106,1, + 0,131,0,0,1,100,1,0,83,41,2,122,60,82,101,108, + 101,97,115,101,32,116,104,101,32,105,109,112,111,114,116,32, + 108,111,99,107,32,114,101,103,97,114,100,108,101,115,115,32, + 111,102,32,97,110,121,32,114,97,105,115,101,100,32,101,120, + 99,101,112,116,105,111,110,115,46,78,41,2,114,57,0,0, + 0,114,58,0,0,0,41,4,114,19,0,0,0,90,8,101, + 120,99,95,116,121,112,101,90,9,101,120,99,95,118,97,108, + 117,101,90,13,101,120,99,95,116,114,97,99,101,98,97,99, + 107,114,10,0,0,0,114,10,0,0,0,114,11,0,0,0, + 114,30,0,0,0,77,3,0,0,115,2,0,0,0,0,2, + 122,27,95,73,109,112,111,114,116,76,111,99,107,67,111,110, + 116,101,120,116,46,95,95,101,120,105,116,95,95,78,41,6, + 114,1,0,0,0,114,0,0,0,0,114,2,0,0,0,114, + 3,0,0,0,114,23,0,0,0,114,30,0,0,0,114,10, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,166,0,0,0,69,3,0,0,115,6,0,0,0, + 12,2,6,2,12,4,114,166,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,88,0,0,0,124,1,0,106,0,0,100,1,0,124,2, + 0,100,2,0,24,131,2,0,125,3,0,116,1,0,124,3, + 0,131,1,0,124,2,0,107,0,0,114,52,0,116,2,0, + 100,3,0,131,1,0,130,1,0,124,3,0,100,4,0,25, + 125,4,0,124,0,0,114,84,0,100,5,0,106,3,0,124, + 4,0,124,0,0,131,2,0,83,124,4,0,83,41,6,122, + 50,82,101,115,111,108,118,101,32,97,32,114,101,108,97,116, + 105,118,101,32,109,111,100,117,108,101,32,110,97,109,101,32, + 116,111,32,97,110,32,97,98,115,111,108,117,116,101,32,111, + 110,101,46,114,121,0,0,0,114,45,0,0,0,122,50,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,98,101,121,111,110,100,32, + 116,111,112,45,108,101,118,101,108,32,112,97,99,107,97,103, + 101,114,33,0,0,0,122,5,123,125,46,123,125,41,4,218, + 6,114,115,112,108,105,116,218,3,108,101,110,218,10,86,97, + 108,117,101,69,114,114,111,114,114,50,0,0,0,41,5,114, + 15,0,0,0,218,7,112,97,99,107,97,103,101,218,5,108, + 101,118,101,108,90,4,98,105,116,115,90,4,98,97,115,101, + 114,10,0,0,0,114,10,0,0,0,114,11,0,0,0,218, + 13,95,114,101,115,111,108,118,101,95,110,97,109,101,82,3, + 0,0,115,10,0,0,0,0,2,22,1,18,1,12,1,10, + 1,114,172,0,0,0,99,3,0,0,0,0,0,0,0,4, + 0,0,0,3,0,0,0,67,0,0,0,115,47,0,0,0, + 124,0,0,106,0,0,124,1,0,124,2,0,131,2,0,125, + 3,0,124,3,0,100,0,0,107,8,0,114,34,0,100,0, + 0,83,116,1,0,124,1,0,124,3,0,131,2,0,83,41, + 1,78,41,2,114,155,0,0,0,114,85,0,0,0,41,4, + 218,6,102,105,110,100,101,114,114,15,0,0,0,114,152,0, + 0,0,114,99,0,0,0,114,10,0,0,0,114,10,0,0, + 0,114,11,0,0,0,218,17,95,102,105,110,100,95,115,112, + 101,99,95,108,101,103,97,99,121,91,3,0,0,115,8,0, + 0,0,0,3,18,1,12,1,4,1,114,174,0,0,0,99, + 3,0,0,0,0,0,0,0,9,0,0,0,27,0,0,0, + 67,0,0,0,115,42,1,0,0,116,0,0,106,1,0,100, + 1,0,107,9,0,114,41,0,116,0,0,106,1,0,12,114, + 41,0,116,2,0,106,3,0,100,2,0,116,4,0,131,2, + 0,1,124,0,0,116,0,0,106,5,0,107,6,0,125,3, + 0,120,235,0,116,0,0,106,1,0,68,93,220,0,125,4, + 0,116,6,0,131,0,0,143,90,0,1,121,13,0,124,4, + 0,106,7,0,125,5,0,87,110,51,0,4,116,8,0,107, + 10,0,114,148,0,1,1,1,116,9,0,124,4,0,124,0, + 0,124,1,0,131,3,0,125,6,0,124,6,0,100,1,0, + 107,8,0,114,144,0,119,66,0,89,110,19,0,88,124,5, + 0,124,0,0,124,1,0,124,2,0,131,3,0,125,6,0, + 87,100,1,0,81,82,88,124,6,0,100,1,0,107,9,0, + 114,66,0,124,3,0,12,114,26,1,124,0,0,116,0,0, + 106,5,0,107,6,0,114,26,1,116,0,0,106,5,0,124, + 0,0,25,125,7,0,121,13,0,124,7,0,106,10,0,125, + 8,0,87,110,22,0,4,116,8,0,107,10,0,114,2,1, + 1,1,1,124,6,0,83,89,113,30,1,88,124,8,0,100, + 1,0,107,8,0,114,19,1,124,6,0,83,124,8,0,83, + 113,66,0,124,6,0,83,113,66,0,87,100,1,0,83,100, + 1,0,83,41,3,122,23,70,105,110,100,32,97,32,109,111, + 100,117,108,101,39,115,32,108,111,97,100,101,114,46,78,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,11,114,14,0,0,0,218,9, + 109,101,116,97,95,112,97,116,104,114,141,0,0,0,114,142, + 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, + 110,103,114,21,0,0,0,114,166,0,0,0,114,154,0,0, + 0,114,96,0,0,0,114,174,0,0,0,114,95,0,0,0, + 41,9,114,15,0,0,0,114,152,0,0,0,114,153,0,0, + 0,90,9,105,115,95,114,101,108,111,97,100,114,173,0,0, + 0,114,154,0,0,0,114,88,0,0,0,114,89,0,0,0, + 114,95,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, + 100,3,0,0,115,48,0,0,0,0,2,25,1,16,4,15, + 1,16,1,10,1,3,1,13,1,13,1,18,1,12,1,8, + 2,25,1,12,2,22,1,13,1,3,1,13,1,13,4,9, + 2,12,1,4,2,7,2,8,2,114,177,0,0,0,99,3, + 0,0,0,0,0,0,0,4,0,0,0,4,0,0,0,67, + 0,0,0,115,179,0,0,0,116,0,0,124,0,0,116,1, + 0,131,2,0,115,42,0,116,2,0,100,1,0,106,3,0, + 116,4,0,124,0,0,131,1,0,131,1,0,131,1,0,130, + 1,0,124,2,0,100,2,0,107,0,0,114,66,0,116,5, + 0,100,3,0,131,1,0,130,1,0,124,1,0,114,144,0, + 116,0,0,124,1,0,116,1,0,131,2,0,115,102,0,116, + 2,0,100,4,0,131,1,0,130,1,0,110,42,0,124,1, + 0,116,6,0,106,7,0,107,7,0,114,144,0,100,5,0, + 125,3,0,116,8,0,124,3,0,106,3,0,124,1,0,131, + 1,0,131,1,0,130,1,0,124,0,0,12,114,175,0,124, + 2,0,100,2,0,107,2,0,114,175,0,116,5,0,100,6, + 0,131,1,0,130,1,0,100,7,0,83,41,8,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,33,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,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,9,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,50,0,0,0,114,13,0,0, + 0,114,169,0,0,0,114,14,0,0,0,114,21,0,0,0, + 218,11,83,121,115,116,101,109,69,114,114,111,114,41,4,114, + 15,0,0,0,114,170,0,0,0,114,171,0,0,0,114,147, + 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,24,0,0,0,0,2,15,1,27,1, + 12,1,12,1,6,1,15,1,15,1,15,1,6,2,21,1, + 19,1,114,182,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,12,0,0,0, + 67,0,0,0,115,40,1,0,0,100,0,0,125,2,0,124, + 0,0,106,0,0,100,1,0,131,1,0,100,2,0,25,125, + 3,0,124,3,0,114,175,0,124,3,0,116,1,0,106,2, + 0,107,7,0,114,59,0,116,3,0,124,1,0,124,3,0, + 131,2,0,1,124,0,0,116,1,0,106,2,0,107,6,0, + 114,85,0,116,1,0,106,2,0,124,0,0,25,83,116,1, + 0,106,2,0,124,3,0,25,125,4,0,121,13,0,124,4, + 0,106,4,0,125,2,0,87,110,61,0,4,116,5,0,107, + 10,0,114,174,0,1,1,1,116,6,0,100,3,0,23,106, + 7,0,124,0,0,124,3,0,131,2,0,125,5,0,116,8, + 0,124,5,0,100,4,0,124,0,0,131,1,1,100,0,0, + 130,2,0,89,110,1,0,88,116,9,0,124,0,0,124,2, + 0,131,2,0,125,6,0,124,6,0,100,0,0,107,8,0, + 114,232,0,116,8,0,116,6,0,106,7,0,124,0,0,131, + 1,0,100,4,0,124,0,0,131,1,1,130,1,0,110,12, + 0,116,10,0,124,6,0,131,1,0,125,7,0,124,3,0, + 114,36,1,116,1,0,106,2,0,124,3,0,25,125,4,0, + 116,11,0,124,4,0,124,0,0,106,0,0,100,1,0,131, + 1,0,100,5,0,25,124,7,0,131,3,0,1,124,7,0, + 83,41,6,78,114,121,0,0,0,114,33,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,114,15,0,0,0,114,140,0,0, + 0,41,12,114,122,0,0,0,114,14,0,0,0,114,21,0, + 0,0,114,65,0,0,0,114,131,0,0,0,114,96,0,0, + 0,218,8,95,69,82,82,95,77,83,71,114,50,0,0,0, + 114,77,0,0,0,114,177,0,0,0,114,149,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,152,0,0,0,114,123,0,0,0,90,13, + 112,97,114,101,110,116,95,109,111,100,117,108,101,114,147,0, + 0,0,114,88,0,0,0,114,89,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,160,3,0,0,115,42,0,0,0,0,1,6, + 1,19,1,6,1,15,1,13,2,15,1,11,1,13,1,3, + 1,13,1,13,1,22,1,26,1,15,1,12,1,30,2,12, + 1,6,2,13,1,29,1,114,185,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,37,0,0,0,116,0,0,124,0,0,131,1,0,143, + 18,0,1,116,1,0,124,0,0,124,1,0,131,2,0,83, + 87,100,1,0,81,82,88,100,1,0,83,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,54,0,0,0,114,185,0, + 0,0,41,2,114,15,0,0,0,114,184,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,187,3,0, + 0,115,4,0,0,0,0,2,13,1,114,186,0,0,0,114, + 33,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,166,0,0,0,116,0, + 0,124,0,0,124,1,0,124,2,0,131,3,0,1,124,2, + 0,100,1,0,107,4,0,114,46,0,116,1,0,124,0,0, + 124,1,0,124,2,0,131,3,0,125,0,0,116,2,0,106, + 3,0,131,0,0,1,124,0,0,116,4,0,106,5,0,107, + 7,0,114,84,0,116,6,0,124,0,0,116,7,0,131,2, + 0,83,116,4,0,106,5,0,124,0,0,25,125,3,0,124, + 3,0,100,2,0,107,8,0,114,152,0,116,2,0,106,8, + 0,131,0,0,1,100,3,0,106,9,0,124,0,0,131,1, + 0,125,4,0,116,10,0,124,4,0,100,4,0,124,0,0, + 131,1,1,130,1,0,116,11,0,124,0,0,131,1,0,1, + 124,3,0,83,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,33,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,114,15,0, + 0,0,41,12,114,182,0,0,0,114,172,0,0,0,114,57, + 0,0,0,114,145,0,0,0,114,14,0,0,0,114,21,0, + 0,0,114,186,0,0,0,218,11,95,103,99,100,95,105,109, + 112,111,114,116,114,58,0,0,0,114,50,0,0,0,114,77, + 0,0,0,114,63,0,0,0,41,5,114,15,0,0,0,114, + 170,0,0,0,114,171,0,0,0,114,89,0,0,0,114,74, + 0,0,0,114,10,0,0,0,114,10,0,0,0,114,11,0, + 0,0,114,187,0,0,0,193,3,0,0,115,28,0,0,0, + 0,9,16,1,12,1,18,1,10,1,15,1,13,1,13,1, + 12,1,10,1,6,1,9,1,18,1,10,1,114,187,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,239,0,0,0,116,0,0,124,0, + 0,100,1,0,131,2,0,114,235,0,100,2,0,124,1,0, + 107,6,0,114,83,0,116,1,0,124,1,0,131,1,0,125, + 1,0,124,1,0,106,2,0,100,2,0,131,1,0,1,116, + 0,0,124,0,0,100,3,0,131,2,0,114,83,0,124,1, + 0,106,3,0,124,0,0,106,4,0,131,1,0,1,120,149, + 0,124,1,0,68,93,141,0,125,3,0,116,0,0,124,0, + 0,124,3,0,131,2,0,115,90,0,100,4,0,106,5,0, + 124,0,0,106,6,0,124,3,0,131,2,0,125,4,0,121, + 17,0,116,7,0,124,2,0,124,4,0,131,2,0,1,87, + 113,90,0,4,116,8,0,107,10,0,114,230,0,1,125,5, + 0,1,122,47,0,116,9,0,124,5,0,131,1,0,106,10, + 0,116,11,0,131,1,0,114,209,0,124,5,0,106,12,0, + 124,4,0,107,2,0,114,209,0,119,90,0,130,0,0,87, + 89,100,5,0,100,5,0,125,5,0,126,5,0,88,113,90, + 0,88,113,90,0,87,124,0,0,83,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,131,0,0, + 0,250,1,42,218,7,95,95,97,108,108,95,95,122,5,123, + 125,46,123,125,78,41,13,114,4,0,0,0,114,130,0,0, + 0,218,6,114,101,109,111,118,101,218,6,101,120,116,101,110, + 100,114,189,0,0,0,114,50,0,0,0,114,1,0,0,0, + 114,65,0,0,0,114,77,0,0,0,114,179,0,0,0,114, + 71,0,0,0,218,15,95,69,82,82,95,77,83,71,95,80, + 82,69,70,73,88,114,15,0,0,0,41,6,114,89,0,0, + 0,218,8,102,114,111,109,108,105,115,116,114,184,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,217,3,0,0,115,34,0,0,0,0,10,15, + 1,12,1,12,1,13,1,15,1,16,1,13,1,15,1,21, + 1,3,1,17,1,18,4,21,1,15,1,3,1,26,1,114, + 195,0,0,0,99,1,0,0,0,0,0,0,0,2,0,0, + 0,2,0,0,0,67,0,0,0,115,72,0,0,0,124,0, + 0,106,0,0,100,1,0,131,1,0,125,1,0,124,1,0, + 100,2,0,107,8,0,114,68,0,124,0,0,100,3,0,25, + 125,1,0,100,4,0,124,0,0,107,7,0,114,68,0,124, + 1,0,106,1,0,100,5,0,131,1,0,100,6,0,25,125, + 1,0,124,1,0,83,41,7,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,135,0,0,0,78,114,1,0,0,0,114,131,0,0, + 0,114,121,0,0,0,114,33,0,0,0,41,2,114,42,0, + 0,0,114,122,0,0,0,41,2,218,7,103,108,111,98,97, + 108,115,114,170,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,249,3,0,0,115,12,0, + 0,0,0,7,15,1,12,1,10,1,12,1,19,1,114,197, + 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,227,0,0,0,124,4,0, + 100,1,0,107,2,0,114,27,0,116,0,0,124,0,0,131, + 1,0,125,5,0,110,54,0,124,1,0,100,2,0,107,9, + 0,114,45,0,124,1,0,110,3,0,105,0,0,125,6,0, + 116,1,0,124,6,0,131,1,0,125,7,0,116,0,0,124, + 0,0,124,7,0,124,4,0,131,3,0,125,5,0,124,3, + 0,115,207,0,124,4,0,100,1,0,107,2,0,114,122,0, + 116,0,0,124,0,0,106,2,0,100,3,0,131,1,0,100, + 1,0,25,131,1,0,83,124,0,0,115,132,0,124,5,0, + 83,116,3,0,124,0,0,131,1,0,116,3,0,124,0,0, + 106,2,0,100,3,0,131,1,0,100,1,0,25,131,1,0, + 24,125,8,0,116,4,0,106,5,0,124,5,0,106,6,0, + 100,2,0,116,3,0,124,5,0,106,6,0,131,1,0,124, + 8,0,24,133,2,0,25,25,83,110,16,0,116,7,0,124, + 5,0,124,3,0,116,0,0,131,3,0,83,100,2,0,83, + 41,4,97,214,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,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,33,0, + 0,0,78,114,121,0,0,0,41,8,114,187,0,0,0,114, + 197,0,0,0,218,9,112,97,114,116,105,116,105,111,110,114, + 168,0,0,0,114,14,0,0,0,114,21,0,0,0,114,1, + 0,0,0,114,195,0,0,0,41,9,114,15,0,0,0,114, + 196,0,0,0,218,6,108,111,99,97,108,115,114,193,0,0, + 0,114,171,0,0,0,114,89,0,0,0,90,8,103,108,111, + 98,97,108,115,95,114,170,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,8,4, + 0,0,115,26,0,0,0,0,11,12,1,15,2,24,1,12, + 1,18,1,6,3,12,1,23,1,6,1,4,4,35,3,40, + 2,114,200,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,53,0,0,0, + 116,0,0,106,1,0,124,0,0,131,1,0,125,1,0,124, + 1,0,100,0,0,107,8,0,114,43,0,116,2,0,100,1, + 0,124,0,0,23,131,1,0,130,1,0,116,3,0,124,1, + 0,131,1,0,83,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,150,0,0,0,114,154,0,0,0,114, + 77,0,0,0,114,149,0,0,0,41,2,114,15,0,0,0, + 114,88,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,43,4,0,0,115,8,0,0, + 0,0,1,15,1,12,1,16,1,114,201,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,74,1,0,0,124,1,0,97,0,0,124,0, + 0,97,1,0,116,2,0,116,1,0,131,1,0,125,2,0, + 120,123,0,116,1,0,106,3,0,106,4,0,131,0,0,68, + 93,106,0,92,2,0,125,3,0,125,4,0,116,5,0,124, + 4,0,124,2,0,131,2,0,114,40,0,124,3,0,116,1, + 0,106,6,0,107,6,0,114,91,0,116,7,0,125,5,0, + 110,27,0,116,0,0,106,8,0,124,3,0,131,1,0,114, + 40,0,116,9,0,125,5,0,110,3,0,113,40,0,116,10, + 0,124,4,0,124,5,0,131,2,0,125,6,0,116,11,0, + 124,6,0,124,4,0,131,2,0,1,113,40,0,87,116,1, + 0,106,3,0,116,12,0,25,125,7,0,120,73,0,100,5, + 0,68,93,65,0,125,8,0,124,8,0,116,1,0,106,3, + 0,107,7,0,114,206,0,116,13,0,124,8,0,131,1,0, + 125,9,0,110,13,0,116,1,0,106,3,0,124,8,0,25, + 125,9,0,116,14,0,124,7,0,124,8,0,124,9,0,131, + 3,0,1,113,170,0,87,121,16,0,116,13,0,100,2,0, + 131,1,0,125,10,0,87,110,24,0,4,116,15,0,107,10, + 0,114,25,1,1,1,1,100,3,0,125,10,0,89,110,1, + 0,88,116,14,0,124,7,0,100,2,0,124,10,0,131,3, + 0,1,116,13,0,100,4,0,131,1,0,125,11,0,116,14, + 0,124,7,0,100,4,0,124,11,0,131,3,0,1,100,3, + 0,83,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,141,0,0,0,114,34,0,0,0,78,114,62,0,0,0, + 41,1,122,9,95,119,97,114,110,105,110,103,115,41,16,114, + 57,0,0,0,114,14,0,0,0,114,13,0,0,0,114,21, + 0,0,0,218,5,105,116,101,109,115,114,178,0,0,0,114, + 76,0,0,0,114,150,0,0,0,114,82,0,0,0,114,161, + 0,0,0,114,132,0,0,0,114,137,0,0,0,114,1,0, + 0,0,114,201,0,0,0,114,5,0,0,0,114,77,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,89, + 0,0,0,114,99,0,0,0,114,88,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,50,4, + 0,0,115,50,0,0,0,0,9,6,1,6,3,12,1,28, + 1,15,1,15,1,9,1,15,1,9,2,3,1,15,1,17, + 3,13,1,13,1,15,1,15,2,13,1,20,3,3,1,16, + 1,13,2,11,1,16,3,12,1,114,205,0,0,0,99,2, + 0,0,0,0,0,0,0,3,0,0,0,3,0,0,0,67, + 0,0,0,115,97,0,0,0,116,0,0,124,0,0,124,1, + 0,131,2,0,1,116,1,0,106,2,0,106,3,0,116,4, + 0,131,1,0,1,116,1,0,106,2,0,106,3,0,116,5, + 0,131,1,0,1,100,1,0,100,2,0,108,6,0,125,2, + 0,124,2,0,106,7,0,116,1,0,106,8,0,116,9,0, + 25,131,1,0,1,124,2,0,116,1,0,106,8,0,116,9, + 0,25,95,10,0,100,2,0,83,41,3,122,50,73,110,115, + 116,97,108,108,32,105,109,112,111,114,116,108,105,98,32,97, + 115,32,116,104,101,32,105,109,112,108,101,109,101,110,116,97, + 116,105,111,110,32,111,102,32,105,109,112,111,114,116,46,114, + 33,0,0,0,78,41,11,114,205,0,0,0,114,14,0,0, + 0,114,175,0,0,0,114,113,0,0,0,114,150,0,0,0, + 114,161,0,0,0,114,119,0,0,0,218,8,95,105,110,115, + 116,97,108,108,114,21,0,0,0,114,1,0,0,0,114,120, + 0,0,0,41,3,114,203,0,0,0,114,204,0,0,0,114, + 119,0,0,0,114,10,0,0,0,114,10,0,0,0,114,11, + 0,0,0,114,206,0,0,0,97,4,0,0,115,12,0,0, + 0,0,2,13,2,16,1,16,2,12,1,20,1,114,206,0, + 0,0,41,50,114,3,0,0,0,114,12,0,0,0,114,16, + 0,0,0,114,17,0,0,0,114,59,0,0,0,114,41,0, + 0,0,114,48,0,0,0,114,31,0,0,0,114,32,0,0, + 0,114,53,0,0,0,114,54,0,0,0,114,56,0,0,0, + 114,63,0,0,0,114,65,0,0,0,114,75,0,0,0,114, + 81,0,0,0,114,84,0,0,0,114,90,0,0,0,114,101, + 0,0,0,114,102,0,0,0,114,106,0,0,0,114,85,0, + 0,0,218,6,111,98,106,101,99,116,90,9,95,80,79,80, + 85,76,65,84,69,114,132,0,0,0,114,137,0,0,0,114, + 144,0,0,0,114,97,0,0,0,114,86,0,0,0,114,148, + 0,0,0,114,149,0,0,0,114,87,0,0,0,114,150,0, + 0,0,114,161,0,0,0,114,166,0,0,0,114,172,0,0, + 0,114,174,0,0,0,114,177,0,0,0,114,182,0,0,0, + 114,192,0,0,0,114,183,0,0,0,114,185,0,0,0,114, + 186,0,0,0,114,187,0,0,0,114,195,0,0,0,114,197, + 0,0,0,114,200,0,0,0,114,201,0,0,0,114,205,0, + 0,0,114,206,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,8,0,0,0,115,94,0,0,0,6,17, + 12,8,12,4,19,20,6,2,6,3,22,4,19,68,19,21, + 19,19,12,19,12,19,12,11,18,8,12,11,12,12,12,16, + 12,36,19,27,19,100,24,23,9,3,18,45,18,57,12,18, + 12,17,12,25,12,29,12,23,12,16,19,70,19,78,19,13, + 12,9,12,9,15,40,12,17,6,1,10,2,12,27,12,6, + 18,24,12,32,12,15,24,35,12,7,12,47, }; diff --git a/Python/importlib_external.h b/Python/importlib_external.h index c853f04c3e0..6119e248791 100644 --- a/Python/importlib_external.h +++ b/Python/importlib_external.h @@ -225,2408 +225,2409 @@ const unsigned char _Py_M__importlib_external[] = { 104,95,105,115,100,105,114,92,0,0,0,115,6,0,0,0, 0,2,6,1,12,1,114,46,0,0,0,105,182,1,0,0, 99,3,0,0,0,0,0,0,0,6,0,0,0,17,0,0, - 0,67,0,0,0,115,192,0,0,0,100,1,0,106,0,0, + 0,67,0,0,0,115,193,0,0,0,100,1,0,106,0,0, 124,0,0,116,1,0,124,0,0,131,1,0,131,2,0,125, 3,0,116,2,0,106,3,0,124,3,0,116,2,0,106,4, 0,116,2,0,106,5,0,66,116,2,0,106,6,0,66,124, - 2,0,100,2,0,64,131,3,0,125,4,0,121,60,0,116, + 2,0,100,2,0,64,131,3,0,125,4,0,121,61,0,116, 7,0,106,8,0,124,4,0,100,3,0,131,2,0,143,20, 0,125,5,0,124,5,0,106,9,0,124,1,0,131,1,0, - 1,87,100,4,0,81,88,116,2,0,106,10,0,124,3,0, - 124,0,0,131,2,0,1,87,110,59,0,4,116,11,0,107, - 10,0,114,187,0,1,1,1,121,17,0,116,2,0,106,12, - 0,124,3,0,131,1,0,1,87,110,18,0,4,116,11,0, - 107,10,0,114,179,0,1,1,1,89,110,1,0,88,130,0, - 0,89,110,1,0,88,100,4,0,83,41,5,122,162,66,101, - 115,116,45,101,102,102,111,114,116,32,102,117,110,99,116,105, - 111,110,32,116,111,32,119,114,105,116,101,32,100,97,116,97, - 32,116,111,32,97,32,112,97,116,104,32,97,116,111,109,105, - 99,97,108,108,121,46,10,32,32,32,32,66,101,32,112,114, - 101,112,97,114,101,100,32,116,111,32,104,97,110,100,108,101, - 32,97,32,70,105,108,101,69,120,105,115,116,115,69,114,114, - 111,114,32,105,102,32,99,111,110,99,117,114,114,101,110,116, - 32,119,114,105,116,105,110,103,32,111,102,32,116,104,101,10, - 32,32,32,32,116,101,109,112,111,114,97,114,121,32,102,105, - 108,101,32,105,115,32,97,116,116,101,109,112,116,101,100,46, - 122,5,123,125,46,123,125,105,182,1,0,0,90,2,119,98, - 78,41,13,218,6,102,111,114,109,97,116,218,2,105,100,114, - 3,0,0,0,90,4,111,112,101,110,90,6,79,95,69,88, - 67,76,90,7,79,95,67,82,69,65,84,90,8,79,95,87, - 82,79,78,76,89,218,3,95,105,111,218,6,70,105,108,101, - 73,79,218,5,119,114,105,116,101,218,7,114,101,112,108,97, - 99,101,114,40,0,0,0,90,6,117,110,108,105,110,107,41, - 6,114,35,0,0,0,218,4,100,97,116,97,114,42,0,0, - 0,90,8,112,97,116,104,95,116,109,112,90,2,102,100,218, - 4,102,105,108,101,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,218,13,95,119,114,105,116,101,95,97,116,111, - 109,105,99,99,0,0,0,115,26,0,0,0,0,5,24,1, - 9,1,33,1,3,3,21,1,19,1,20,1,13,1,3,1, - 17,1,13,1,5,1,114,55,0,0,0,105,2,13,0,0, - 233,2,0,0,0,114,13,0,0,0,115,2,0,0,0,13, - 10,90,11,95,95,112,121,99,97,99,104,101,95,95,122,4, - 111,112,116,45,122,3,46,112,121,122,4,46,112,121,99,78, - 218,12,111,112,116,105,109,105,122,97,116,105,111,110,99,2, - 0,0,0,1,0,0,0,11,0,0,0,6,0,0,0,67, - 0,0,0,115,87,1,0,0,124,1,0,100,1,0,107,9, - 0,114,76,0,116,0,0,106,1,0,100,2,0,116,2,0, - 131,2,0,1,124,2,0,100,1,0,107,9,0,114,58,0, - 100,3,0,125,3,0,116,3,0,124,3,0,131,1,0,130, - 1,0,124,1,0,114,70,0,100,4,0,110,3,0,100,5, - 0,125,2,0,116,4,0,124,0,0,131,1,0,92,2,0, - 125,4,0,125,5,0,124,5,0,106,5,0,100,6,0,131, - 1,0,92,3,0,125,6,0,125,7,0,125,8,0,116,6, - 0,106,7,0,106,8,0,125,9,0,124,9,0,100,1,0, - 107,8,0,114,154,0,116,9,0,100,7,0,131,1,0,130, - 1,0,100,4,0,106,10,0,124,6,0,114,172,0,124,6, - 0,110,3,0,124,8,0,124,7,0,124,9,0,103,3,0, - 131,1,0,125,10,0,124,2,0,100,1,0,107,8,0,114, - 241,0,116,6,0,106,11,0,106,12,0,100,8,0,107,2, - 0,114,229,0,100,4,0,125,2,0,110,12,0,116,6,0, - 106,11,0,106,12,0,125,2,0,116,13,0,124,2,0,131, - 1,0,125,2,0,124,2,0,100,4,0,107,3,0,114,63, - 1,124,2,0,106,14,0,131,0,0,115,42,1,116,15,0, - 100,9,0,106,16,0,124,2,0,131,1,0,131,1,0,130, - 1,0,100,10,0,106,16,0,124,10,0,116,17,0,124,2, - 0,131,3,0,125,10,0,116,18,0,124,4,0,116,19,0, - 124,10,0,116,20,0,100,8,0,25,23,131,3,0,83,41, - 11,97,254,2,0,0,71,105,118,101,110,32,116,104,101,32, - 112,97,116,104,32,116,111,32,97,32,46,112,121,32,102,105, - 108,101,44,32,114,101,116,117,114,110,32,116,104,101,32,112, - 97,116,104,32,116,111,32,105,116,115,32,46,112,121,99,32, - 102,105,108,101,46,10,10,32,32,32,32,84,104,101,32,46, - 112,121,32,102,105,108,101,32,100,111,101,115,32,110,111,116, - 32,110,101,101,100,32,116,111,32,101,120,105,115,116,59,32, - 116,104,105,115,32,115,105,109,112,108,121,32,114,101,116,117, - 114,110,115,32,116,104,101,32,112,97,116,104,32,116,111,32, - 116,104,101,10,32,32,32,32,46,112,121,99,32,102,105,108, - 101,32,99,97,108,99,117,108,97,116,101,100,32,97,115,32, - 105,102,32,116,104,101,32,46,112,121,32,102,105,108,101,32, - 119,101,114,101,32,105,109,112,111,114,116,101,100,46,10,10, - 32,32,32,32,84,104,101,32,39,111,112,116,105,109,105,122, - 97,116,105,111,110,39,32,112,97,114,97,109,101,116,101,114, - 32,99,111,110,116,114,111,108,115,32,116,104,101,32,112,114, - 101,115,117,109,101,100,32,111,112,116,105,109,105,122,97,116, - 105,111,110,32,108,101,118,101,108,32,111,102,10,32,32,32, - 32,116,104,101,32,98,121,116,101,99,111,100,101,32,102,105, - 108,101,46,32,73,102,32,39,111,112,116,105,109,105,122,97, - 116,105,111,110,39,32,105,115,32,110,111,116,32,78,111,110, - 101,44,32,116,104,101,32,115,116,114,105,110,103,32,114,101, - 112,114,101,115,101,110,116,97,116,105,111,110,10,32,32,32, - 32,111,102,32,116,104,101,32,97,114,103,117,109,101,110,116, - 32,105,115,32,116,97,107,101,110,32,97,110,100,32,118,101, - 114,105,102,105,101,100,32,116,111,32,98,101,32,97,108,112, - 104,97,110,117,109,101,114,105,99,32,40,101,108,115,101,32, - 86,97,108,117,101,69,114,114,111,114,10,32,32,32,32,105, - 115,32,114,97,105,115,101,100,41,46,10,10,32,32,32,32, - 84,104,101,32,100,101,98,117,103,95,111,118,101,114,114,105, - 100,101,32,112,97,114,97,109,101,116,101,114,32,105,115,32, - 100,101,112,114,101,99,97,116,101,100,46,32,73,102,32,100, - 101,98,117,103,95,111,118,101,114,114,105,100,101,32,105,115, - 32,110,111,116,32,78,111,110,101,44,10,32,32,32,32,97, - 32,84,114,117,101,32,118,97,108,117,101,32,105,115,32,116, - 104,101,32,115,97,109,101,32,97,115,32,115,101,116,116,105, - 110,103,32,39,111,112,116,105,109,105,122,97,116,105,111,110, - 39,32,116,111,32,116,104,101,32,101,109,112,116,121,32,115, - 116,114,105,110,103,10,32,32,32,32,119,104,105,108,101,32, - 97,32,70,97,108,115,101,32,118,97,108,117,101,32,105,115, - 32,101,113,117,105,118,97,108,101,110,116,32,116,111,32,115, - 101,116,116,105,110,103,32,39,111,112,116,105,109,105,122,97, - 116,105,111,110,39,32,116,111,32,39,49,39,46,10,10,32, - 32,32,32,73,102,32,115,121,115,46,105,109,112,108,101,109, - 101,110,116,97,116,105,111,110,46,99,97,99,104,101,95,116, - 97,103,32,105,115,32,78,111,110,101,32,116,104,101,110,32, - 78,111,116,73,109,112,108,101,109,101,110,116,101,100,69,114, - 114,111,114,32,105,115,32,114,97,105,115,101,100,46,10,10, - 32,32,32,32,78,122,70,116,104,101,32,100,101,98,117,103, - 95,111,118,101,114,114,105,100,101,32,112,97,114,97,109,101, - 116,101,114,32,105,115,32,100,101,112,114,101,99,97,116,101, - 100,59,32,117,115,101,32,39,111,112,116,105,109,105,122,97, - 116,105,111,110,39,32,105,110,115,116,101,97,100,122,50,100, - 101,98,117,103,95,111,118,101,114,114,105,100,101,32,111,114, - 32,111,112,116,105,109,105,122,97,116,105,111,110,32,109,117, - 115,116,32,98,101,32,115,101,116,32,116,111,32,78,111,110, - 101,114,30,0,0,0,114,29,0,0,0,218,1,46,122,36, - 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105, - 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32, - 78,111,110,101,233,0,0,0,0,122,24,123,33,114,125,32, - 105,115,32,110,111,116,32,97,108,112,104,97,110,117,109,101, - 114,105,99,122,7,123,125,46,123,125,123,125,41,21,218,9, - 95,119,97,114,110,105,110,103,115,218,4,119,97,114,110,218, - 18,68,101,112,114,101,99,97,116,105,111,110,87,97,114,110, - 105,110,103,218,9,84,121,112,101,69,114,114,111,114,114,38, - 0,0,0,114,32,0,0,0,114,7,0,0,0,218,14,105, - 109,112,108,101,109,101,110,116,97,116,105,111,110,218,9,99, - 97,99,104,101,95,116,97,103,218,19,78,111,116,73,109,112, - 108,101,109,101,110,116,101,100,69,114,114,111,114,114,26,0, - 0,0,218,5,102,108,97,103,115,218,8,111,112,116,105,109, - 105,122,101,218,3,115,116,114,218,7,105,115,97,108,110,117, - 109,218,10,86,97,108,117,101,69,114,114,111,114,114,47,0, - 0,0,218,4,95,79,80,84,114,28,0,0,0,218,8,95, - 80,89,67,65,67,72,69,218,17,66,89,84,69,67,79,68, - 69,95,83,85,70,70,73,88,69,83,41,11,114,35,0,0, - 0,90,14,100,101,98,117,103,95,111,118,101,114,114,105,100, - 101,114,57,0,0,0,218,7,109,101,115,115,97,103,101,218, - 4,104,101,97,100,114,37,0,0,0,90,4,98,97,115,101, - 218,3,115,101,112,218,4,114,101,115,116,90,3,116,97,103, - 90,15,97,108,109,111,115,116,95,102,105,108,101,110,97,109, - 101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,17,99,97,99,104,101,95,102,114,111,109,95,115,111,117, - 114,99,101,241,0,0,0,115,46,0,0,0,0,18,12,1, - 9,1,7,1,12,1,6,1,12,1,18,1,18,1,24,1, - 12,1,12,1,12,1,36,1,12,1,18,1,9,2,12,1, - 12,1,12,1,12,1,21,1,21,1,114,79,0,0,0,99, - 1,0,0,0,0,0,0,0,8,0,0,0,5,0,0,0, - 67,0,0,0,115,62,1,0,0,116,0,0,106,1,0,106, - 2,0,100,1,0,107,8,0,114,30,0,116,3,0,100,2, - 0,131,1,0,130,1,0,116,4,0,124,0,0,131,1,0, - 92,2,0,125,1,0,125,2,0,116,4,0,124,1,0,131, - 1,0,92,2,0,125,1,0,125,3,0,124,3,0,116,5, - 0,107,3,0,114,102,0,116,6,0,100,3,0,106,7,0, - 116,5,0,124,0,0,131,2,0,131,1,0,130,1,0,124, - 2,0,106,8,0,100,4,0,131,1,0,125,4,0,124,4, - 0,100,11,0,107,7,0,114,153,0,116,6,0,100,7,0, - 106,7,0,124,2,0,131,1,0,131,1,0,130,1,0,110, - 125,0,124,4,0,100,6,0,107,2,0,114,22,1,124,2, - 0,106,9,0,100,4,0,100,5,0,131,2,0,100,12,0, - 25,125,5,0,124,5,0,106,10,0,116,11,0,131,1,0, - 115,223,0,116,6,0,100,8,0,106,7,0,116,11,0,131, - 1,0,131,1,0,130,1,0,124,5,0,116,12,0,116,11, - 0,131,1,0,100,1,0,133,2,0,25,125,6,0,124,6, - 0,106,13,0,131,0,0,115,22,1,116,6,0,100,9,0, - 106,7,0,124,5,0,131,1,0,131,1,0,130,1,0,124, - 2,0,106,14,0,100,4,0,131,1,0,100,10,0,25,125, - 7,0,116,15,0,124,1,0,124,7,0,116,16,0,100,10, - 0,25,23,131,2,0,83,41,13,97,110,1,0,0,71,105, - 118,101,110,32,116,104,101,32,112,97,116,104,32,116,111,32, - 97,32,46,112,121,99,46,32,102,105,108,101,44,32,114,101, - 116,117,114,110,32,116,104,101,32,112,97,116,104,32,116,111, - 32,105,116,115,32,46,112,121,32,102,105,108,101,46,10,10, - 32,32,32,32,84,104,101,32,46,112,121,99,32,102,105,108, - 101,32,100,111,101,115,32,110,111,116,32,110,101,101,100,32, - 116,111,32,101,120,105,115,116,59,32,116,104,105,115,32,115, - 105,109,112,108,121,32,114,101,116,117,114,110,115,32,116,104, - 101,32,112,97,116,104,32,116,111,10,32,32,32,32,116,104, - 101,32,46,112,121,32,102,105,108,101,32,99,97,108,99,117, - 108,97,116,101,100,32,116,111,32,99,111,114,114,101,115,112, - 111,110,100,32,116,111,32,116,104,101,32,46,112,121,99,32, - 102,105,108,101,46,32,32,73,102,32,112,97,116,104,32,100, - 111,101,115,10,32,32,32,32,110,111,116,32,99,111,110,102, - 111,114,109,32,116,111,32,80,69,80,32,51,49,52,55,47, - 52,56,56,32,102,111,114,109,97,116,44,32,86,97,108,117, - 101,69,114,114,111,114,32,119,105,108,108,32,98,101,32,114, - 97,105,115,101,100,46,32,73,102,10,32,32,32,32,115,121, - 115,46,105,109,112,108,101,109,101,110,116,97,116,105,111,110, - 46,99,97,99,104,101,95,116,97,103,32,105,115,32,78,111, - 110,101,32,116,104,101,110,32,78,111,116,73,109,112,108,101, - 109,101,110,116,101,100,69,114,114,111,114,32,105,115,32,114, - 97,105,115,101,100,46,10,10,32,32,32,32,78,122,36,115, + 1,87,100,4,0,81,82,88,116,2,0,106,10,0,124,3, + 0,124,0,0,131,2,0,1,87,110,59,0,4,116,11,0, + 107,10,0,114,188,0,1,1,1,121,17,0,116,2,0,106, + 12,0,124,3,0,131,1,0,1,87,110,18,0,4,116,11, + 0,107,10,0,114,180,0,1,1,1,89,110,1,0,88,130, + 0,0,89,110,1,0,88,100,4,0,83,41,5,122,162,66, + 101,115,116,45,101,102,102,111,114,116,32,102,117,110,99,116, + 105,111,110,32,116,111,32,119,114,105,116,101,32,100,97,116, + 97,32,116,111,32,97,32,112,97,116,104,32,97,116,111,109, + 105,99,97,108,108,121,46,10,32,32,32,32,66,101,32,112, + 114,101,112,97,114,101,100,32,116,111,32,104,97,110,100,108, + 101,32,97,32,70,105,108,101,69,120,105,115,116,115,69,114, + 114,111,114,32,105,102,32,99,111,110,99,117,114,114,101,110, + 116,32,119,114,105,116,105,110,103,32,111,102,32,116,104,101, + 10,32,32,32,32,116,101,109,112,111,114,97,114,121,32,102, + 105,108,101,32,105,115,32,97,116,116,101,109,112,116,101,100, + 46,122,5,123,125,46,123,125,105,182,1,0,0,90,2,119, + 98,78,41,13,218,6,102,111,114,109,97,116,218,2,105,100, + 114,3,0,0,0,90,4,111,112,101,110,90,6,79,95,69, + 88,67,76,90,7,79,95,67,82,69,65,84,90,8,79,95, + 87,82,79,78,76,89,218,3,95,105,111,218,6,70,105,108, + 101,73,79,218,5,119,114,105,116,101,218,7,114,101,112,108, + 97,99,101,114,40,0,0,0,90,6,117,110,108,105,110,107, + 41,6,114,35,0,0,0,218,4,100,97,116,97,114,42,0, + 0,0,90,8,112,97,116,104,95,116,109,112,90,2,102,100, + 218,4,102,105,108,101,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,218,13,95,119,114,105,116,101,95,97,116, + 111,109,105,99,99,0,0,0,115,26,0,0,0,0,5,24, + 1,9,1,33,1,3,3,21,1,20,1,20,1,13,1,3, + 1,17,1,13,1,5,1,114,55,0,0,0,105,2,13,0, + 0,233,2,0,0,0,114,13,0,0,0,115,2,0,0,0, + 13,10,90,11,95,95,112,121,99,97,99,104,101,95,95,122, + 4,111,112,116,45,122,3,46,112,121,122,4,46,112,121,99, + 78,218,12,111,112,116,105,109,105,122,97,116,105,111,110,99, + 2,0,0,0,1,0,0,0,11,0,0,0,6,0,0,0, + 67,0,0,0,115,87,1,0,0,124,1,0,100,1,0,107, + 9,0,114,76,0,116,0,0,106,1,0,100,2,0,116,2, + 0,131,2,0,1,124,2,0,100,1,0,107,9,0,114,58, + 0,100,3,0,125,3,0,116,3,0,124,3,0,131,1,0, + 130,1,0,124,1,0,114,70,0,100,4,0,110,3,0,100, + 5,0,125,2,0,116,4,0,124,0,0,131,1,0,92,2, + 0,125,4,0,125,5,0,124,5,0,106,5,0,100,6,0, + 131,1,0,92,3,0,125,6,0,125,7,0,125,8,0,116, + 6,0,106,7,0,106,8,0,125,9,0,124,9,0,100,1, + 0,107,8,0,114,154,0,116,9,0,100,7,0,131,1,0, + 130,1,0,100,4,0,106,10,0,124,6,0,114,172,0,124, + 6,0,110,3,0,124,8,0,124,7,0,124,9,0,103,3, + 0,131,1,0,125,10,0,124,2,0,100,1,0,107,8,0, + 114,241,0,116,6,0,106,11,0,106,12,0,100,8,0,107, + 2,0,114,229,0,100,4,0,125,2,0,110,12,0,116,6, + 0,106,11,0,106,12,0,125,2,0,116,13,0,124,2,0, + 131,1,0,125,2,0,124,2,0,100,4,0,107,3,0,114, + 63,1,124,2,0,106,14,0,131,0,0,115,42,1,116,15, + 0,100,9,0,106,16,0,124,2,0,131,1,0,131,1,0, + 130,1,0,100,10,0,106,16,0,124,10,0,116,17,0,124, + 2,0,131,3,0,125,10,0,116,18,0,124,4,0,116,19, + 0,124,10,0,116,20,0,100,8,0,25,23,131,3,0,83, + 41,11,97,254,2,0,0,71,105,118,101,110,32,116,104,101, + 32,112,97,116,104,32,116,111,32,97,32,46,112,121,32,102, + 105,108,101,44,32,114,101,116,117,114,110,32,116,104,101,32, + 112,97,116,104,32,116,111,32,105,116,115,32,46,112,121,99, + 32,102,105,108,101,46,10,10,32,32,32,32,84,104,101,32, + 46,112,121,32,102,105,108,101,32,100,111,101,115,32,110,111, + 116,32,110,101,101,100,32,116,111,32,101,120,105,115,116,59, + 32,116,104,105,115,32,115,105,109,112,108,121,32,114,101,116, + 117,114,110,115,32,116,104,101,32,112,97,116,104,32,116,111, + 32,116,104,101,10,32,32,32,32,46,112,121,99,32,102,105, + 108,101,32,99,97,108,99,117,108,97,116,101,100,32,97,115, + 32,105,102,32,116,104,101,32,46,112,121,32,102,105,108,101, + 32,119,101,114,101,32,105,109,112,111,114,116,101,100,46,10, + 10,32,32,32,32,84,104,101,32,39,111,112,116,105,109,105, + 122,97,116,105,111,110,39,32,112,97,114,97,109,101,116,101, + 114,32,99,111,110,116,114,111,108,115,32,116,104,101,32,112, + 114,101,115,117,109,101,100,32,111,112,116,105,109,105,122,97, + 116,105,111,110,32,108,101,118,101,108,32,111,102,10,32,32, + 32,32,116,104,101,32,98,121,116,101,99,111,100,101,32,102, + 105,108,101,46,32,73,102,32,39,111,112,116,105,109,105,122, + 97,116,105,111,110,39,32,105,115,32,110,111,116,32,78,111, + 110,101,44,32,116,104,101,32,115,116,114,105,110,103,32,114, + 101,112,114,101,115,101,110,116,97,116,105,111,110,10,32,32, + 32,32,111,102,32,116,104,101,32,97,114,103,117,109,101,110, + 116,32,105,115,32,116,97,107,101,110,32,97,110,100,32,118, + 101,114,105,102,105,101,100,32,116,111,32,98,101,32,97,108, + 112,104,97,110,117,109,101,114,105,99,32,40,101,108,115,101, + 32,86,97,108,117,101,69,114,114,111,114,10,32,32,32,32, + 105,115,32,114,97,105,115,101,100,41,46,10,10,32,32,32, + 32,84,104,101,32,100,101,98,117,103,95,111,118,101,114,114, + 105,100,101,32,112,97,114,97,109,101,116,101,114,32,105,115, + 32,100,101,112,114,101,99,97,116,101,100,46,32,73,102,32, + 100,101,98,117,103,95,111,118,101,114,114,105,100,101,32,105, + 115,32,110,111,116,32,78,111,110,101,44,10,32,32,32,32, + 97,32,84,114,117,101,32,118,97,108,117,101,32,105,115,32, + 116,104,101,32,115,97,109,101,32,97,115,32,115,101,116,116, + 105,110,103,32,39,111,112,116,105,109,105,122,97,116,105,111, + 110,39,32,116,111,32,116,104,101,32,101,109,112,116,121,32, + 115,116,114,105,110,103,10,32,32,32,32,119,104,105,108,101, + 32,97,32,70,97,108,115,101,32,118,97,108,117,101,32,105, + 115,32,101,113,117,105,118,97,108,101,110,116,32,116,111,32, + 115,101,116,116,105,110,103,32,39,111,112,116,105,109,105,122, + 97,116,105,111,110,39,32,116,111,32,39,49,39,46,10,10, + 32,32,32,32,73,102,32,115,121,115,46,105,109,112,108,101, + 109,101,110,116,97,116,105,111,110,46,99,97,99,104,101,95, + 116,97,103,32,105,115,32,78,111,110,101,32,116,104,101,110, + 32,78,111,116,73,109,112,108,101,109,101,110,116,101,100,69, + 114,114,111,114,32,105,115,32,114,97,105,115,101,100,46,10, + 10,32,32,32,32,78,122,70,116,104,101,32,100,101,98,117, + 103,95,111,118,101,114,114,105,100,101,32,112,97,114,97,109, + 101,116,101,114,32,105,115,32,100,101,112,114,101,99,97,116, + 101,100,59,32,117,115,101,32,39,111,112,116,105,109,105,122, + 97,116,105,111,110,39,32,105,110,115,116,101,97,100,122,50, + 100,101,98,117,103,95,111,118,101,114,114,105,100,101,32,111, + 114,32,111,112,116,105,109,105,122,97,116,105,111,110,32,109, + 117,115,116,32,98,101,32,115,101,116,32,116,111,32,78,111, + 110,101,114,30,0,0,0,114,29,0,0,0,218,1,46,122, + 36,115,121,115,46,105,109,112,108,101,109,101,110,116,97,116, + 105,111,110,46,99,97,99,104,101,95,116,97,103,32,105,115, + 32,78,111,110,101,233,0,0,0,0,122,24,123,33,114,125, + 32,105,115,32,110,111,116,32,97,108,112,104,97,110,117,109, + 101,114,105,99,122,7,123,125,46,123,125,123,125,41,21,218, + 9,95,119,97,114,110,105,110,103,115,218,4,119,97,114,110, + 218,18,68,101,112,114,101,99,97,116,105,111,110,87,97,114, + 110,105,110,103,218,9,84,121,112,101,69,114,114,111,114,114, + 38,0,0,0,114,32,0,0,0,114,7,0,0,0,218,14, + 105,109,112,108,101,109,101,110,116,97,116,105,111,110,218,9, + 99,97,99,104,101,95,116,97,103,218,19,78,111,116,73,109, + 112,108,101,109,101,110,116,101,100,69,114,114,111,114,114,26, + 0,0,0,218,5,102,108,97,103,115,218,8,111,112,116,105, + 109,105,122,101,218,3,115,116,114,218,7,105,115,97,108,110, + 117,109,218,10,86,97,108,117,101,69,114,114,111,114,114,47, + 0,0,0,218,4,95,79,80,84,114,28,0,0,0,218,8, + 95,80,89,67,65,67,72,69,218,17,66,89,84,69,67,79, + 68,69,95,83,85,70,70,73,88,69,83,41,11,114,35,0, + 0,0,90,14,100,101,98,117,103,95,111,118,101,114,114,105, + 100,101,114,57,0,0,0,218,7,109,101,115,115,97,103,101, + 218,4,104,101,97,100,114,37,0,0,0,90,4,98,97,115, + 101,218,3,115,101,112,218,4,114,101,115,116,90,3,116,97, + 103,90,15,97,108,109,111,115,116,95,102,105,108,101,110,97, + 109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,218,17,99,97,99,104,101,95,102,114,111,109,95,115,111, + 117,114,99,101,241,0,0,0,115,46,0,0,0,0,18,12, + 1,9,1,7,1,12,1,6,1,12,1,18,1,18,1,24, + 1,12,1,12,1,12,1,36,1,12,1,18,1,9,2,12, + 1,12,1,12,1,12,1,21,1,21,1,114,79,0,0,0, + 99,1,0,0,0,0,0,0,0,8,0,0,0,5,0,0, + 0,67,0,0,0,115,62,1,0,0,116,0,0,106,1,0, + 106,2,0,100,1,0,107,8,0,114,30,0,116,3,0,100, + 2,0,131,1,0,130,1,0,116,4,0,124,0,0,131,1, + 0,92,2,0,125,1,0,125,2,0,116,4,0,124,1,0, + 131,1,0,92,2,0,125,1,0,125,3,0,124,3,0,116, + 5,0,107,3,0,114,102,0,116,6,0,100,3,0,106,7, + 0,116,5,0,124,0,0,131,2,0,131,1,0,130,1,0, + 124,2,0,106,8,0,100,4,0,131,1,0,125,4,0,124, + 4,0,100,11,0,107,7,0,114,153,0,116,6,0,100,7, + 0,106,7,0,124,2,0,131,1,0,131,1,0,130,1,0, + 110,125,0,124,4,0,100,6,0,107,2,0,114,22,1,124, + 2,0,106,9,0,100,4,0,100,5,0,131,2,0,100,12, + 0,25,125,5,0,124,5,0,106,10,0,116,11,0,131,1, + 0,115,223,0,116,6,0,100,8,0,106,7,0,116,11,0, + 131,1,0,131,1,0,130,1,0,124,5,0,116,12,0,116, + 11,0,131,1,0,100,1,0,133,2,0,25,125,6,0,124, + 6,0,106,13,0,131,0,0,115,22,1,116,6,0,100,9, + 0,106,7,0,124,5,0,131,1,0,131,1,0,130,1,0, + 124,2,0,106,14,0,100,4,0,131,1,0,100,10,0,25, + 125,7,0,116,15,0,124,1,0,124,7,0,116,16,0,100, + 10,0,25,23,131,2,0,83,41,13,97,110,1,0,0,71, + 105,118,101,110,32,116,104,101,32,112,97,116,104,32,116,111, + 32,97,32,46,112,121,99,46,32,102,105,108,101,44,32,114, + 101,116,117,114,110,32,116,104,101,32,112,97,116,104,32,116, + 111,32,105,116,115,32,46,112,121,32,102,105,108,101,46,10, + 10,32,32,32,32,84,104,101,32,46,112,121,99,32,102,105, + 108,101,32,100,111,101,115,32,110,111,116,32,110,101,101,100, + 32,116,111,32,101,120,105,115,116,59,32,116,104,105,115,32, + 115,105,109,112,108,121,32,114,101,116,117,114,110,115,32,116, + 104,101,32,112,97,116,104,32,116,111,10,32,32,32,32,116, + 104,101,32,46,112,121,32,102,105,108,101,32,99,97,108,99, + 117,108,97,116,101,100,32,116,111,32,99,111,114,114,101,115, + 112,111,110,100,32,116,111,32,116,104,101,32,46,112,121,99, + 32,102,105,108,101,46,32,32,73,102,32,112,97,116,104,32, + 100,111,101,115,10,32,32,32,32,110,111,116,32,99,111,110, + 102,111,114,109,32,116,111,32,80,69,80,32,51,49,52,55, + 47,52,56,56,32,102,111,114,109,97,116,44,32,86,97,108, + 117,101,69,114,114,111,114,32,119,105,108,108,32,98,101,32, + 114,97,105,115,101,100,46,32,73,102,10,32,32,32,32,115, 121,115,46,105,109,112,108,101,109,101,110,116,97,116,105,111, 110,46,99,97,99,104,101,95,116,97,103,32,105,115,32,78, - 111,110,101,122,37,123,125,32,110,111,116,32,98,111,116,116, - 111,109,45,108,101,118,101,108,32,100,105,114,101,99,116,111, - 114,121,32,105,110,32,123,33,114,125,114,58,0,0,0,114, - 56,0,0,0,233,3,0,0,0,122,33,101,120,112,101,99, - 116,101,100,32,111,110,108,121,32,50,32,111,114,32,51,32, - 100,111,116,115,32,105,110,32,123,33,114,125,122,57,111,112, - 116,105,109,105,122,97,116,105,111,110,32,112,111,114,116,105, - 111,110,32,111,102,32,102,105,108,101,110,97,109,101,32,100, - 111,101,115,32,110,111,116,32,115,116,97,114,116,32,119,105, - 116,104,32,123,33,114,125,122,52,111,112,116,105,109,105,122, - 97,116,105,111,110,32,108,101,118,101,108,32,123,33,114,125, - 32,105,115,32,110,111,116,32,97,110,32,97,108,112,104,97, - 110,117,109,101,114,105,99,32,118,97,108,117,101,114,59,0, - 0,0,62,2,0,0,0,114,56,0,0,0,114,80,0,0, - 0,233,254,255,255,255,41,17,114,7,0,0,0,114,64,0, - 0,0,114,65,0,0,0,114,66,0,0,0,114,38,0,0, - 0,114,73,0,0,0,114,71,0,0,0,114,47,0,0,0, - 218,5,99,111,117,110,116,114,34,0,0,0,114,9,0,0, - 0,114,72,0,0,0,114,31,0,0,0,114,70,0,0,0, - 218,9,112,97,114,116,105,116,105,111,110,114,28,0,0,0, - 218,15,83,79,85,82,67,69,95,83,85,70,70,73,88,69, - 83,41,8,114,35,0,0,0,114,76,0,0,0,90,16,112, - 121,99,97,99,104,101,95,102,105,108,101,110,97,109,101,90, - 7,112,121,99,97,99,104,101,90,9,100,111,116,95,99,111, - 117,110,116,114,57,0,0,0,90,9,111,112,116,95,108,101, - 118,101,108,90,13,98,97,115,101,95,102,105,108,101,110,97, - 109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,17,115,111,117,114,99,101,95,102,114,111,109,95,99, - 97,99,104,101,29,1,0,0,115,44,0,0,0,0,9,18, - 1,12,1,18,1,18,1,12,1,9,1,15,1,15,1,12, - 1,9,1,15,1,12,1,22,1,15,1,9,1,12,1,22, - 1,12,1,9,1,12,1,19,1,114,85,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,164,0,0,0,116,0,0,124,0,0,131,1, - 0,100,1,0,107,2,0,114,22,0,100,2,0,83,124,0, - 0,106,1,0,100,3,0,131,1,0,92,3,0,125,1,0, - 125,2,0,125,3,0,124,1,0,12,115,81,0,124,3,0, - 106,2,0,131,0,0,100,7,0,100,8,0,133,2,0,25, - 100,6,0,107,3,0,114,85,0,124,0,0,83,121,16,0, - 116,3,0,124,0,0,131,1,0,125,4,0,87,110,40,0, - 4,116,4,0,116,5,0,102,2,0,107,10,0,114,143,0, - 1,1,1,124,0,0,100,2,0,100,9,0,133,2,0,25, - 125,4,0,89,110,1,0,88,116,6,0,124,4,0,131,1, - 0,114,160,0,124,4,0,83,124,0,0,83,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,59,0,0, - 0,78,114,58,0,0,0,114,80,0,0,0,114,29,0,0, - 0,90,2,112,121,233,253,255,255,255,233,255,255,255,255,114, - 87,0,0,0,41,7,114,31,0,0,0,114,32,0,0,0, - 218,5,108,111,119,101,114,114,85,0,0,0,114,66,0,0, - 0,114,71,0,0,0,114,44,0,0,0,41,5,218,13,98, - 121,116,101,99,111,100,101,95,112,97,116,104,114,78,0,0, - 0,114,36,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,5,0,0,0,218,15,95, - 103,101,116,95,115,111,117,114,99,101,102,105,108,101,62,1, - 0,0,115,20,0,0,0,0,7,18,1,4,1,24,1,35, - 1,4,1,3,1,16,1,19,1,21,1,114,91,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,92,0,0,0,124,0,0,106,0,0, - 116,1,0,116,2,0,131,1,0,131,1,0,114,59,0,121, - 14,0,116,3,0,124,0,0,131,1,0,83,87,113,88,0, - 4,116,4,0,107,10,0,114,55,0,1,1,1,89,113,88, - 0,88,110,29,0,124,0,0,106,0,0,116,1,0,116,5, - 0,131,1,0,131,1,0,114,84,0,124,0,0,83,100,0, - 0,83,100,0,0,83,41,1,78,41,6,218,8,101,110,100, - 115,119,105,116,104,218,5,116,117,112,108,101,114,84,0,0, - 0,114,79,0,0,0,114,66,0,0,0,114,74,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,5,0,0,0,218,11,95,103,101, - 116,95,99,97,99,104,101,100,81,1,0,0,115,16,0,0, - 0,0,1,21,1,3,1,14,1,13,1,8,1,21,1,4, - 2,114,95,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,60,0,0,0, - 121,19,0,116,0,0,124,0,0,131,1,0,106,1,0,125, - 1,0,87,110,24,0,4,116,2,0,107,10,0,114,45,0, - 1,1,1,100,1,0,125,1,0,89,110,1,0,88,124,1, - 0,100,2,0,79,125,1,0,124,1,0,83,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, - 39,0,0,0,114,41,0,0,0,114,40,0,0,0,41,2, - 114,35,0,0,0,114,42,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,218,10,95,99,97,108,99, - 95,109,111,100,101,93,1,0,0,115,12,0,0,0,0,2, - 3,1,19,1,13,1,11,3,10,1,114,97,0,0,0,218, - 9,118,101,114,98,111,115,105,116,121,114,29,0,0,0,99, - 1,0,0,0,1,0,0,0,3,0,0,0,4,0,0,0, - 71,0,0,0,115,75,0,0,0,116,0,0,106,1,0,106, - 2,0,124,1,0,107,5,0,114,71,0,124,0,0,106,3, - 0,100,6,0,131,1,0,115,43,0,100,3,0,124,0,0, - 23,125,0,0,116,4,0,124,0,0,106,5,0,124,2,0, - 140,0,0,100,4,0,116,0,0,106,6,0,131,1,1,1, - 100,5,0,83,41,7,122,61,80,114,105,110,116,32,116,104, - 101,32,109,101,115,115,97,103,101,32,116,111,32,115,116,100, - 101,114,114,32,105,102,32,45,118,47,80,89,84,72,79,78, - 86,69,82,66,79,83,69,32,105,115,32,116,117,114,110,101, - 100,32,111,110,46,250,1,35,250,7,105,109,112,111,114,116, - 32,122,2,35,32,114,54,0,0,0,78,41,2,114,99,0, - 0,0,114,100,0,0,0,41,7,114,7,0,0,0,114,67, - 0,0,0,218,7,118,101,114,98,111,115,101,114,9,0,0, - 0,218,5,112,114,105,110,116,114,47,0,0,0,218,6,115, - 116,100,101,114,114,41,3,114,75,0,0,0,114,98,0,0, - 0,218,4,97,114,103,115,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,218,16,95,118,101,114,98,111,115,101, - 95,109,101,115,115,97,103,101,105,1,0,0,115,8,0,0, - 0,0,2,18,1,15,1,10,1,114,105,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,84,0,0,0,100,1,0,135,0,0,102,1, - 0,100,2,0,100,3,0,134,1,0,125,1,0,121,13,0, - 116,0,0,106,1,0,125,2,0,87,110,30,0,4,116,2, - 0,107,10,0,114,66,0,1,1,1,100,4,0,100,5,0, - 132,0,0,125,2,0,89,110,1,0,88,124,2,0,124,1, - 0,136,0,0,131,2,0,1,124,1,0,83,41,6,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,5,0,0,0,31,0, - 0,0,115,80,0,0,0,124,1,0,100,0,0,107,8,0, - 114,24,0,124,0,0,106,0,0,125,1,0,110,37,0,124, - 0,0,106,0,0,124,1,0,107,3,0,114,61,0,116,1, - 0,100,1,0,124,1,0,22,100,2,0,124,1,0,131,1, - 1,130,1,0,136,0,0,124,0,0,124,1,0,124,2,0, - 124,3,0,142,2,0,83,41,3,78,122,23,108,111,97,100, - 101,114,32,99,97,110,110,111,116,32,104,97,110,100,108,101, - 32,37,115,218,4,110,97,109,101,41,2,114,106,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,106,0,0,0,114,104,0,0,0,90, - 6,107,119,97,114,103,115,41,1,218,6,109,101,116,104,111, - 100,114,4,0,0,0,114,5,0,0,0,218,19,95,99,104, - 101,99,107,95,110,97,109,101,95,119,114,97,112,112,101,114, - 121,1,0,0,115,10,0,0,0,0,1,12,1,12,1,15, - 1,22,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,92,0,0,0,120,66,0,100,1,0,100,2,0, - 100,3,0,100,4,0,103,4,0,68,93,46,0,125,2,0, - 116,0,0,124,1,0,124,2,0,131,2,0,114,19,0,116, - 1,0,124,0,0,124,2,0,116,2,0,124,1,0,124,2, - 0,131,2,0,131,3,0,1,113,19,0,87,124,0,0,106, - 3,0,106,4,0,124,1,0,106,3,0,131,1,0,1,100, - 0,0,83,41,5,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,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,52, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,5,95,119,114,97,112,131,1,0,0,115,8,0, - 0,0,0,1,25,1,15,1,29,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,3,218,10,95,98,111,111,116,115, - 116,114,97,112,114,120,0,0,0,218,9,78,97,109,101,69, - 114,114,111,114,41,3,114,109,0,0,0,114,110,0,0,0, - 114,120,0,0,0,114,4,0,0,0,41,1,114,109,0,0, - 0,114,5,0,0,0,218,11,95,99,104,101,99,107,95,110, - 97,109,101,113,1,0,0,115,14,0,0,0,0,8,21,6, - 3,1,13,1,13,2,17,5,13,1,114,123,0,0,0,99, - 2,0,0,0,0,0,0,0,5,0,0,0,4,0,0,0, - 67,0,0,0,115,84,0,0,0,124,0,0,106,0,0,124, - 1,0,131,1,0,92,2,0,125,2,0,125,3,0,124,2, - 0,100,1,0,107,8,0,114,80,0,116,1,0,124,3,0, - 131,1,0,114,80,0,100,2,0,125,4,0,116,2,0,106, - 3,0,124,4,0,106,4,0,124,3,0,100,3,0,25,131, - 1,0,116,5,0,131,2,0,1,124,2,0,83,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,59,0,0,0, - 41,6,218,11,102,105,110,100,95,108,111,97,100,101,114,114, - 31,0,0,0,114,60,0,0,0,114,61,0,0,0,114,47, - 0,0,0,218,13,73,109,112,111,114,116,87,97,114,110,105, - 110,103,41,5,114,108,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,5,0,0,0,218,17,95,102,105,110,100, - 95,109,111,100,117,108,101,95,115,104,105,109,140,1,0,0, - 115,10,0,0,0,0,10,21,1,24,1,6,1,29,1,114, - 130,0,0,0,99,2,0,0,0,0,0,0,0,4,0,0, - 0,3,0,0,0,67,0,0,0,115,87,0,0,0,116,0, - 0,124,1,0,124,0,0,131,2,0,125,2,0,124,1,0, - 116,1,0,106,2,0,107,6,0,114,70,0,116,1,0,106, - 2,0,124,1,0,25,125,3,0,116,3,0,106,4,0,124, - 2,0,124,3,0,131,2,0,1,116,1,0,106,2,0,124, - 1,0,25,83,116,3,0,106,5,0,124,2,0,131,1,0, - 83,100,1,0,83,41,2,122,128,76,111,97,100,32,116,104, - 101,32,115,112,101,99,105,102,105,101,100,32,109,111,100,117, - 108,101,32,105,110,116,111,32,115,121,115,46,109,111,100,117, - 108,101,115,32,97,110,100,32,114,101,116,117,114,110,32,105, - 116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46,101, - 120,101,99,95,109,111,100,117,108,101,32,105,110,115,116,101, - 97,100,46,10,10,32,32,32,32,78,41,6,218,16,115,112, - 101,99,95,102,114,111,109,95,108,111,97,100,101,114,114,7, - 0,0,0,218,7,109,111,100,117,108,101,115,114,121,0,0, - 0,90,5,95,101,120,101,99,90,5,95,108,111,97,100,41, - 4,114,108,0,0,0,114,126,0,0,0,218,4,115,112,101, - 99,218,6,109,111,100,117,108,101,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,17,95,108,111,97,100,95, - 109,111,100,117,108,101,95,115,104,105,109,158,1,0,0,115, - 12,0,0,0,0,6,15,1,15,1,13,1,16,1,11,2, - 114,135,0,0,0,99,4,0,0,0,0,0,0,0,11,0, - 0,0,19,0,0,0,67,0,0,0,115,228,1,0,0,105, - 0,0,125,4,0,124,2,0,100,1,0,107,9,0,114,31, - 0,124,2,0,124,4,0,100,2,0,60,110,6,0,100,3, - 0,125,2,0,124,3,0,100,1,0,107,9,0,114,59,0, - 124,3,0,124,4,0,100,4,0,60,124,0,0,100,1,0, - 100,5,0,133,2,0,25,125,5,0,124,0,0,100,5,0, - 100,6,0,133,2,0,25,125,6,0,124,0,0,100,6,0, - 100,7,0,133,2,0,25,125,7,0,124,5,0,116,0,0, - 107,3,0,114,165,0,100,8,0,106,1,0,124,2,0,124, - 5,0,131,2,0,125,8,0,116,2,0,124,8,0,131,1, - 0,1,116,3,0,124,8,0,124,4,0,141,1,0,130,1, - 0,110,113,0,116,4,0,124,6,0,131,1,0,100,5,0, - 107,3,0,114,223,0,100,9,0,106,1,0,124,2,0,131, - 1,0,125,8,0,116,2,0,124,8,0,131,1,0,1,116, - 5,0,124,8,0,131,1,0,130,1,0,110,55,0,116,4, - 0,124,7,0,131,1,0,100,5,0,107,3,0,114,22,1, - 100,10,0,106,1,0,124,2,0,131,1,0,125,8,0,116, - 2,0,124,8,0,131,1,0,1,116,5,0,124,8,0,131, - 1,0,130,1,0,124,1,0,100,1,0,107,9,0,114,214, - 1,121,20,0,116,6,0,124,1,0,100,11,0,25,131,1, - 0,125,9,0,87,110,18,0,4,116,7,0,107,10,0,114, - 74,1,1,1,1,89,110,59,0,88,116,8,0,124,6,0, - 131,1,0,124,9,0,107,3,0,114,133,1,100,12,0,106, - 1,0,124,2,0,131,1,0,125,8,0,116,2,0,124,8, - 0,131,1,0,1,116,3,0,124,8,0,124,4,0,141,1, - 0,130,1,0,121,18,0,124,1,0,100,13,0,25,100,14, - 0,64,125,10,0,87,110,18,0,4,116,7,0,107,10,0, - 114,171,1,1,1,1,89,110,43,0,88,116,8,0,124,7, - 0,131,1,0,124,10,0,107,3,0,114,214,1,116,3,0, - 100,12,0,106,1,0,124,2,0,131,1,0,124,4,0,141, - 1,0,130,1,0,124,0,0,100,7,0,100,1,0,133,2, - 0,25,83,41,15,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,106,0,0,0,122,10,60,98,121,116, - 101,99,111,100,101,62,114,35,0,0,0,114,12,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,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,9,218, - 12,77,65,71,73,67,95,78,85,77,66,69,82,114,47,0, - 0,0,114,105,0,0,0,114,107,0,0,0,114,31,0,0, - 0,218,8,69,79,70,69,114,114,111,114,114,14,0,0,0, - 218,8,75,101,121,69,114,114,111,114,114,19,0,0,0,41, - 11,114,53,0,0,0,218,12,115,111,117,114,99,101,95,115, - 116,97,116,115,114,106,0,0,0,114,35,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,75,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,5,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,173,1,0,0,115,76,0,0,0,0,11, - 6,1,12,1,13,3,6,1,12,1,10,1,16,1,16,1, - 16,1,12,1,18,1,10,1,18,1,18,1,15,1,10,1, - 15,1,18,1,15,1,10,1,12,1,12,1,3,1,20,1, - 13,1,5,2,18,1,15,1,10,1,15,1,3,1,18,1, - 13,1,5,2,18,1,15,1,9,1,114,146,0,0,0,99, - 4,0,0,0,0,0,0,0,5,0,0,0,6,0,0,0, - 67,0,0,0,115,112,0,0,0,116,0,0,106,1,0,124, - 0,0,131,1,0,125,4,0,116,2,0,124,4,0,116,3, - 0,131,2,0,114,75,0,116,4,0,100,1,0,124,2,0, - 131,2,0,1,124,3,0,100,2,0,107,9,0,114,71,0, - 116,5,0,106,6,0,124,4,0,124,3,0,131,2,0,1, - 124,4,0,83,116,7,0,100,3,0,106,8,0,124,2,0, - 131,1,0,100,4,0,124,1,0,100,5,0,124,2,0,131, - 1,2,130,1,0,100,2,0,83,41,6,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,114,106,0,0,0,114, - 35,0,0,0,41,9,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,105, - 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,107,0,0,0, - 114,47,0,0,0,41,5,114,53,0,0,0,114,106,0,0, - 0,114,89,0,0,0,114,90,0,0,0,218,4,99,111,100, - 101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,17,95,99,111,109,112,105,108,101,95,98,121,116,101,99, - 111,100,101,228,1,0,0,115,16,0,0,0,0,2,15,1, - 15,1,13,1,12,1,16,1,4,2,18,1,114,152,0,0, - 0,114,59,0,0,0,99,3,0,0,0,0,0,0,0,4, - 0,0,0,3,0,0,0,67,0,0,0,115,76,0,0,0, - 116,0,0,116,1,0,131,1,0,125,3,0,124,3,0,106, - 2,0,116,3,0,124,1,0,131,1,0,131,1,0,1,124, - 3,0,106,2,0,116,3,0,124,2,0,131,1,0,131,1, - 0,1,124,3,0,106,2,0,116,4,0,106,5,0,124,0, - 0,131,1,0,131,1,0,1,124,3,0,83,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,140,0, - 0,0,218,6,101,120,116,101,110,100,114,17,0,0,0,114, - 147,0,0,0,90,5,100,117,109,112,115,41,4,114,151,0, - 0,0,114,138,0,0,0,114,145,0,0,0,114,53,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,17,95,99,111,100,101,95,116,111,95,98,121,116,101,99, - 111,100,101,240,1,0,0,115,10,0,0,0,0,3,12,1, - 19,1,19,1,22,1,114,155,0,0,0,99,1,0,0,0, - 0,0,0,0,5,0,0,0,4,0,0,0,67,0,0,0, - 115,89,0,0,0,100,1,0,100,2,0,108,0,0,125,1, - 0,116,1,0,106,2,0,124,0,0,131,1,0,106,3,0, - 125,2,0,124,1,0,106,4,0,124,2,0,131,1,0,125, - 3,0,116,1,0,106,5,0,100,2,0,100,3,0,131,2, - 0,125,4,0,124,4,0,106,6,0,124,0,0,106,6,0, - 124,3,0,100,1,0,25,131,1,0,131,1,0,83,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,59,0,0,0, - 78,84,41,7,218,8,116,111,107,101,110,105,122,101,114,49, - 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,156,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,5,0,0,0, - 218,13,100,101,99,111,100,101,95,115,111,117,114,99,101,250, - 1,0,0,115,10,0,0,0,0,5,12,1,18,1,15,1, - 18,1,114,160,0,0,0,218,6,111,114,105,103,105,110,218, - 10,105,115,95,112,97,99,107,97,103,101,99,2,0,0,0, - 2,0,0,0,5,0,0,0,15,0,0,0,67,0,0,0, - 115,193,0,0,0,116,0,0,124,1,0,100,1,0,131,2, - 0,114,83,0,124,3,0,100,2,0,107,8,0,114,43,0, - 116,1,0,124,0,0,100,3,0,124,1,0,131,1,1,83, - 124,3,0,114,55,0,103,0,0,110,3,0,100,2,0,125, - 4,0,116,1,0,124,0,0,100,3,0,124,1,0,100,4, - 0,124,4,0,131,1,2,83,124,3,0,100,2,0,107,8, - 0,114,165,0,116,0,0,124,1,0,100,5,0,131,2,0, - 114,159,0,121,19,0,124,1,0,106,2,0,124,0,0,131, - 1,0,125,3,0,87,113,165,0,4,116,3,0,107,10,0, - 114,155,0,1,1,1,100,2,0,125,3,0,89,113,165,0, - 88,110,6,0,100,6,0,125,3,0,116,4,0,106,5,0, - 124,0,0,124,1,0,100,7,0,124,2,0,100,5,0,124, - 3,0,131,2,2,83,41,8,122,53,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,118,97,114,105,111,117,115,32, - 108,111,97,100,101,114,32,109,101,116,104,111,100,115,46,218, - 12,103,101,116,95,102,105,108,101,110,97,109,101,78,114,127, - 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,114, - 162,0,0,0,70,114,161,0,0,0,41,6,114,115,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,114,162,0,0,0,114, - 107,0,0,0,114,121,0,0,0,218,10,77,111,100,117,108, - 101,83,112,101,99,41,5,114,106,0,0,0,114,127,0,0, - 0,114,161,0,0,0,114,162,0,0,0,90,6,115,101,97, - 114,99,104,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,131,0,0,0,8,2,0,0,115,28,0,0,0, - 0,2,15,1,12,1,16,1,18,1,15,1,7,2,12,1, - 15,1,3,1,19,1,13,1,14,3,6,2,114,131,0,0, - 0,114,127,0,0,0,114,164,0,0,0,99,2,0,0,0, - 2,0,0,0,9,0,0,0,19,0,0,0,67,0,0,0, - 115,89,1,0,0,124,1,0,100,1,0,107,8,0,114,73, - 0,100,2,0,125,1,0,116,0,0,124,2,0,100,3,0, - 131,2,0,114,73,0,121,19,0,124,2,0,106,1,0,124, - 0,0,131,1,0,125,1,0,87,110,18,0,4,116,2,0, - 107,10,0,114,72,0,1,1,1,89,110,1,0,88,116,3, - 0,106,4,0,124,0,0,124,2,0,100,4,0,124,1,0, - 131,2,1,125,4,0,100,5,0,124,4,0,95,5,0,124, - 2,0,100,1,0,107,8,0,114,194,0,120,73,0,116,6, - 0,131,0,0,68,93,58,0,92,2,0,125,5,0,125,6, - 0,124,1,0,106,7,0,116,8,0,124,6,0,131,1,0, - 131,1,0,114,128,0,124,5,0,124,0,0,124,1,0,131, - 2,0,125,2,0,124,2,0,124,4,0,95,9,0,80,113, - 128,0,87,100,1,0,83,124,3,0,116,10,0,107,8,0, - 114,23,1,116,0,0,124,2,0,100,6,0,131,2,0,114, - 32,1,121,19,0,124,2,0,106,11,0,124,0,0,131,1, - 0,125,7,0,87,110,18,0,4,116,2,0,107,10,0,114, - 4,1,1,1,1,89,113,32,1,88,124,7,0,114,32,1, - 103,0,0,124,4,0,95,12,0,110,9,0,124,3,0,124, - 4,0,95,12,0,124,4,0,106,12,0,103,0,0,107,2, - 0,114,85,1,124,1,0,114,85,1,116,13,0,124,1,0, - 131,1,0,100,7,0,25,125,8,0,124,4,0,106,12,0, - 106,14,0,124,8,0,131,1,0,1,124,4,0,83,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,114,163, - 0,0,0,114,161,0,0,0,84,114,162,0,0,0,114,59, - 0,0,0,41,15,114,115,0,0,0,114,163,0,0,0,114, - 107,0,0,0,114,121,0,0,0,114,166,0,0,0,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,92,0,0,0,114, - 93,0,0,0,114,127,0,0,0,218,9,95,80,79,80,85, - 76,65,84,69,114,162,0,0,0,114,164,0,0,0,114,38, - 0,0,0,218,6,97,112,112,101,110,100,41,9,114,106,0, - 0,0,90,8,108,111,99,97,116,105,111,110,114,127,0,0, - 0,114,164,0,0,0,114,133,0,0,0,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,162,0,0,0,90,7,100,105,114,110,97,109, - 101,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,165,0,0,0,33,2,0,0,115,60,0,0,0,0,12, - 12,4,6,1,15,2,3,1,19,1,13,1,5,8,24,1, - 9,3,12,1,22,1,21,1,15,1,9,1,5,2,4,3, - 12,2,15,1,3,1,19,1,13,1,5,2,6,1,12,2, - 9,1,15,1,6,1,16,1,16,2,114,165,0,0,0,99, - 0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0, - 64,0,0,0,115,121,0,0,0,101,0,0,90,1,0,100, - 0,0,90,2,0,100,1,0,90,3,0,100,2,0,90,4, - 0,100,3,0,90,5,0,100,4,0,90,6,0,101,7,0, - 100,5,0,100,6,0,132,0,0,131,1,0,90,8,0,101, - 7,0,100,7,0,100,8,0,132,0,0,131,1,0,90,9, - 0,101,7,0,100,9,0,100,9,0,100,10,0,100,11,0, - 132,2,0,131,1,0,90,10,0,101,7,0,100,9,0,100, - 12,0,100,13,0,132,1,0,131,1,0,90,11,0,100,9, - 0,83,41,14,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,67,0,0,0,121,23,0,116,0,0,106,1,0,116, - 0,0,106,2,0,124,1,0,131,2,0,83,87,110,37,0, - 4,116,3,0,107,10,0,114,62,0,1,1,1,116,0,0, - 106,1,0,116,0,0,106,4,0,124,1,0,131,2,0,83, - 89,110,1,0,88,100,0,0,83,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,40,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,218,3,107,101,121,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,14,95,111,112,101,110,95,114, - 101,103,105,115,116,114,121,111,2,0,0,115,8,0,0,0, - 0,2,3,1,23,1,13,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,16,0,0,0,67, - 0,0,0,115,142,0,0,0,124,0,0,106,0,0,114,21, - 0,124,0,0,106,1,0,125,2,0,110,9,0,124,0,0, - 106,2,0,125,2,0,124,2,0,106,3,0,100,1,0,124, - 1,0,100,2,0,116,4,0,106,5,0,100,0,0,100,3, - 0,133,2,0,25,131,0,2,125,3,0,121,46,0,124,0, - 0,106,6,0,124,3,0,131,1,0,143,25,0,125,4,0, - 116,7,0,106,8,0,124,4,0,100,4,0,131,2,0,125, - 5,0,87,100,0,0,81,88,87,110,22,0,4,116,9,0, - 107,10,0,114,137,0,1,1,1,100,0,0,83,89,110,1, - 0,88,124,5,0,83,41,5,78,114,126,0,0,0,90,11, - 115,121,115,95,118,101,114,115,105,111,110,114,80,0,0,0, - 114,30,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,47,0,0,0,114,7,0,0,0, - 218,7,118,101,114,115,105,111,110,114,176,0,0,0,114,173, - 0,0,0,90,10,81,117,101,114,121,86,97,108,117,101,114, - 40,0,0,0,41,6,114,174,0,0,0,114,126,0,0,0, - 90,12,114,101,103,105,115,116,114,121,95,107,101,121,114,175, - 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,5,0, - 0,0,218,16,95,115,101,97,114,99,104,95,114,101,103,105, - 115,116,114,121,118,2,0,0,115,22,0,0,0,0,2,9, - 1,12,2,9,1,15,1,22,1,3,1,18,1,28,1,13, - 1,9,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,155,0,0,0,124,0,0,106,0,0,124,1,0,131, - 1,0,125,4,0,124,4,0,100,0,0,107,8,0,114,31, - 0,100,0,0,83,121,14,0,116,1,0,124,4,0,131,1, - 0,1,87,110,22,0,4,116,2,0,107,10,0,114,69,0, - 1,1,1,100,0,0,83,89,110,1,0,88,120,78,0,116, - 3,0,131,0,0,68,93,67,0,92,2,0,125,5,0,125, - 6,0,124,4,0,106,4,0,116,5,0,124,6,0,131,1, - 0,131,1,0,114,80,0,116,6,0,124,1,0,124,5,0, - 124,1,0,124,4,0,131,2,0,100,1,0,124,4,0,131, - 2,1,125,7,0,124,7,0,83,113,80,0,87,100,0,0, - 83,41,2,78,114,161,0,0,0,41,7,114,182,0,0,0, - 114,39,0,0,0,114,40,0,0,0,114,167,0,0,0,114, - 92,0,0,0,114,93,0,0,0,114,131,0,0,0,41,8, - 114,174,0,0,0,114,126,0,0,0,114,35,0,0,0,218, - 6,116,97,114,103,101,116,114,181,0,0,0,114,127,0,0, - 0,114,171,0,0,0,114,133,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,218,9,102,105,110,100, - 95,115,112,101,99,133,2,0,0,115,24,0,0,0,0,2, - 15,1,12,1,4,1,3,1,14,1,13,1,9,1,22,1, - 21,1,21,1,9,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,3,0,0,0,67,0,0,0,115,45,0,0, - 0,124,0,0,106,0,0,124,1,0,124,2,0,131,2,0, - 125,3,0,124,3,0,100,1,0,107,9,0,114,37,0,124, - 3,0,106,1,0,83,100,1,0,83,100,1,0,83,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, + 111,110,101,32,116,104,101,110,32,78,111,116,73,109,112,108, + 101,109,101,110,116,101,100,69,114,114,111,114,32,105,115,32, + 114,97,105,115,101,100,46,10,10,32,32,32,32,78,122,36, + 115,121,115,46,105,109,112,108,101,109,101,110,116,97,116,105, + 111,110,46,99,97,99,104,101,95,116,97,103,32,105,115,32, + 78,111,110,101,122,37,123,125,32,110,111,116,32,98,111,116, + 116,111,109,45,108,101,118,101,108,32,100,105,114,101,99,116, + 111,114,121,32,105,110,32,123,33,114,125,114,58,0,0,0, + 114,56,0,0,0,233,3,0,0,0,122,33,101,120,112,101, + 99,116,101,100,32,111,110,108,121,32,50,32,111,114,32,51, + 32,100,111,116,115,32,105,110,32,123,33,114,125,122,57,111, + 112,116,105,109,105,122,97,116,105,111,110,32,112,111,114,116, + 105,111,110,32,111,102,32,102,105,108,101,110,97,109,101,32, + 100,111,101,115,32,110,111,116,32,115,116,97,114,116,32,119, + 105,116,104,32,123,33,114,125,122,52,111,112,116,105,109,105, + 122,97,116,105,111,110,32,108,101,118,101,108,32,123,33,114, + 125,32,105,115,32,110,111,116,32,97,110,32,97,108,112,104, + 97,110,117,109,101,114,105,99,32,118,97,108,117,101,114,59, + 0,0,0,62,2,0,0,0,114,56,0,0,0,114,80,0, + 0,0,233,254,255,255,255,41,17,114,7,0,0,0,114,64, + 0,0,0,114,65,0,0,0,114,66,0,0,0,114,38,0, + 0,0,114,73,0,0,0,114,71,0,0,0,114,47,0,0, + 0,218,5,99,111,117,110,116,114,34,0,0,0,114,9,0, + 0,0,114,72,0,0,0,114,31,0,0,0,114,70,0,0, + 0,218,9,112,97,114,116,105,116,105,111,110,114,28,0,0, + 0,218,15,83,79,85,82,67,69,95,83,85,70,70,73,88, + 69,83,41,8,114,35,0,0,0,114,76,0,0,0,90,16, + 112,121,99,97,99,104,101,95,102,105,108,101,110,97,109,101, + 90,7,112,121,99,97,99,104,101,90,9,100,111,116,95,99, + 111,117,110,116,114,57,0,0,0,90,9,111,112,116,95,108, + 101,118,101,108,90,13,98,97,115,101,95,102,105,108,101,110, + 97,109,101,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,17,115,111,117,114,99,101,95,102,114,111,109,95, + 99,97,99,104,101,29,1,0,0,115,44,0,0,0,0,9, + 18,1,12,1,18,1,18,1,12,1,9,1,15,1,15,1, + 12,1,9,1,15,1,12,1,22,1,15,1,9,1,12,1, + 22,1,12,1,9,1,12,1,19,1,114,85,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,164,0,0,0,116,0,0,124,0,0,131, + 1,0,100,1,0,107,2,0,114,22,0,100,2,0,83,124, + 0,0,106,1,0,100,3,0,131,1,0,92,3,0,125,1, + 0,125,2,0,125,3,0,124,1,0,12,115,81,0,124,3, + 0,106,2,0,131,0,0,100,7,0,100,8,0,133,2,0, + 25,100,6,0,107,3,0,114,85,0,124,0,0,83,121,16, + 0,116,3,0,124,0,0,131,1,0,125,4,0,87,110,40, + 0,4,116,4,0,116,5,0,102,2,0,107,10,0,114,143, + 0,1,1,1,124,0,0,100,2,0,100,9,0,133,2,0, + 25,125,4,0,89,110,1,0,88,116,6,0,124,4,0,131, + 1,0,114,160,0,124,4,0,83,124,0,0,83,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,59,0, + 0,0,78,114,58,0,0,0,114,80,0,0,0,114,29,0, + 0,0,90,2,112,121,233,253,255,255,255,233,255,255,255,255, + 114,87,0,0,0,41,7,114,31,0,0,0,114,32,0,0, + 0,218,5,108,111,119,101,114,114,85,0,0,0,114,66,0, + 0,0,114,71,0,0,0,114,44,0,0,0,41,5,218,13, + 98,121,116,101,99,111,100,101,95,112,97,116,104,114,78,0, + 0,0,114,36,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,5,0,0,0,218,15, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,62, + 1,0,0,115,20,0,0,0,0,7,18,1,4,1,24,1, + 35,1,4,1,3,1,16,1,19,1,21,1,114,91,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,92,0,0,0,124,0,0,106,0, + 0,116,1,0,116,2,0,131,1,0,131,1,0,114,59,0, + 121,14,0,116,3,0,124,0,0,131,1,0,83,87,113,88, + 0,4,116,4,0,107,10,0,114,55,0,1,1,1,89,113, + 88,0,88,110,29,0,124,0,0,106,0,0,116,1,0,116, + 5,0,131,1,0,131,1,0,114,84,0,124,0,0,83,100, + 0,0,83,100,0,0,83,41,1,78,41,6,218,8,101,110, + 100,115,119,105,116,104,218,5,116,117,112,108,101,114,84,0, + 0,0,114,79,0,0,0,114,66,0,0,0,114,74,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,5,0,0,0,218,11,95,103, + 101,116,95,99,97,99,104,101,100,81,1,0,0,115,16,0, + 0,0,0,1,21,1,3,1,14,1,13,1,8,1,21,1, + 4,2,114,95,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,60,0,0, + 0,121,19,0,116,0,0,124,0,0,131,1,0,106,1,0, + 125,1,0,87,110,24,0,4,116,2,0,107,10,0,114,45, + 0,1,1,1,100,1,0,125,1,0,89,110,1,0,88,124, + 1,0,100,2,0,79,125,1,0,124,1,0,83,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,39,0,0,0,114,41,0,0,0,114,40,0,0,0,41, + 2,114,35,0,0,0,114,42,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,10,95,99,97,108, + 99,95,109,111,100,101,93,1,0,0,115,12,0,0,0,0, + 2,3,1,19,1,13,1,11,3,10,1,114,97,0,0,0, + 218,9,118,101,114,98,111,115,105,116,121,114,29,0,0,0, + 99,1,0,0,0,1,0,0,0,3,0,0,0,4,0,0, + 0,71,0,0,0,115,75,0,0,0,116,0,0,106,1,0, + 106,2,0,124,1,0,107,5,0,114,71,0,124,0,0,106, + 3,0,100,6,0,131,1,0,115,43,0,100,3,0,124,0, + 0,23,125,0,0,116,4,0,124,0,0,106,5,0,124,2, + 0,140,0,0,100,4,0,116,0,0,106,6,0,131,1,1, + 1,100,5,0,83,41,7,122,61,80,114,105,110,116,32,116, + 104,101,32,109,101,115,115,97,103,101,32,116,111,32,115,116, + 100,101,114,114,32,105,102,32,45,118,47,80,89,84,72,79, + 78,86,69,82,66,79,83,69,32,105,115,32,116,117,114,110, + 101,100,32,111,110,46,250,1,35,250,7,105,109,112,111,114, + 116,32,122,2,35,32,114,54,0,0,0,78,41,2,114,99, + 0,0,0,114,100,0,0,0,41,7,114,7,0,0,0,114, + 67,0,0,0,218,7,118,101,114,98,111,115,101,114,9,0, + 0,0,218,5,112,114,105,110,116,114,47,0,0,0,218,6, + 115,116,100,101,114,114,41,3,114,75,0,0,0,114,98,0, + 0,0,218,4,97,114,103,115,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,218,16,95,118,101,114,98,111,115, + 101,95,109,101,115,115,97,103,101,105,1,0,0,115,8,0, + 0,0,0,2,18,1,15,1,10,1,114,105,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,84,0,0,0,100,1,0,135,0,0,102, + 1,0,100,2,0,100,3,0,134,1,0,125,1,0,121,13, + 0,116,0,0,106,1,0,125,2,0,87,110,30,0,4,116, + 2,0,107,10,0,114,66,0,1,1,1,100,4,0,100,5, + 0,132,0,0,125,2,0,89,110,1,0,88,124,2,0,124, + 1,0,136,0,0,131,2,0,1,124,1,0,83,41,6,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,5,0,0,0,31, + 0,0,0,115,80,0,0,0,124,1,0,100,0,0,107,8, + 0,114,24,0,124,0,0,106,0,0,125,1,0,110,37,0, + 124,0,0,106,0,0,124,1,0,107,3,0,114,61,0,116, + 1,0,100,1,0,124,1,0,22,100,2,0,124,1,0,131, + 1,1,130,1,0,136,0,0,124,0,0,124,1,0,124,2, + 0,124,3,0,142,2,0,83,41,3,78,122,23,108,111,97, + 100,101,114,32,99,97,110,110,111,116,32,104,97,110,100,108, + 101,32,37,115,218,4,110,97,109,101,41,2,114,106,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,106,0,0,0,114,104,0,0,0, + 90,6,107,119,97,114,103,115,41,1,218,6,109,101,116,104, + 111,100,114,4,0,0,0,114,5,0,0,0,218,19,95,99, + 104,101,99,107,95,110,97,109,101,95,119,114,97,112,112,101, + 114,121,1,0,0,115,10,0,0,0,0,1,12,1,12,1, + 15,1,22,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,92,0,0,0,120,66,0,100,1,0,100,2, + 0,100,3,0,100,4,0,103,4,0,68,93,46,0,125,2, + 0,116,0,0,124,1,0,124,2,0,131,2,0,114,19,0, + 116,1,0,124,0,0,124,2,0,116,2,0,124,1,0,124, + 2,0,131,2,0,131,3,0,1,113,19,0,87,124,0,0, + 106,3,0,106,4,0,124,1,0,106,3,0,131,1,0,1, + 100,0,0,83,41,5,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,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, + 52,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,218,5,95,119,114,97,112,131,1,0,0,115,8, + 0,0,0,0,1,25,1,15,1,29,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,3,218,10,95,98,111,111,116, + 115,116,114,97,112,114,120,0,0,0,218,9,78,97,109,101, + 69,114,114,111,114,41,3,114,109,0,0,0,114,110,0,0, + 0,114,120,0,0,0,114,4,0,0,0,41,1,114,109,0, + 0,0,114,5,0,0,0,218,11,95,99,104,101,99,107,95, + 110,97,109,101,113,1,0,0,115,14,0,0,0,0,8,21, + 6,3,1,13,1,13,2,17,5,13,1,114,123,0,0,0, + 99,2,0,0,0,0,0,0,0,5,0,0,0,4,0,0, + 0,67,0,0,0,115,84,0,0,0,124,0,0,106,0,0, + 124,1,0,131,1,0,92,2,0,125,2,0,125,3,0,124, + 2,0,100,1,0,107,8,0,114,80,0,116,1,0,124,3, + 0,131,1,0,114,80,0,100,2,0,125,4,0,116,2,0, + 106,3,0,124,4,0,106,4,0,124,3,0,100,3,0,25, + 131,1,0,116,5,0,131,2,0,1,124,2,0,83,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,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,184,0,0,0,114,127,0,0,0,41,4,114,174,0, - 0,0,114,126,0,0,0,114,35,0,0,0,114,133,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,11,102,105,110,100,95,109,111,100,117,108,101,148,2,0, - 0,115,8,0,0,0,0,7,18,1,12,1,7,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,12,114,112,0,0,0,114,111,0,0,0,114,113,0, - 0,0,114,114,0,0,0,114,179,0,0,0,114,178,0,0, - 0,114,177,0,0,0,218,11,99,108,97,115,115,109,101,116, - 104,111,100,114,176,0,0,0,114,182,0,0,0,114,184,0, - 0,0,114,185,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,172,0,0,0, - 99,2,0,0,115,20,0,0,0,12,2,6,3,6,3,6, - 2,6,2,18,7,18,15,3,1,21,14,3,1,114,172,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,64,0,0,0,101,0,0,90, - 1,0,100,0,0,90,2,0,100,1,0,90,3,0,100,2, - 0,100,3,0,132,0,0,90,4,0,100,4,0,100,5,0, - 132,0,0,90,5,0,100,6,0,100,7,0,132,0,0,90, - 6,0,101,7,0,90,8,0,100,8,0,83,41,9,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,3, - 0,0,0,67,0,0,0,115,88,0,0,0,116,0,0,124, - 0,0,106,1,0,124,1,0,131,1,0,131,1,0,100,1, - 0,25,125,2,0,124,2,0,106,2,0,100,2,0,100,1, - 0,131,2,0,100,3,0,25,125,3,0,124,1,0,106,3, - 0,100,2,0,131,1,0,100,4,0,25,125,4,0,124,3, - 0,100,5,0,107,2,0,111,87,0,124,4,0,100,5,0, - 107,3,0,83,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,29,0,0,0,114,58,0,0,0,114, - 59,0,0,0,114,56,0,0,0,218,8,95,95,105,110,105, - 116,95,95,41,4,114,38,0,0,0,114,163,0,0,0,114, - 34,0,0,0,114,32,0,0,0,41,5,114,108,0,0,0, - 114,126,0,0,0,114,94,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,5, - 0,0,0,114,162,0,0,0,167,2,0,0,115,8,0,0, - 0,0,3,25,1,22,1,19,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,0, - 83,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,108,0,0,0,114,133,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,13,99,114,101,97,116,101,95,109,111,100,117,108,101,175, - 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,4,0,0,0,67,0,0,0,115,80,0,0,0,124, - 0,0,106,0,0,124,1,0,106,1,0,131,1,0,125,2, - 0,124,2,0,100,1,0,107,8,0,114,54,0,116,2,0, - 100,2,0,106,3,0,124,1,0,106,1,0,131,1,0,131, - 1,0,130,1,0,116,4,0,106,5,0,116,6,0,124,2, - 0,124,1,0,106,7,0,131,3,0,1,100,1,0,83,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,112,0,0,0,114,107, - 0,0,0,114,47,0,0,0,114,121,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,118, - 0,0,0,41,3,114,108,0,0,0,114,134,0,0,0,114, - 151,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,218,11,101,120,101,99,95,109,111,100,117,108,101, - 178,2,0,0,115,10,0,0,0,0,2,18,1,12,1,9, - 1,15,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,78,41, - 9,114,112,0,0,0,114,111,0,0,0,114,113,0,0,0, - 114,114,0,0,0,114,162,0,0,0,114,189,0,0,0,114, - 193,0,0,0,114,135,0,0,0,218,11,108,111,97,100,95, - 109,111,100,117,108,101,114,4,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,187,0,0,0,162, - 2,0,0,115,10,0,0,0,12,3,6,2,12,8,12,3, - 12,8,114,187,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,0,90,1,0,100,0,0,90,2,0,100,1,0, - 100,2,0,132,0,0,90,3,0,100,3,0,100,4,0,132, - 0,0,90,4,0,100,5,0,100,6,0,132,0,0,90,5, - 0,100,7,0,100,8,0,132,0,0,90,6,0,100,9,0, - 100,10,0,132,0,0,90,7,0,100,11,0,100,18,0,100, - 13,0,100,14,0,132,0,1,90,8,0,100,15,0,100,16, - 0,132,0,0,90,9,0,100,17,0,83,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,10,0,0,0,116,0,0,130,1,0,100,1,0,83,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,73,79,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,218,7,73,79,69,114,114,111, - 114,41,2,114,108,0,0,0,114,35,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,10,112,97, - 116,104,95,109,116,105,109,101,191,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,3,0,0,0,67,0,0, - 0,115,19,0,0,0,124,0,0,106,0,0,124,1,0,131, - 1,0,100,1,0,105,1,0,83,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,73,79,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,138,0,0,0,41, - 1,114,197,0,0,0,41,2,114,108,0,0,0,114,35,0, + 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,59,0,0, + 0,41,6,218,11,102,105,110,100,95,108,111,97,100,101,114, + 114,31,0,0,0,114,60,0,0,0,114,61,0,0,0,114, + 47,0,0,0,218,13,73,109,112,111,114,116,87,97,114,110, + 105,110,103,41,5,114,108,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,5,0,0,0,218,17,95,102,105,110, + 100,95,109,111,100,117,108,101,95,115,104,105,109,140,1,0, + 0,115,10,0,0,0,0,10,21,1,24,1,6,1,29,1, + 114,130,0,0,0,99,2,0,0,0,0,0,0,0,4,0, + 0,0,3,0,0,0,67,0,0,0,115,87,0,0,0,116, + 0,0,124,1,0,124,0,0,131,2,0,125,2,0,124,1, + 0,116,1,0,106,2,0,107,6,0,114,70,0,116,1,0, + 106,2,0,124,1,0,25,125,3,0,116,3,0,106,4,0, + 124,2,0,124,3,0,131,2,0,1,116,1,0,106,2,0, + 124,1,0,25,83,116,3,0,106,5,0,124,2,0,131,1, + 0,83,100,1,0,83,41,2,122,128,76,111,97,100,32,116, + 104,101,32,115,112,101,99,105,102,105,101,100,32,109,111,100, + 117,108,101,32,105,110,116,111,32,115,121,115,46,109,111,100, + 117,108,101,115,32,97,110,100,32,114,101,116,117,114,110,32, + 105,116,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,46,32,32,85,115,101,32,108,111,97,100,101,114,46, + 101,120,101,99,95,109,111,100,117,108,101,32,105,110,115,116, + 101,97,100,46,10,10,32,32,32,32,78,41,6,218,16,115, + 112,101,99,95,102,114,111,109,95,108,111,97,100,101,114,114, + 7,0,0,0,218,7,109,111,100,117,108,101,115,114,121,0, + 0,0,90,5,95,101,120,101,99,90,5,95,108,111,97,100, + 41,4,114,108,0,0,0,114,126,0,0,0,218,4,115,112, + 101,99,218,6,109,111,100,117,108,101,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,218,17,95,108,111,97,100, + 95,109,111,100,117,108,101,95,115,104,105,109,158,1,0,0, + 115,12,0,0,0,0,6,15,1,15,1,13,1,16,1,11, + 2,114,135,0,0,0,99,4,0,0,0,0,0,0,0,11, + 0,0,0,19,0,0,0,67,0,0,0,115,228,1,0,0, + 105,0,0,125,4,0,124,2,0,100,1,0,107,9,0,114, + 31,0,124,2,0,124,4,0,100,2,0,60,110,6,0,100, + 3,0,125,2,0,124,3,0,100,1,0,107,9,0,114,59, + 0,124,3,0,124,4,0,100,4,0,60,124,0,0,100,1, + 0,100,5,0,133,2,0,25,125,5,0,124,0,0,100,5, + 0,100,6,0,133,2,0,25,125,6,0,124,0,0,100,6, + 0,100,7,0,133,2,0,25,125,7,0,124,5,0,116,0, + 0,107,3,0,114,165,0,100,8,0,106,1,0,124,2,0, + 124,5,0,131,2,0,125,8,0,116,2,0,124,8,0,131, + 1,0,1,116,3,0,124,8,0,124,4,0,141,1,0,130, + 1,0,110,113,0,116,4,0,124,6,0,131,1,0,100,5, + 0,107,3,0,114,223,0,100,9,0,106,1,0,124,2,0, + 131,1,0,125,8,0,116,2,0,124,8,0,131,1,0,1, + 116,5,0,124,8,0,131,1,0,130,1,0,110,55,0,116, + 4,0,124,7,0,131,1,0,100,5,0,107,3,0,114,22, + 1,100,10,0,106,1,0,124,2,0,131,1,0,125,8,0, + 116,2,0,124,8,0,131,1,0,1,116,5,0,124,8,0, + 131,1,0,130,1,0,124,1,0,100,1,0,107,9,0,114, + 214,1,121,20,0,116,6,0,124,1,0,100,11,0,25,131, + 1,0,125,9,0,87,110,18,0,4,116,7,0,107,10,0, + 114,74,1,1,1,1,89,110,59,0,88,116,8,0,124,6, + 0,131,1,0,124,9,0,107,3,0,114,133,1,100,12,0, + 106,1,0,124,2,0,131,1,0,125,8,0,116,2,0,124, + 8,0,131,1,0,1,116,3,0,124,8,0,124,4,0,141, + 1,0,130,1,0,121,18,0,124,1,0,100,13,0,25,100, + 14,0,64,125,10,0,87,110,18,0,4,116,7,0,107,10, + 0,114,171,1,1,1,1,89,110,43,0,88,116,8,0,124, + 7,0,131,1,0,124,10,0,107,3,0,114,214,1,116,3, + 0,100,12,0,106,1,0,124,2,0,131,1,0,124,4,0, + 141,1,0,130,1,0,124,0,0,100,7,0,100,1,0,133, + 2,0,25,83,41,15,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,106,0,0,0,122,10,60,98,121, + 116,101,99,111,100,101,62,114,35,0,0,0,114,12,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,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,9, + 218,12,77,65,71,73,67,95,78,85,77,66,69,82,114,47, + 0,0,0,114,105,0,0,0,114,107,0,0,0,114,31,0, + 0,0,218,8,69,79,70,69,114,114,111,114,114,14,0,0, + 0,218,8,75,101,121,69,114,114,111,114,114,19,0,0,0, + 41,11,114,53,0,0,0,218,12,115,111,117,114,99,101,95, + 115,116,97,116,115,114,106,0,0,0,114,35,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,75,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,5,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,173,1,0,0,115,76,0,0,0,0, + 11,6,1,12,1,13,3,6,1,12,1,10,1,16,1,16, + 1,16,1,12,1,18,1,10,1,18,1,18,1,15,1,10, + 1,15,1,18,1,15,1,10,1,12,1,12,1,3,1,20, + 1,13,1,5,2,18,1,15,1,10,1,15,1,3,1,18, + 1,13,1,5,2,18,1,15,1,9,1,114,146,0,0,0, + 99,4,0,0,0,0,0,0,0,5,0,0,0,6,0,0, + 0,67,0,0,0,115,112,0,0,0,116,0,0,106,1,0, + 124,0,0,131,1,0,125,4,0,116,2,0,124,4,0,116, + 3,0,131,2,0,114,75,0,116,4,0,100,1,0,124,2, + 0,131,2,0,1,124,3,0,100,2,0,107,9,0,114,71, + 0,116,5,0,106,6,0,124,4,0,124,3,0,131,2,0, + 1,124,4,0,83,116,7,0,100,3,0,106,8,0,124,2, + 0,131,1,0,100,4,0,124,1,0,100,5,0,124,2,0, + 131,1,2,130,1,0,100,2,0,83,41,6,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,114,106,0,0,0, + 114,35,0,0,0,41,9,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, + 105,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,107,0,0, + 0,114,47,0,0,0,41,5,114,53,0,0,0,114,106,0, + 0,0,114,89,0,0,0,114,90,0,0,0,218,4,99,111, + 100,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,218,17,95,99,111,109,112,105,108,101,95,98,121,116,101, + 99,111,100,101,228,1,0,0,115,16,0,0,0,0,2,15, + 1,15,1,13,1,12,1,16,1,4,2,18,1,114,152,0, + 0,0,114,59,0,0,0,99,3,0,0,0,0,0,0,0, + 4,0,0,0,3,0,0,0,67,0,0,0,115,76,0,0, + 0,116,0,0,116,1,0,131,1,0,125,3,0,124,3,0, + 106,2,0,116,3,0,124,1,0,131,1,0,131,1,0,1, + 124,3,0,106,2,0,116,3,0,124,2,0,131,1,0,131, + 1,0,1,124,3,0,106,2,0,116,4,0,106,5,0,124, + 0,0,131,1,0,131,1,0,1,124,3,0,83,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,140, + 0,0,0,218,6,101,120,116,101,110,100,114,17,0,0,0, + 114,147,0,0,0,90,5,100,117,109,112,115,41,4,114,151, + 0,0,0,114,138,0,0,0,114,145,0,0,0,114,53,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,218,10,112,97,116,104,95,115,116,97,116,115,199,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,3,0, - 0,0,67,0,0,0,115,16,0,0,0,124,0,0,106,0, - 0,124,2,0,124,3,0,131,2,0,83,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,108,0,0,0,114,90,0,0,0,90,10,99,97,99, - 104,101,95,112,97,116,104,114,53,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,218,15,95,99,97, - 99,104,101,95,98,121,116,101,99,111,100,101,212,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,0,83,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,108,0,0,0,114,35,0,0,0,114, - 53,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,199,0,0,0,222,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,105,0, - 0,0,124,0,0,106,0,0,124,1,0,131,1,0,125,2, - 0,121,19,0,124,0,0,106,1,0,124,2,0,131,1,0, - 125,3,0,87,110,58,0,4,116,2,0,107,10,0,114,94, - 0,1,125,4,0,1,122,26,0,116,3,0,100,1,0,100, - 2,0,124,1,0,131,1,1,124,4,0,130,2,0,87,89, - 100,3,0,100,3,0,125,4,0,126,4,0,88,110,1,0, - 88,116,4,0,124,3,0,131,1,0,83,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,114,106,0,0, - 0,78,41,5,114,163,0,0,0,218,8,103,101,116,95,100, - 97,116,97,114,40,0,0,0,114,107,0,0,0,114,160,0, - 0,0,41,5,114,108,0,0,0,114,126,0,0,0,114,35, - 0,0,0,114,158,0,0,0,218,3,101,120,99,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,218,10,103,101, - 116,95,115,111,117,114,99,101,229,2,0,0,115,14,0,0, - 0,0,2,15,1,3,1,19,1,18,1,9,1,31,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,218,9,95,111,112,116,105,109, - 105,122,101,114,29,0,0,0,99,3,0,0,0,1,0,0, - 0,4,0,0,0,9,0,0,0,67,0,0,0,115,34,0, - 0,0,116,0,0,106,1,0,116,2,0,124,1,0,124,2, - 0,100,1,0,100,2,0,100,3,0,100,4,0,124,3,0, - 131,4,2,83,41,5,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,192,0,0,0,218, - 12,100,111,110,116,95,105,110,104,101,114,105,116,84,114,68, - 0,0,0,41,3,114,121,0,0,0,114,191,0,0,0,218, - 7,99,111,109,112,105,108,101,41,4,114,108,0,0,0,114, - 53,0,0,0,114,35,0,0,0,114,204,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,14,115, - 111,117,114,99,101,95,116,111,95,99,111,100,101,239,2,0, - 0,115,4,0,0,0,0,5,21,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,174,1,0, - 0,124,0,0,106,0,0,124,1,0,131,1,0,125,2,0, - 100,1,0,125,3,0,121,16,0,116,1,0,124,2,0,131, - 1,0,125,4,0,87,110,24,0,4,116,2,0,107,10,0, - 114,63,0,1,1,1,100,1,0,125,4,0,89,110,202,0, - 88,121,19,0,124,0,0,106,3,0,124,2,0,131,1,0, - 125,5,0,87,110,18,0,4,116,4,0,107,10,0,114,103, - 0,1,1,1,89,110,162,0,88,116,5,0,124,5,0,100, - 2,0,25,131,1,0,125,3,0,121,19,0,124,0,0,106, - 6,0,124,4,0,131,1,0,125,6,0,87,110,18,0,4, - 116,7,0,107,10,0,114,159,0,1,1,1,89,110,106,0, - 88,121,34,0,116,8,0,124,6,0,100,3,0,124,5,0, - 100,4,0,124,1,0,100,5,0,124,4,0,131,1,3,125, - 7,0,87,110,24,0,4,116,9,0,116,10,0,102,2,0, - 107,10,0,114,220,0,1,1,1,89,110,45,0,88,116,11, - 0,100,6,0,124,4,0,124,2,0,131,3,0,1,116,12, - 0,124,7,0,100,4,0,124,1,0,100,7,0,124,4,0, - 100,8,0,124,2,0,131,1,3,83,124,0,0,106,6,0, - 124,2,0,131,1,0,125,8,0,124,0,0,106,13,0,124, - 8,0,124,2,0,131,2,0,125,9,0,116,11,0,100,9, - 0,124,2,0,131,2,0,1,116,14,0,106,15,0,12,114, - 170,1,124,4,0,100,1,0,107,9,0,114,170,1,124,3, - 0,100,1,0,107,9,0,114,170,1,116,16,0,124,9,0, - 124,3,0,116,17,0,124,8,0,131,1,0,131,3,0,125, - 6,0,121,36,0,124,0,0,106,18,0,124,2,0,124,4, - 0,124,6,0,131,3,0,1,116,11,0,100,10,0,124,4, - 0,131,2,0,1,87,110,18,0,4,116,2,0,107,10,0, - 114,169,1,1,1,1,89,110,1,0,88,124,9,0,83,41, - 11,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,138,0,0,0,114,143,0,0,0,114,106,0,0, - 0,114,35,0,0,0,122,13,123,125,32,109,97,116,99,104, - 101,115,32,123,125,114,89,0,0,0,114,90,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,163,0,0,0,114,79,0,0,0,114,66,0,0, - 0,114,198,0,0,0,114,196,0,0,0,114,14,0,0,0, - 114,201,0,0,0,114,40,0,0,0,114,146,0,0,0,114, - 107,0,0,0,114,141,0,0,0,114,105,0,0,0,114,152, - 0,0,0,114,207,0,0,0,114,7,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,155,0,0,0,114,31,0,0,0,114,200,0,0, - 0,41,10,114,108,0,0,0,114,126,0,0,0,114,90,0, - 0,0,114,144,0,0,0,114,89,0,0,0,218,2,115,116, - 114,53,0,0,0,218,10,98,121,116,101,115,95,100,97,116, - 97,114,158,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,5,0, - 0,0,114,190,0,0,0,247,2,0,0,115,78,0,0,0, - 0,7,15,1,6,1,3,1,16,1,13,1,11,2,3,1, - 19,1,13,1,5,2,16,1,3,1,19,1,13,1,5,2, - 3,1,9,1,12,1,13,1,19,1,5,2,9,1,7,1, - 15,1,6,1,7,1,15,1,18,1,13,1,22,1,12,1, - 9,1,15,1,3,1,19,1,17,1,13,1,5,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,87,0,0,0,41,10,114,112,0, - 0,0,114,111,0,0,0,114,113,0,0,0,114,197,0,0, - 0,114,198,0,0,0,114,200,0,0,0,114,199,0,0,0, - 114,203,0,0,0,114,207,0,0,0,114,190,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,195,0,0,0,189,2,0,0,115,14,0,0, - 0,12,2,12,8,12,13,12,10,12,7,12,10,18,8,114, - 195,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,112,0,0,0,101,0, + 0,218,17,95,99,111,100,101,95,116,111,95,98,121,116,101, + 99,111,100,101,240,1,0,0,115,10,0,0,0,0,3,12, + 1,19,1,19,1,22,1,114,155,0,0,0,99,1,0,0, + 0,0,0,0,0,5,0,0,0,4,0,0,0,67,0,0, + 0,115,89,0,0,0,100,1,0,100,2,0,108,0,0,125, + 1,0,116,1,0,106,2,0,124,0,0,131,1,0,106,3, + 0,125,2,0,124,1,0,106,4,0,124,2,0,131,1,0, + 125,3,0,116,1,0,106,5,0,100,2,0,100,3,0,131, + 2,0,125,4,0,124,4,0,106,6,0,124,0,0,106,6, + 0,124,3,0,100,1,0,25,131,1,0,131,1,0,83,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,59,0,0, + 0,78,84,41,7,218,8,116,111,107,101,110,105,122,101,114, + 49,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,156,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,5,0,0, + 0,218,13,100,101,99,111,100,101,95,115,111,117,114,99,101, + 250,1,0,0,115,10,0,0,0,0,5,12,1,18,1,15, + 1,18,1,114,160,0,0,0,218,6,111,114,105,103,105,110, + 218,10,105,115,95,112,97,99,107,97,103,101,99,2,0,0, + 0,2,0,0,0,5,0,0,0,15,0,0,0,67,0,0, + 0,115,193,0,0,0,116,0,0,124,1,0,100,1,0,131, + 2,0,114,83,0,124,3,0,100,2,0,107,8,0,114,43, + 0,116,1,0,124,0,0,100,3,0,124,1,0,131,1,1, + 83,124,3,0,114,55,0,103,0,0,110,3,0,100,2,0, + 125,4,0,116,1,0,124,0,0,100,3,0,124,1,0,100, + 4,0,124,4,0,131,1,2,83,124,3,0,100,2,0,107, + 8,0,114,165,0,116,0,0,124,1,0,100,5,0,131,2, + 0,114,159,0,121,19,0,124,1,0,106,2,0,124,0,0, + 131,1,0,125,3,0,87,113,165,0,4,116,3,0,107,10, + 0,114,155,0,1,1,1,100,2,0,125,3,0,89,113,165, + 0,88,110,6,0,100,6,0,125,3,0,116,4,0,106,5, + 0,124,0,0,124,1,0,100,7,0,124,2,0,100,5,0, + 124,3,0,131,2,2,83,41,8,122,53,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,118,97,114,105,111,117,115, + 32,108,111,97,100,101,114,32,109,101,116,104,111,100,115,46, + 218,12,103,101,116,95,102,105,108,101,110,97,109,101,78,114, + 127,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, + 114,162,0,0,0,70,114,161,0,0,0,41,6,114,115,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,114,162,0,0,0, + 114,107,0,0,0,114,121,0,0,0,218,10,77,111,100,117, + 108,101,83,112,101,99,41,5,114,106,0,0,0,114,127,0, + 0,0,114,161,0,0,0,114,162,0,0,0,90,6,115,101, + 97,114,99,104,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,131,0,0,0,8,2,0,0,115,28,0,0, + 0,0,2,15,1,12,1,16,1,18,1,15,1,7,2,12, + 1,15,1,3,1,19,1,13,1,14,3,6,2,114,131,0, + 0,0,114,127,0,0,0,114,164,0,0,0,99,2,0,0, + 0,2,0,0,0,9,0,0,0,19,0,0,0,67,0,0, + 0,115,89,1,0,0,124,1,0,100,1,0,107,8,0,114, + 73,0,100,2,0,125,1,0,116,0,0,124,2,0,100,3, + 0,131,2,0,114,73,0,121,19,0,124,2,0,106,1,0, + 124,0,0,131,1,0,125,1,0,87,110,18,0,4,116,2, + 0,107,10,0,114,72,0,1,1,1,89,110,1,0,88,116, + 3,0,106,4,0,124,0,0,124,2,0,100,4,0,124,1, + 0,131,2,1,125,4,0,100,5,0,124,4,0,95,5,0, + 124,2,0,100,1,0,107,8,0,114,194,0,120,73,0,116, + 6,0,131,0,0,68,93,58,0,92,2,0,125,5,0,125, + 6,0,124,1,0,106,7,0,116,8,0,124,6,0,131,1, + 0,131,1,0,114,128,0,124,5,0,124,0,0,124,1,0, + 131,2,0,125,2,0,124,2,0,124,4,0,95,9,0,80, + 113,128,0,87,100,1,0,83,124,3,0,116,10,0,107,8, + 0,114,23,1,116,0,0,124,2,0,100,6,0,131,2,0, + 114,32,1,121,19,0,124,2,0,106,11,0,124,0,0,131, + 1,0,125,7,0,87,110,18,0,4,116,2,0,107,10,0, + 114,4,1,1,1,1,89,113,32,1,88,124,7,0,114,32, + 1,103,0,0,124,4,0,95,12,0,110,9,0,124,3,0, + 124,4,0,95,12,0,124,4,0,106,12,0,103,0,0,107, + 2,0,114,85,1,124,1,0,114,85,1,116,13,0,124,1, + 0,131,1,0,100,7,0,25,125,8,0,124,4,0,106,12, + 0,106,14,0,124,8,0,131,1,0,1,124,4,0,83,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,114, + 163,0,0,0,114,161,0,0,0,84,114,162,0,0,0,114, + 59,0,0,0,41,15,114,115,0,0,0,114,163,0,0,0, + 114,107,0,0,0,114,121,0,0,0,114,166,0,0,0,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,92,0,0,0, + 114,93,0,0,0,114,127,0,0,0,218,9,95,80,79,80, + 85,76,65,84,69,114,162,0,0,0,114,164,0,0,0,114, + 38,0,0,0,218,6,97,112,112,101,110,100,41,9,114,106, + 0,0,0,90,8,108,111,99,97,116,105,111,110,114,127,0, + 0,0,114,164,0,0,0,114,133,0,0,0,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,162,0,0,0,90,7,100,105,114,110,97, + 109,101,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,165,0,0,0,33,2,0,0,115,60,0,0,0,0, + 12,12,4,6,1,15,2,3,1,19,1,13,1,5,8,24, + 1,9,3,12,1,22,1,21,1,15,1,9,1,5,2,4, + 3,12,2,15,1,3,1,19,1,13,1,5,2,6,1,12, + 2,9,1,15,1,6,1,16,1,16,2,114,165,0,0,0, + 99,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0, + 0,64,0,0,0,115,121,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,90, + 4,0,100,3,0,90,5,0,100,4,0,90,6,0,101,7, + 0,100,5,0,100,6,0,132,0,0,131,1,0,90,8,0, + 101,7,0,100,7,0,100,8,0,132,0,0,131,1,0,90, + 9,0,101,7,0,100,9,0,100,9,0,100,10,0,100,11, + 0,132,2,0,131,1,0,90,10,0,101,7,0,100,9,0, + 100,12,0,100,13,0,132,1,0,131,1,0,90,11,0,100, + 9,0,83,41,14,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,67,0,0,0,121,23,0,116,0,0,106,1,0, + 116,0,0,106,2,0,124,1,0,131,2,0,83,87,110,37, + 0,4,116,3,0,107,10,0,114,62,0,1,1,1,116,0, + 0,106,1,0,116,0,0,106,4,0,124,1,0,131,2,0, + 83,89,110,1,0,88,100,0,0,83,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,40,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,218,3,107,101,121,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,14,95,111,112,101,110,95, + 114,101,103,105,115,116,114,121,111,2,0,0,115,8,0,0, + 0,0,2,3,1,23,1,13,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,16,0,0,0, + 67,0,0,0,115,143,0,0,0,124,0,0,106,0,0,114, + 21,0,124,0,0,106,1,0,125,2,0,110,9,0,124,0, + 0,106,2,0,125,2,0,124,2,0,106,3,0,100,1,0, + 124,1,0,100,2,0,116,4,0,106,5,0,100,0,0,100, + 3,0,133,2,0,25,131,0,2,125,3,0,121,47,0,124, + 0,0,106,6,0,124,3,0,131,1,0,143,25,0,125,4, + 0,116,7,0,106,8,0,124,4,0,100,4,0,131,2,0, + 125,5,0,87,100,0,0,81,82,88,87,110,22,0,4,116, + 9,0,107,10,0,114,138,0,1,1,1,100,0,0,83,89, + 110,1,0,88,124,5,0,83,41,5,78,114,126,0,0,0, + 90,11,115,121,115,95,118,101,114,115,105,111,110,114,80,0, + 0,0,114,30,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,47,0,0,0,114,7,0, + 0,0,218,7,118,101,114,115,105,111,110,114,176,0,0,0, + 114,173,0,0,0,90,10,81,117,101,114,121,86,97,108,117, + 101,114,40,0,0,0,41,6,114,174,0,0,0,114,126,0, + 0,0,90,12,114,101,103,105,115,116,114,121,95,107,101,121, + 114,175,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, + 5,0,0,0,218,16,95,115,101,97,114,99,104,95,114,101, + 103,105,115,116,114,121,118,2,0,0,115,22,0,0,0,0, + 2,9,1,12,2,9,1,15,1,22,1,3,1,18,1,29, + 1,13,1,9,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,155,0,0,0,124,0,0,106,0,0,124,1, + 0,131,1,0,125,4,0,124,4,0,100,0,0,107,8,0, + 114,31,0,100,0,0,83,121,14,0,116,1,0,124,4,0, + 131,1,0,1,87,110,22,0,4,116,2,0,107,10,0,114, + 69,0,1,1,1,100,0,0,83,89,110,1,0,88,120,78, + 0,116,3,0,131,0,0,68,93,67,0,92,2,0,125,5, + 0,125,6,0,124,4,0,106,4,0,116,5,0,124,6,0, + 131,1,0,131,1,0,114,80,0,116,6,0,124,1,0,124, + 5,0,124,1,0,124,4,0,131,2,0,100,1,0,124,4, + 0,131,2,1,125,7,0,124,7,0,83,113,80,0,87,100, + 0,0,83,41,2,78,114,161,0,0,0,41,7,114,182,0, + 0,0,114,39,0,0,0,114,40,0,0,0,114,167,0,0, + 0,114,92,0,0,0,114,93,0,0,0,114,131,0,0,0, + 41,8,114,174,0,0,0,114,126,0,0,0,114,35,0,0, + 0,218,6,116,97,114,103,101,116,114,181,0,0,0,114,127, + 0,0,0,114,171,0,0,0,114,133,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,9,102,105, + 110,100,95,115,112,101,99,133,2,0,0,115,24,0,0,0, + 0,2,15,1,12,1,4,1,3,1,14,1,13,1,9,1, + 22,1,21,1,21,1,9,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,3,0,0,0,67,0,0,0,115,45, + 0,0,0,124,0,0,106,0,0,124,1,0,124,2,0,131, + 2,0,125,3,0,124,3,0,100,1,0,107,9,0,114,37, + 0,124,3,0,106,1,0,83,100,1,0,83,100,1,0,83, + 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,184,0,0,0,114,127,0,0,0,41,4,114, + 174,0,0,0,114,126,0,0,0,114,35,0,0,0,114,133, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,11,102,105,110,100,95,109,111,100,117,108,101,148, + 2,0,0,115,8,0,0,0,0,7,18,1,12,1,7,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,12,114,112,0,0,0,114,111,0,0,0,114, + 113,0,0,0,114,114,0,0,0,114,179,0,0,0,114,178, + 0,0,0,114,177,0,0,0,218,11,99,108,97,115,115,109, + 101,116,104,111,100,114,176,0,0,0,114,182,0,0,0,114, + 184,0,0,0,114,185,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,172,0, + 0,0,99,2,0,0,115,20,0,0,0,12,2,6,3,6, + 3,6,2,6,2,18,7,18,15,3,1,21,14,3,1,114, + 172,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,64,0,0,0,101,0, 0,90,1,0,100,0,0,90,2,0,100,1,0,90,3,0, 100,2,0,100,3,0,132,0,0,90,4,0,100,4,0,100, 5,0,132,0,0,90,5,0,100,6,0,100,7,0,132,0, - 0,90,6,0,101,7,0,135,0,0,102,1,0,100,8,0, - 100,9,0,134,0,0,131,1,0,90,8,0,101,7,0,100, - 10,0,100,11,0,132,0,0,131,1,0,90,9,0,100,12, - 0,100,13,0,132,0,0,90,10,0,135,0,0,83,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,22,0,0,0,124, - 1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1, - 0,100,1,0,83,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,106,0,0,0,114,35,0,0, - 0,41,3,114,108,0,0,0,114,126,0,0,0,114,35,0, - 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,188,0,0,0,48,3,0,0,115,4,0,0,0,0, - 3,9,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,34,0, - 0,0,124,0,0,106,0,0,124,1,0,106,0,0,107,2, - 0,111,33,0,124,0,0,106,1,0,124,1,0,106,1,0, - 107,2,0,83,41,1,78,41,2,218,9,95,95,99,108,97, - 115,115,95,95,114,118,0,0,0,41,2,114,108,0,0,0, - 218,5,111,116,104,101,114,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,218,6,95,95,101,113,95,95,54,3, - 0,0,115,4,0,0,0,0,1,18,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,26,0,0,0,116,0,0,124,0,0,106,1, - 0,131,1,0,116,0,0,124,0,0,106,2,0,131,1,0, - 65,83,41,1,78,41,3,218,4,104,97,115,104,114,106,0, - 0,0,114,35,0,0,0,41,1,114,108,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,218,8,95, - 95,104,97,115,104,95,95,58,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,22,0,0, - 0,116,0,0,116,1,0,124,0,0,131,2,0,106,2,0, - 124,1,0,131,1,0,83,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,211,0,0,0,114,194,0, - 0,0,41,2,114,108,0,0,0,114,126,0,0,0,41,1, - 114,212,0,0,0,114,4,0,0,0,114,5,0,0,0,114, - 194,0,0,0,61,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, + 0,90,6,0,101,7,0,90,8,0,100,8,0,83,41,9, + 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,3,0,0,0,67,0,0,0,115,88,0,0,0,116,0, + 0,124,0,0,106,1,0,124,1,0,131,1,0,131,1,0, + 100,1,0,25,125,2,0,124,2,0,106,2,0,100,2,0, + 100,1,0,131,2,0,100,3,0,25,125,3,0,124,1,0, + 106,3,0,100,2,0,131,1,0,100,4,0,25,125,4,0, + 124,3,0,100,5,0,107,2,0,111,87,0,124,4,0,100, + 5,0,107,3,0,83,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,29,0,0,0,114,58,0,0, + 0,114,59,0,0,0,114,56,0,0,0,218,8,95,95,105, + 110,105,116,95,95,41,4,114,38,0,0,0,114,163,0,0, + 0,114,34,0,0,0,114,32,0,0,0,41,5,114,108,0, + 0,0,114,126,0,0,0,114,94,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,5,0,0,0,114,162,0,0,0,167,2,0,0,115,8, + 0,0,0,0,3,25,1,22,1,19,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,0,83,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,108,0,0,0,114,133, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,13,99,114,101,97,116,101,95,109,111,100,117,108, + 101,175,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, - 2,0,0,0,1,0,0,0,67,0,0,0,115,7,0,0, - 0,124,0,0,106,0,0,83,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,35,0,0,0,41,2,114, - 108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,163,0,0,0,73,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,8,0, - 0,0,67,0,0,0,115,41,0,0,0,116,0,0,106,1, - 0,124,1,0,100,1,0,131,2,0,143,17,0,125,2,0, - 124,2,0,106,2,0,131,0,0,83,87,100,2,0,81,88, - 100,2,0,83,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,49,0,0,0,114,50,0,0,0,90, - 4,114,101,97,100,41,3,114,108,0,0,0,114,35,0,0, - 0,114,54,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,201,0,0,0,78,3,0,0,115,4, - 0,0,0,0,2,21,1,122,19,70,105,108,101,76,111,97, - 100,101,114,46,103,101,116,95,100,97,116,97,41,11,114,112, - 0,0,0,114,111,0,0,0,114,113,0,0,0,114,114,0, - 0,0,114,188,0,0,0,114,214,0,0,0,114,216,0,0, - 0,114,123,0,0,0,114,194,0,0,0,114,163,0,0,0, - 114,201,0,0,0,114,4,0,0,0,114,4,0,0,0,41, - 1,114,212,0,0,0,114,5,0,0,0,114,211,0,0,0, - 43,3,0,0,115,14,0,0,0,12,3,6,2,12,6,12, - 4,12,3,24,12,18,5,114,211,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,64,0,0,0,101,0,0,90,1,0,100,0,0,90, - 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0, - 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0, - 100,6,0,100,7,0,100,8,0,100,9,0,132,0,1,90, - 6,0,100,10,0,83,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,5,0,0,0,67,0,0,0,115, - 34,0,0,0,116,0,0,124,1,0,131,1,0,125,2,0, - 124,2,0,106,1,0,100,1,0,124,2,0,106,2,0,100, - 2,0,105,2,0,83,41,3,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,114,138,0,0,0, - 114,139,0,0,0,41,3,114,39,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,108,0,0,0,114,35,0,0,0,114,209,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, - 198,0,0,0,88,3,0,0,115,4,0,0,0,0,2,12, - 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,34,0,0,0,116,0,0,124,1,0,131,1, - 0,125,4,0,124,0,0,106,1,0,124,2,0,124,3,0, - 100,1,0,124,4,0,131,2,1,83,41,2,78,218,5,95, - 109,111,100,101,41,2,114,97,0,0,0,114,199,0,0,0, - 41,5,114,108,0,0,0,114,90,0,0,0,114,89,0,0, - 0,114,53,0,0,0,114,42,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,200,0,0,0,93, - 3,0,0,115,4,0,0,0,0,2,12,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,114,221, - 0,0,0,105,182,1,0,0,99,3,0,0,0,1,0,0, - 0,9,0,0,0,17,0,0,0,67,0,0,0,115,53,1, - 0,0,116,0,0,124,1,0,131,1,0,92,2,0,125,4, - 0,125,5,0,103,0,0,125,6,0,120,54,0,124,4,0, - 114,80,0,116,1,0,124,4,0,131,1,0,12,114,80,0, - 116,0,0,124,4,0,131,1,0,92,2,0,125,4,0,125, - 7,0,124,6,0,106,2,0,124,7,0,131,1,0,1,113, - 27,0,87,120,132,0,116,3,0,124,6,0,131,1,0,68, - 93,118,0,125,7,0,116,4,0,124,4,0,124,7,0,131, - 2,0,125,4,0,121,17,0,116,5,0,106,6,0,124,4, - 0,131,1,0,1,87,113,94,0,4,116,7,0,107,10,0, - 114,155,0,1,1,1,119,94,0,89,113,94,0,4,116,8, - 0,107,10,0,114,211,0,1,125,8,0,1,122,25,0,116, - 9,0,100,1,0,124,4,0,124,8,0,131,3,0,1,100, - 2,0,83,87,89,100,2,0,100,2,0,125,8,0,126,8, - 0,88,113,94,0,88,113,94,0,87,121,33,0,116,10,0, - 124,1,0,124,2,0,124,3,0,131,3,0,1,116,9,0, - 100,3,0,124,1,0,131,2,0,1,87,110,53,0,4,116, - 8,0,107,10,0,114,48,1,1,125,8,0,1,122,21,0, - 116,9,0,100,1,0,124,1,0,124,8,0,131,3,0,1, - 87,89,100,2,0,100,2,0,125,8,0,126,8,0,88,110, - 1,0,88,100,2,0,83,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,11,114,38,0,0,0,114,46,0,0,0,114,169, - 0,0,0,114,33,0,0,0,114,28,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,40,0,0,0,114, - 105,0,0,0,114,55,0,0,0,41,9,114,108,0,0,0, - 114,35,0,0,0,114,53,0,0,0,114,221,0,0,0,218, - 6,112,97,114,101,110,116,114,94,0,0,0,114,27,0,0, - 0,114,23,0,0,0,114,202,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,199,0,0,0,98, - 3,0,0,115,38,0,0,0,0,2,18,1,6,2,22,1, - 18,1,17,2,19,1,15,1,3,1,17,1,13,2,7,1, - 18,3,16,1,27,1,3,1,16,1,17,1,18,2,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,112,0,0, - 0,114,111,0,0,0,114,113,0,0,0,114,114,0,0,0, - 114,198,0,0,0,114,200,0,0,0,114,199,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,219,0,0,0,84,3,0,0,115,8,0,0, - 0,12,2,6,2,12,5,12,5,114,219,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,46,0,0,0,101,0,0,90,1,0,100,0, - 0,90,2,0,100,1,0,90,3,0,100,2,0,100,3,0, - 132,0,0,90,4,0,100,4,0,100,5,0,132,0,0,90, - 5,0,100,6,0,83,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,6,0,0,0,67,0, - 0,0,115,76,0,0,0,124,0,0,106,0,0,124,1,0, - 131,1,0,125,2,0,124,0,0,106,1,0,124,2,0,131, - 1,0,125,3,0,116,2,0,124,3,0,100,1,0,124,1, - 0,100,2,0,124,2,0,131,1,2,125,4,0,116,3,0, - 124,4,0,100,1,0,124,1,0,100,3,0,124,2,0,131, - 1,2,83,41,4,78,114,106,0,0,0,114,35,0,0,0, - 114,89,0,0,0,41,4,114,163,0,0,0,114,201,0,0, - 0,114,146,0,0,0,114,152,0,0,0,41,5,114,108,0, - 0,0,114,126,0,0,0,114,35,0,0,0,114,53,0,0, - 0,114,210,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,190,0,0,0,131,3,0,0,115,8, - 0,0,0,0,1,15,1,15,1,24,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,0,83,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,108,0,0,0, - 114,126,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,203,0,0,0,137,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,112,0,0,0,114,111,0, - 0,0,114,113,0,0,0,114,114,0,0,0,114,190,0,0, - 0,114,203,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,224,0,0,0,127, - 3,0,0,115,6,0,0,0,12,2,6,2,12,6,114,224, - 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,130,0,0,0,101,0,0, - 90,1,0,100,0,0,90,2,0,100,1,0,90,3,0,100, - 2,0,100,3,0,132,0,0,90,4,0,100,4,0,100,5, - 0,132,0,0,90,5,0,100,6,0,100,7,0,132,0,0, - 90,6,0,101,7,0,100,8,0,100,9,0,132,0,0,131, - 1,0,90,8,0,100,10,0,100,11,0,132,0,0,90,9, - 0,100,12,0,100,13,0,132,0,0,90,10,0,100,14,0, - 100,15,0,132,0,0,90,11,0,101,7,0,100,16,0,100, - 17,0,132,0,0,131,1,0,90,12,0,100,18,0,83,41, - 19,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,22,0,0,0,124, - 1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1, - 0,100,0,0,83,41,1,78,41,2,114,106,0,0,0,114, - 35,0,0,0,41,3,114,108,0,0,0,114,106,0,0,0, - 114,35,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,188,0,0,0,154,3,0,0,115,4,0, - 0,0,0,1,9,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,34,0,0,0,124,0, - 0,106,0,0,124,1,0,106,0,0,107,2,0,111,33,0, - 124,0,0,106,1,0,124,1,0,106,1,0,107,2,0,83, - 41,1,78,41,2,114,212,0,0,0,114,118,0,0,0,41, - 2,114,108,0,0,0,114,213,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,214,0,0,0,158, - 3,0,0,115,4,0,0,0,0,1,18,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,26,0, - 0,0,116,0,0,124,0,0,106,1,0,131,1,0,116,0, - 0,124,0,0,106,2,0,131,1,0,65,83,41,1,78,41, - 3,114,215,0,0,0,114,106,0,0,0,114,35,0,0,0, - 41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,216,0,0,0,162,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,4,0,0, - 0,11,0,0,0,67,0,0,0,115,183,0,0,0,116,0, - 0,106,1,0,124,1,0,131,1,0,143,32,0,1,116,0, - 0,106,2,0,116,3,0,106,4,0,124,1,0,124,0,0, - 106,5,0,131,3,0,125,2,0,87,100,1,0,81,88,116, - 6,0,100,2,0,124,0,0,106,5,0,131,2,0,1,124, - 0,0,106,7,0,124,1,0,131,1,0,125,3,0,124,3, - 0,114,127,0,116,8,0,124,2,0,100,3,0,131,2,0, - 12,114,127,0,116,9,0,124,0,0,106,5,0,131,1,0, - 100,4,0,25,103,1,0,124,2,0,95,10,0,124,0,0, - 124,2,0,95,11,0,124,2,0,106,12,0,124,2,0,95, - 13,0,124,3,0,115,179,0,124,2,0,106,13,0,106,14, - 0,100,5,0,131,1,0,100,4,0,25,124,2,0,95,13, - 0,124,2,0,83,41,6,122,25,76,111,97,100,32,97,110, - 32,101,120,116,101,110,115,105,111,110,32,109,111,100,117,108, - 101,46,78,122,33,101,120,116,101,110,115,105,111,110,32,109, - 111,100,117,108,101,32,108,111,97,100,101,100,32,102,114,111, - 109,32,123,33,114,125,218,8,95,95,112,97,116,104,95,95, - 114,59,0,0,0,114,58,0,0,0,41,15,114,121,0,0, - 0,90,13,95,77,97,110,97,103,101,82,101,108,111,97,100, - 114,191,0,0,0,114,150,0,0,0,90,12,108,111,97,100, - 95,100,121,110,97,109,105,99,114,35,0,0,0,114,105,0, - 0,0,114,162,0,0,0,114,115,0,0,0,114,38,0,0, - 0,114,226,0,0,0,218,10,95,95,108,111,97,100,101,114, - 95,95,114,112,0,0,0,218,11,95,95,112,97,99,107,97, - 103,101,95,95,114,32,0,0,0,41,4,114,108,0,0,0, - 114,126,0,0,0,114,134,0,0,0,114,162,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,194, - 0,0,0,165,3,0,0,115,24,0,0,0,0,5,16,1, - 12,1,21,1,16,1,15,1,22,1,25,1,9,1,12,1, - 6,1,25,1,122,31,69,120,116,101,110,115,105,111,110,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,4,0,0,0,3,0,0,0,115,48,0,0,0,116, - 0,0,124,0,0,106,1,0,131,1,0,100,1,0,25,137, - 0,0,116,2,0,135,0,0,102,1,0,100,2,0,100,3, - 0,134,0,0,116,3,0,68,131,1,0,131,1,0,83,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,29,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,31, - 0,0,0,124,0,0,93,21,0,125,1,0,136,0,0,100, - 0,0,124,1,0,23,107,2,0,86,1,113,3,0,100,1, - 0,83,41,2,114,188,0,0,0,78,114,4,0,0,0,41, - 2,114,22,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,5,0,0,0,250,9,60,103,101,110,101,120,112,114,62, - 186,3,0,0,115,2,0,0,0,6,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,38,0,0,0,114,35,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,108,0,0,0,114,126,0,0,0,114, - 4,0,0,0,41,1,114,230,0,0,0,114,5,0,0,0, - 114,162,0,0,0,183,3,0,0,115,6,0,0,0,0,2, - 19,1,18,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, - 0,83,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,108,0, - 0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,190,0,0,0,189,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, - 0,83,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,108,0,0,0,114,126,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,203,0,0, - 0,193,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,7,0,0,0,124,0,0,106,0,0,83,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,35,0, - 0,0,41,2,114,108,0,0,0,114,126,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,163,0, - 0,0,197,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,13,114,112,0,0,0,114,111,0,0,0,114,113,0,0, - 0,114,114,0,0,0,114,188,0,0,0,114,214,0,0,0, - 114,216,0,0,0,114,123,0,0,0,114,194,0,0,0,114, - 162,0,0,0,114,190,0,0,0,114,203,0,0,0,114,163, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,225,0,0,0,146,3,0,0, - 115,18,0,0,0,12,6,6,2,12,4,12,4,12,3,18, - 18,12,6,12,4,12,4,114,225,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,130,0,0,0,101,0,0,90,1,0,100,0,0,90, - 2,0,100,1,0,90,3,0,100,2,0,100,3,0,132,0, - 0,90,4,0,100,4,0,100,5,0,132,0,0,90,5,0, - 100,6,0,100,7,0,132,0,0,90,6,0,100,8,0,100, - 9,0,132,0,0,90,7,0,100,10,0,100,11,0,132,0, - 0,90,8,0,100,12,0,100,13,0,132,0,0,90,9,0, - 100,14,0,100,15,0,132,0,0,90,10,0,100,16,0,100, - 17,0,132,0,0,90,11,0,100,18,0,100,19,0,132,0, - 0,90,12,0,100,20,0,83,41,21,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,2,0,0,0,67,0,0,0,115,52,0,0,0,124, - 1,0,124,0,0,95,0,0,124,2,0,124,0,0,95,1, - 0,116,2,0,124,0,0,106,3,0,131,0,0,131,1,0, - 124,0,0,95,4,0,124,3,0,124,0,0,95,5,0,100, - 0,0,83,41,1,78,41,6,218,5,95,110,97,109,101,218, - 5,95,112,97,116,104,114,93,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,108,0,0,0,114,106,0,0,0,114,35,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,5,0,0,0,114,188,0,0,0, - 210,3,0,0,115,8,0,0,0,0,1,9,1,9,1,21, - 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, - 53,0,0,0,124,0,0,106,0,0,106,1,0,100,1,0, - 131,1,0,92,3,0,125,1,0,125,2,0,125,3,0,124, - 2,0,100,2,0,107,2,0,114,43,0,100,6,0,83,124, - 1,0,100,5,0,102,2,0,83,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,58,0,0,0, - 114,30,0,0,0,114,7,0,0,0,114,35,0,0,0,114, - 226,0,0,0,41,2,122,3,115,121,115,122,4,112,97,116, - 104,41,2,114,235,0,0,0,114,32,0,0,0,41,4,114, - 108,0,0,0,114,223,0,0,0,218,3,100,111,116,90,2, - 109,101,114,4,0,0,0,114,4,0,0,0,114,5,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,216,3,0,0,115,8, - 0,0,0,0,2,27,1,12,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,38,0,0,0,124,0,0, - 106,0,0,131,0,0,92,2,0,125,1,0,125,2,0,116, - 1,0,116,2,0,106,3,0,124,1,0,25,124,2,0,131, - 2,0,83,41,1,78,41,4,114,242,0,0,0,114,117,0, - 0,0,114,7,0,0,0,114,132,0,0,0,41,3,114,108, - 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,5,0,0,0,114,237,0,0,0,226,3,0,0,115, - 4,0,0,0,0,1,18,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,3,0,0,0,67,0,0,0,115,118, - 0,0,0,116,0,0,124,0,0,106,1,0,131,0,0,131, - 1,0,125,1,0,124,1,0,124,0,0,106,2,0,107,3, - 0,114,111,0,124,0,0,106,3,0,124,0,0,106,4,0, - 124,1,0,131,2,0,125,2,0,124,2,0,100,0,0,107, - 9,0,114,102,0,124,2,0,106,5,0,100,0,0,107,8, - 0,114,102,0,124,2,0,106,6,0,114,102,0,124,2,0, - 106,6,0,124,0,0,95,7,0,124,1,0,124,0,0,95, - 2,0,124,0,0,106,7,0,83,41,1,78,41,8,114,93, - 0,0,0,114,237,0,0,0,114,238,0,0,0,114,239,0, - 0,0,114,235,0,0,0,114,127,0,0,0,114,164,0,0, - 0,114,236,0,0,0,41,3,114,108,0,0,0,90,11,112, - 97,114,101,110,116,95,112,97,116,104,114,133,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,12, - 95,114,101,99,97,108,99,117,108,97,116,101,230,3,0,0, - 115,16,0,0,0,0,2,18,1,15,1,21,3,27,1,9, - 1,12,1,9,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,2, - 0,0,0,67,0,0,0,115,16,0,0,0,116,0,0,124, - 0,0,106,1,0,131,0,0,131,1,0,83,41,1,78,41, - 2,218,4,105,116,101,114,114,243,0,0,0,41,1,114,108, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,8,95,95,105,116,101,114,95,95,243,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,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0, - 0,67,0,0,0,115,16,0,0,0,116,0,0,124,0,0, - 106,1,0,131,0,0,131,1,0,83,41,1,78,41,2,114, - 31,0,0,0,114,243,0,0,0,41,1,114,108,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, - 7,95,95,108,101,110,95,95,246,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,2,0,0,0,67,0,0,0, - 115,16,0,0,0,100,1,0,106,0,0,124,0,0,106,1, - 0,131,1,0,83,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,47,0,0,0,114,236,0,0,0,41,1,114,108,0,0, - 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 218,8,95,95,114,101,112,114,95,95,249,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,2,0,0,0,67, - 0,0,0,115,16,0,0,0,124,1,0,124,0,0,106,0, - 0,131,0,0,107,6,0,83,41,1,78,41,1,114,243,0, - 0,0,41,2,114,108,0,0,0,218,4,105,116,101,109,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,12, - 95,95,99,111,110,116,97,105,110,115,95,95,252,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,2,0,0,0,67,0,0,0,115,20,0,0,0,124,0, - 0,106,0,0,106,1,0,124,1,0,131,1,0,1,100,0, - 0,83,41,1,78,41,2,114,236,0,0,0,114,169,0,0, - 0,41,2,114,108,0,0,0,114,248,0,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,169,0,0, - 0,255,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,13,114,112,0,0,0,114,111,0,0,0, - 114,113,0,0,0,114,114,0,0,0,114,188,0,0,0,114, - 242,0,0,0,114,237,0,0,0,114,243,0,0,0,114,245, - 0,0,0,114,246,0,0,0,114,247,0,0,0,114,249,0, - 0,0,114,169,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,234,0,0,0, - 203,3,0,0,115,20,0,0,0,12,5,6,2,12,6,12, - 10,12,4,12,13,12,3,12,3,12,3,12,3,114,234,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,118,0,0,0,101,0,0,90, - 1,0,100,0,0,90,2,0,100,1,0,100,2,0,132,0, - 0,90,3,0,101,4,0,100,3,0,100,4,0,132,0,0, - 131,1,0,90,5,0,100,5,0,100,6,0,132,0,0,90, - 6,0,100,7,0,100,8,0,132,0,0,90,7,0,100,9, - 0,100,10,0,132,0,0,90,8,0,100,11,0,100,12,0, - 132,0,0,90,9,0,100,13,0,100,14,0,132,0,0,90, - 10,0,100,15,0,100,16,0,132,0,0,90,11,0,100,17, - 0,83,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,25,0,0,0, - 116,0,0,124,1,0,124,2,0,124,3,0,131,3,0,124, - 0,0,95,1,0,100,0,0,83,41,1,78,41,2,114,234, - 0,0,0,114,236,0,0,0,41,4,114,108,0,0,0,114, - 106,0,0,0,114,35,0,0,0,114,240,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,188,0, - 0,0,5,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, - 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,16,0, - 0,0,100,1,0,106,0,0,124,1,0,106,1,0,131,1, - 0,83,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,47,0,0,0,114,112,0,0,0, - 41,2,114,174,0,0,0,114,134,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,218,11,109,111,100, - 117,108,101,95,114,101,112,114,8,4,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,0,83,41, - 2,78,84,114,4,0,0,0,41,2,114,108,0,0,0,114, - 126,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,162,0,0,0,17,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,0,83,41,2, - 78,114,30,0,0,0,114,4,0,0,0,41,2,114,108,0, - 0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,203,0,0,0,20,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,22,0,0,0,116,0,0, - 100,1,0,100,2,0,100,3,0,100,4,0,100,5,0,131, - 3,1,83,41,6,78,114,30,0,0,0,122,8,60,115,116, - 114,105,110,103,62,114,192,0,0,0,114,205,0,0,0,84, - 41,1,114,206,0,0,0,41,2,114,108,0,0,0,114,126, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,190,0,0,0,23,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, + 3,0,0,0,4,0,0,0,67,0,0,0,115,80,0,0, + 0,124,0,0,106,0,0,124,1,0,106,1,0,131,1,0, + 125,2,0,124,2,0,100,1,0,107,8,0,114,54,0,116, + 2,0,100,2,0,106,3,0,124,1,0,106,1,0,131,1, + 0,131,1,0,130,1,0,116,4,0,106,5,0,116,6,0, + 124,2,0,124,1,0,106,7,0,131,3,0,1,100,1,0, + 83,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,112,0,0,0, + 114,107,0,0,0,114,47,0,0,0,114,121,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,118,0,0,0,41,3,114,108,0,0,0,114,134,0,0, + 0,114,151,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,218,11,101,120,101,99,95,109,111,100,117, + 108,101,178,2,0,0,115,10,0,0,0,0,2,18,1,12, + 1,9,1,15,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, + 78,41,9,114,112,0,0,0,114,111,0,0,0,114,113,0, + 0,0,114,114,0,0,0,114,162,0,0,0,114,189,0,0, + 0,114,193,0,0,0,114,135,0,0,0,218,11,108,111,97, + 100,95,109,111,100,117,108,101,114,4,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,187,0,0, + 0,162,2,0,0,115,10,0,0,0,12,3,6,2,12,8, + 12,3,12,8,114,187,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,0,90,1,0,100,0,0,90,2,0,100, + 1,0,100,2,0,132,0,0,90,3,0,100,3,0,100,4, + 0,132,0,0,90,4,0,100,5,0,100,6,0,132,0,0, + 90,5,0,100,7,0,100,8,0,132,0,0,90,6,0,100, + 9,0,100,10,0,132,0,0,90,7,0,100,11,0,100,18, + 0,100,13,0,100,14,0,132,0,1,90,8,0,100,15,0, + 100,16,0,132,0,0,90,9,0,100,17,0,83,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,4,0,0,0,100,1,0,83,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,108,0,0,0,114,133,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,189,0,0,0,26, - 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,0,83,41,1,78,114,4,0,0,0,41,2, - 114,108,0,0,0,114,134,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,193,0,0,0,29,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,3,0,0,0,67,0,0,0,115,29,0,0, - 0,116,0,0,100,1,0,124,0,0,106,1,0,131,2,0, - 1,116,2,0,124,0,0,124,1,0,131,2,0,83,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,3,114,105, - 0,0,0,114,236,0,0,0,114,135,0,0,0,41,2,114, - 108,0,0,0,114,126,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,194,0,0,0,32,4,0, - 0,115,4,0,0,0,0,7,16,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,112,0,0,0, - 114,111,0,0,0,114,113,0,0,0,114,188,0,0,0,114, - 186,0,0,0,114,251,0,0,0,114,162,0,0,0,114,203, - 0,0,0,114,190,0,0,0,114,189,0,0,0,114,193,0, - 0,0,114,194,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,250,0,0,0, - 4,4,0,0,115,16,0,0,0,12,1,12,3,18,9,12, - 3,12,3,12,3,12,3,12,3,114,250,0,0,0,99,0, - 0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,64, - 0,0,0,115,160,0,0,0,101,0,0,90,1,0,100,0, - 0,90,2,0,100,1,0,90,3,0,101,4,0,100,2,0, - 100,3,0,132,0,0,131,1,0,90,5,0,101,4,0,100, - 4,0,100,5,0,132,0,0,131,1,0,90,6,0,101,4, - 0,100,6,0,100,7,0,132,0,0,131,1,0,90,7,0, - 101,4,0,100,8,0,100,9,0,132,0,0,131,1,0,90, - 8,0,101,4,0,100,10,0,100,11,0,100,12,0,132,1, - 0,131,1,0,90,9,0,101,4,0,100,10,0,100,10,0, - 100,13,0,100,14,0,132,2,0,131,1,0,90,10,0,101, - 4,0,100,10,0,100,15,0,100,16,0,132,1,0,131,1, - 0,90,11,0,100,10,0,83,41,17,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,55,0,0,0, - 120,48,0,116,0,0,106,1,0,106,2,0,131,0,0,68, - 93,31,0,125,1,0,116,3,0,124,1,0,100,1,0,131, - 2,0,114,16,0,124,1,0,106,4,0,131,0,0,1,113, - 16,0,87,100,2,0,83,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,7, - 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,115,0,0,0,114,253,0,0,0,41,2,114,174,0,0, - 0,218,6,102,105,110,100,101,114,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,253,0,0,0,49,4,0, - 0,115,6,0,0,0,0,4,22,1,15,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, - 107,0,0,0,116,0,0,106,1,0,100,1,0,107,9,0, - 114,41,0,116,0,0,106,1,0,12,114,41,0,116,2,0, - 106,3,0,100,2,0,116,4,0,131,2,0,1,120,59,0, - 116,0,0,106,1,0,68,93,44,0,125,2,0,121,14,0, - 124,2,0,124,1,0,131,1,0,83,87,113,51,0,4,116, - 5,0,107,10,0,114,94,0,1,1,1,119,51,0,89,113, - 51,0,88,113,51,0,87,100,1,0,83,100,1,0,83,41, - 3,122,113,83,101,97,114,99,104,32,115,101,113,117,101,110, - 99,101,32,111,102,32,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,10,10,32,32,32,32,32,32,32,32,73,102, - 32,39,104,111,111,107,115,39,32,105,115,32,102,97,108,115, - 101,32,116,104,101,110,32,117,115,101,32,115,121,115,46,112, - 97,116,104,95,104,111,111,107,115,46,10,10,32,32,32,32, - 32,32,32,32,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,7,0,0,0,218,10,112,97,116,104,95,104,111,111,107, - 115,114,60,0,0,0,114,61,0,0,0,114,125,0,0,0, - 114,107,0,0,0,41,3,114,174,0,0,0,114,35,0,0, - 0,90,4,104,111,111,107,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,218,11,95,112,97,116,104,95,104,111, - 111,107,115,57,4,0,0,115,16,0,0,0,0,7,25,1, - 16,1,16,1,3,1,14,1,13,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,123,0,0,0,124,1, - 0,100,1,0,107,2,0,114,53,0,121,16,0,116,0,0, - 106,1,0,131,0,0,125,1,0,87,110,22,0,4,116,2, - 0,107,10,0,114,52,0,1,1,1,100,2,0,83,89,110, - 1,0,88,121,17,0,116,3,0,106,4,0,124,1,0,25, - 125,2,0,87,110,46,0,4,116,5,0,107,10,0,114,118, - 0,1,1,1,124,0,0,106,6,0,124,1,0,131,1,0, - 125,2,0,124,2,0,116,3,0,106,4,0,124,1,0,60, - 89,110,1,0,88,124,2,0,83,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, - 30,0,0,0,78,41,7,114,3,0,0,0,114,45,0,0, - 0,218,17,70,105,108,101,78,111,116,70,111,117,110,100,69, - 114,114,111,114,114,7,0,0,0,114,254,0,0,0,114,142, - 0,0,0,114,2,1,0,0,41,3,114,174,0,0,0,114, - 35,0,0,0,114,0,1,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,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,74,4, - 0,0,115,22,0,0,0,0,8,12,1,3,1,16,1,13, - 3,9,1,3,1,17,1,13,1,15,1,18,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,3,0,0,0,67, - 0,0,0,115,116,0,0,0,116,0,0,124,2,0,100,1, - 0,131,2,0,114,39,0,124,2,0,106,1,0,124,1,0, - 131,1,0,92,2,0,125,3,0,125,4,0,110,21,0,124, - 2,0,106,2,0,124,1,0,131,1,0,125,3,0,103,0, - 0,125,4,0,124,3,0,100,0,0,107,9,0,114,85,0, - 116,3,0,124,1,0,124,3,0,131,2,0,83,116,4,0, - 106,5,0,124,1,0,100,0,0,131,2,0,125,5,0,124, - 4,0,124,5,0,95,6,0,124,5,0,83,41,2,78,114, - 124,0,0,0,41,7,114,115,0,0,0,114,124,0,0,0, - 114,185,0,0,0,114,131,0,0,0,114,121,0,0,0,114, - 166,0,0,0,114,164,0,0,0,41,6,114,174,0,0,0, - 114,126,0,0,0,114,0,1,0,0,114,127,0,0,0,114, - 128,0,0,0,114,133,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,218,16,95,108,101,103,97,99, - 121,95,103,101,116,95,115,112,101,99,96,4,0,0,115,18, - 0,0,0,0,4,15,1,24,2,15,1,6,1,12,1,13, - 1,18,1,9,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,243,0,0,0,103,0,0, - 125,4,0,120,230,0,124,2,0,68,93,191,0,125,5,0, - 116,0,0,124,5,0,116,1,0,116,2,0,102,2,0,131, - 2,0,115,43,0,113,13,0,124,0,0,106,3,0,124,5, - 0,131,1,0,125,6,0,124,6,0,100,1,0,107,9,0, - 114,13,0,116,4,0,124,6,0,100,2,0,131,2,0,114, - 106,0,124,6,0,106,5,0,124,1,0,124,3,0,131,2, - 0,125,7,0,110,18,0,124,0,0,106,6,0,124,1,0, - 124,6,0,131,2,0,125,7,0,124,7,0,100,1,0,107, - 8,0,114,139,0,113,13,0,124,7,0,106,7,0,100,1, - 0,107,9,0,114,158,0,124,7,0,83,124,7,0,106,8, - 0,125,8,0,124,8,0,100,1,0,107,8,0,114,191,0, - 116,9,0,100,3,0,131,1,0,130,1,0,124,4,0,106, - 10,0,124,8,0,131,1,0,1,113,13,0,87,116,11,0, - 106,12,0,124,1,0,100,1,0,131,2,0,125,7,0,124, - 4,0,124,7,0,95,8,0,124,7,0,83,100,1,0,83, - 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,184,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,148,0,0,0,114,69,0,0,0,218,5,98,121,116,101, - 115,114,4,1,0,0,114,115,0,0,0,114,184,0,0,0, - 114,5,1,0,0,114,127,0,0,0,114,164,0,0,0,114, - 107,0,0,0,114,154,0,0,0,114,121,0,0,0,114,166, - 0,0,0,41,9,114,174,0,0,0,114,126,0,0,0,114, - 35,0,0,0,114,183,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,0,1,0,0,114,133,0,0,0,114,128,0,0,0,114, - 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,9, - 95,103,101,116,95,115,112,101,99,111,4,0,0,115,40,0, - 0,0,0,5,6,1,13,1,21,1,3,1,15,1,12,1, - 15,1,21,2,18,1,12,1,3,1,15,1,4,1,9,1, - 12,1,12,5,17,2,18,1,9,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,4,0,0, - 0,67,0,0,0,115,140,0,0,0,124,2,0,100,1,0, - 107,8,0,114,21,0,116,0,0,106,1,0,125,2,0,124, - 0,0,106,2,0,124,1,0,124,2,0,124,3,0,131,3, - 0,125,4,0,124,4,0,100,1,0,107,8,0,114,58,0, - 100,1,0,83,124,4,0,106,3,0,100,1,0,107,8,0, - 114,132,0,124,4,0,106,4,0,125,5,0,124,5,0,114, - 125,0,100,2,0,124,4,0,95,5,0,116,6,0,124,1, - 0,124,5,0,124,0,0,106,2,0,131,3,0,124,4,0, - 95,4,0,124,4,0,83,100,1,0,83,110,4,0,124,4, - 0,83,100,1,0,83,41,3,122,98,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,78,90,9,110, - 97,109,101,115,112,97,99,101,41,7,114,7,0,0,0,114, - 35,0,0,0,114,8,1,0,0,114,127,0,0,0,114,164, - 0,0,0,114,161,0,0,0,114,234,0,0,0,41,6,114, - 174,0,0,0,114,126,0,0,0,114,35,0,0,0,114,183, - 0,0,0,114,133,0,0,0,114,7,1,0,0,114,4,0, - 0,0,114,4,0,0,0,114,5,0,0,0,114,184,0,0, - 0,143,4,0,0,115,26,0,0,0,0,4,12,1,9,1, - 21,1,12,1,4,1,15,1,9,1,6,3,9,1,24,1, - 4,2,7,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,3,0,0,0,67,0,0,0,115, - 41,0,0,0,124,0,0,106,0,0,124,1,0,124,2,0, - 131,2,0,125,3,0,124,3,0,100,1,0,107,8,0,114, - 34,0,100,1,0,83,124,3,0,106,1,0,83,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,184, - 0,0,0,114,127,0,0,0,41,4,114,174,0,0,0,114, - 126,0,0,0,114,35,0,0,0,114,133,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,185,0, - 0,0,165,4,0,0,115,8,0,0,0,0,8,18,1,12, - 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,12,114,112,0, - 0,0,114,111,0,0,0,114,113,0,0,0,114,114,0,0, - 0,114,186,0,0,0,114,253,0,0,0,114,2,1,0,0, - 114,4,1,0,0,114,5,1,0,0,114,8,1,0,0,114, - 184,0,0,0,114,185,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,252,0, - 0,0,45,4,0,0,115,22,0,0,0,12,2,6,2,18, - 8,18,17,18,22,18,15,3,1,18,31,3,1,21,21,3, - 1,114,252,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,133,0,0,0, + 0,0,115,10,0,0,0,116,0,0,130,1,0,100,1,0, + 83,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,73,79,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,218,7,73,79,69,114, + 114,111,114,41,2,114,108,0,0,0,114,35,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,10, + 112,97,116,104,95,109,116,105,109,101,191,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,3,0,0,0,67, + 0,0,0,115,19,0,0,0,124,0,0,106,0,0,124,1, + 0,131,1,0,100,1,0,105,1,0,83,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,73,79,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,138,0,0, + 0,41,1,114,197,0,0,0,41,2,114,108,0,0,0,114, + 35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,218,10,112,97,116,104,95,115,116,97,116,115,199, + 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, + 3,0,0,0,67,0,0,0,115,16,0,0,0,124,0,0, + 106,0,0,124,2,0,124,3,0,131,2,0,83,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,108,0,0,0,114,90,0,0,0,90,10,99, + 97,99,104,101,95,112,97,116,104,114,53,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,218,15,95, + 99,97,99,104,101,95,98,121,116,101,99,111,100,101,212,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,0,83,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,108,0,0,0,114,35,0,0, + 0,114,53,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,199,0,0,0,222,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, + 105,0,0,0,124,0,0,106,0,0,124,1,0,131,1,0, + 125,2,0,121,19,0,124,0,0,106,1,0,124,2,0,131, + 1,0,125,3,0,87,110,58,0,4,116,2,0,107,10,0, + 114,94,0,1,125,4,0,1,122,26,0,116,3,0,100,1, + 0,100,2,0,124,1,0,131,1,1,124,4,0,130,2,0, + 87,89,100,3,0,100,3,0,125,4,0,126,4,0,88,110, + 1,0,88,116,4,0,124,3,0,131,1,0,83,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,114,106, + 0,0,0,78,41,5,114,163,0,0,0,218,8,103,101,116, + 95,100,97,116,97,114,40,0,0,0,114,107,0,0,0,114, + 160,0,0,0,41,5,114,108,0,0,0,114,126,0,0,0, + 114,35,0,0,0,114,158,0,0,0,218,3,101,120,99,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,218,10, + 103,101,116,95,115,111,117,114,99,101,229,2,0,0,115,14, + 0,0,0,0,2,15,1,3,1,19,1,18,1,9,1,31, + 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,218,9,95,111,112,116, + 105,109,105,122,101,114,29,0,0,0,99,3,0,0,0,1, + 0,0,0,4,0,0,0,9,0,0,0,67,0,0,0,115, + 34,0,0,0,116,0,0,106,1,0,116,2,0,124,1,0, + 124,2,0,100,1,0,100,2,0,100,3,0,100,4,0,124, + 3,0,131,4,2,83,41,5,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,192,0,0, + 0,218,12,100,111,110,116,95,105,110,104,101,114,105,116,84, + 114,68,0,0,0,41,3,114,121,0,0,0,114,191,0,0, + 0,218,7,99,111,109,112,105,108,101,41,4,114,108,0,0, + 0,114,53,0,0,0,114,35,0,0,0,114,204,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 14,115,111,117,114,99,101,95,116,111,95,99,111,100,101,239, + 2,0,0,115,4,0,0,0,0,5,21,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,174, + 1,0,0,124,0,0,106,0,0,124,1,0,131,1,0,125, + 2,0,100,1,0,125,3,0,121,16,0,116,1,0,124,2, + 0,131,1,0,125,4,0,87,110,24,0,4,116,2,0,107, + 10,0,114,63,0,1,1,1,100,1,0,125,4,0,89,110, + 202,0,88,121,19,0,124,0,0,106,3,0,124,2,0,131, + 1,0,125,5,0,87,110,18,0,4,116,4,0,107,10,0, + 114,103,0,1,1,1,89,110,162,0,88,116,5,0,124,5, + 0,100,2,0,25,131,1,0,125,3,0,121,19,0,124,0, + 0,106,6,0,124,4,0,131,1,0,125,6,0,87,110,18, + 0,4,116,7,0,107,10,0,114,159,0,1,1,1,89,110, + 106,0,88,121,34,0,116,8,0,124,6,0,100,3,0,124, + 5,0,100,4,0,124,1,0,100,5,0,124,4,0,131,1, + 3,125,7,0,87,110,24,0,4,116,9,0,116,10,0,102, + 2,0,107,10,0,114,220,0,1,1,1,89,110,45,0,88, + 116,11,0,100,6,0,124,4,0,124,2,0,131,3,0,1, + 116,12,0,124,7,0,100,4,0,124,1,0,100,7,0,124, + 4,0,100,8,0,124,2,0,131,1,3,83,124,0,0,106, + 6,0,124,2,0,131,1,0,125,8,0,124,0,0,106,13, + 0,124,8,0,124,2,0,131,2,0,125,9,0,116,11,0, + 100,9,0,124,2,0,131,2,0,1,116,14,0,106,15,0, + 12,114,170,1,124,4,0,100,1,0,107,9,0,114,170,1, + 124,3,0,100,1,0,107,9,0,114,170,1,116,16,0,124, + 9,0,124,3,0,116,17,0,124,8,0,131,1,0,131,3, + 0,125,6,0,121,36,0,124,0,0,106,18,0,124,2,0, + 124,4,0,124,6,0,131,3,0,1,116,11,0,100,10,0, + 124,4,0,131,2,0,1,87,110,18,0,4,116,2,0,107, + 10,0,114,169,1,1,1,1,89,110,1,0,88,124,9,0, + 83,41,11,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,138,0,0,0,114,143,0,0,0,114,106, + 0,0,0,114,35,0,0,0,122,13,123,125,32,109,97,116, + 99,104,101,115,32,123,125,114,89,0,0,0,114,90,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,163,0,0,0,114,79,0,0,0,114,66, + 0,0,0,114,198,0,0,0,114,196,0,0,0,114,14,0, + 0,0,114,201,0,0,0,114,40,0,0,0,114,146,0,0, + 0,114,107,0,0,0,114,141,0,0,0,114,105,0,0,0, + 114,152,0,0,0,114,207,0,0,0,114,7,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,155,0,0,0,114,31,0,0,0,114,200, + 0,0,0,41,10,114,108,0,0,0,114,126,0,0,0,114, + 90,0,0,0,114,144,0,0,0,114,89,0,0,0,218,2, + 115,116,114,53,0,0,0,218,10,98,121,116,101,115,95,100, + 97,116,97,114,158,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, + 5,0,0,0,114,190,0,0,0,247,2,0,0,115,78,0, + 0,0,0,7,15,1,6,1,3,1,16,1,13,1,11,2, + 3,1,19,1,13,1,5,2,16,1,3,1,19,1,13,1, + 5,2,3,1,9,1,12,1,13,1,19,1,5,2,9,1, + 7,1,15,1,6,1,7,1,15,1,18,1,13,1,22,1, + 12,1,9,1,15,1,3,1,19,1,17,1,13,1,5,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,87,0,0,0,41,10,114, + 112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,197, + 0,0,0,114,198,0,0,0,114,200,0,0,0,114,199,0, + 0,0,114,203,0,0,0,114,207,0,0,0,114,190,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,195,0,0,0,189,2,0,0,115,14, + 0,0,0,12,2,12,8,12,13,12,10,12,7,12,10,18, + 8,114,195,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,112,0,0,0, 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4, - 0,100,5,0,132,0,0,90,5,0,101,6,0,90,7,0, - 100,6,0,100,7,0,132,0,0,90,8,0,100,8,0,100, - 9,0,132,0,0,90,9,0,100,10,0,100,11,0,100,12, - 0,132,1,0,90,10,0,100,13,0,100,14,0,132,0,0, - 90,11,0,101,12,0,100,15,0,100,16,0,132,0,0,131, - 1,0,90,13,0,100,17,0,100,18,0,132,0,0,90,14, - 0,100,10,0,83,41,19,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,5,0, - 0,0,7,0,0,0,115,122,0,0,0,103,0,0,125,3, - 0,120,52,0,124,2,0,68,93,44,0,92,2,0,137,0, - 0,125,4,0,124,3,0,106,0,0,135,0,0,102,1,0, - 100,1,0,100,2,0,134,0,0,124,4,0,68,131,1,0, - 131,1,0,1,113,13,0,87,124,3,0,124,0,0,95,1, - 0,124,1,0,112,79,0,100,3,0,124,0,0,95,2,0, - 100,6,0,124,0,0,95,3,0,116,4,0,131,0,0,124, - 0,0,95,5,0,116,4,0,131,0,0,124,0,0,95,6, - 0,100,5,0,83,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,27,0,0,0,124,0,0, - 93,17,0,125,1,0,124,1,0,136,0,0,102,2,0,86, - 1,113,3,0,100,0,0,83,41,1,78,114,4,0,0,0, - 41,2,114,22,0,0,0,114,229,0,0,0,41,1,114,127, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,231,0, - 0,0,194,4,0,0,115,2,0,0,0,6,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,58,0,0,0,114,29,0,0,0,78, - 114,87,0,0,0,41,7,114,154,0,0,0,218,8,95,108, - 111,97,100,101,114,115,114,35,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,108,0,0,0,114,35,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,171,0,0,0,114,4,0,0,0,41,1, - 114,127,0,0,0,114,5,0,0,0,114,188,0,0,0,188, - 4,0,0,115,16,0,0,0,0,4,6,1,19,1,36,1, - 9,2,15,1,9,1,12,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,13,0,0,0,100,3,0,124,0,0,95,0,0, - 100,2,0,83,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,29,0,0,0,78,114,87,0, - 0,0,41,1,114,11,1,0,0,41,1,114,108,0,0,0, - 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, - 253,0,0,0,202,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,2,0,0,0,67,0, - 0,0,115,59,0,0,0,124,0,0,106,0,0,124,1,0, - 131,1,0,125,2,0,124,2,0,100,1,0,107,8,0,114, - 37,0,100,1,0,103,0,0,102,2,0,83,124,2,0,106, - 1,0,124,2,0,106,2,0,112,55,0,103,0,0,102,2, - 0,83,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,184, - 0,0,0,114,127,0,0,0,114,164,0,0,0,41,3,114, - 108,0,0,0,114,126,0,0,0,114,133,0,0,0,114,4, - 0,0,0,114,4,0,0,0,114,5,0,0,0,114,124,0, - 0,0,208,4,0,0,115,8,0,0,0,0,7,15,1,12, - 1,10,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,7,0,0,0,67,0,0,0, - 115,40,0,0,0,124,1,0,124,2,0,124,3,0,131,2, - 0,125,6,0,116,0,0,124,2,0,124,3,0,100,1,0, - 124,6,0,100,2,0,124,4,0,131,2,2,83,41,3,78, - 114,127,0,0,0,114,164,0,0,0,41,1,114,165,0,0, - 0,41,7,114,108,0,0,0,114,170,0,0,0,114,126,0, - 0,0,114,35,0,0,0,90,4,115,109,115,108,114,183,0, - 0,0,114,127,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,8,1,0,0,220,4,0,0,115, - 6,0,0,0,0,1,15,1,18,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,15,0, - 0,0,67,0,0,0,115,234,1,0,0,100,1,0,125,3, - 0,124,1,0,106,0,0,100,2,0,131,1,0,100,3,0, - 25,125,4,0,121,34,0,116,1,0,124,0,0,106,2,0, - 112,49,0,116,3,0,106,4,0,131,0,0,131,1,0,106, - 5,0,125,5,0,87,110,24,0,4,116,6,0,107,10,0, - 114,85,0,1,1,1,100,10,0,125,5,0,89,110,1,0, - 88,124,5,0,124,0,0,106,7,0,107,3,0,114,120,0, - 124,0,0,106,8,0,131,0,0,1,124,5,0,124,0,0, - 95,7,0,116,9,0,131,0,0,114,153,0,124,0,0,106, - 10,0,125,6,0,124,4,0,106,11,0,131,0,0,125,7, - 0,110,15,0,124,0,0,106,12,0,125,6,0,124,4,0, - 125,7,0,124,7,0,124,6,0,107,6,0,114,45,1,116, - 13,0,124,0,0,106,2,0,124,4,0,131,2,0,125,8, - 0,120,100,0,124,0,0,106,14,0,68,93,77,0,92,2, - 0,125,9,0,125,10,0,100,5,0,124,9,0,23,125,11, - 0,116,13,0,124,8,0,124,11,0,131,2,0,125,12,0, - 116,15,0,124,12,0,131,1,0,114,208,0,124,0,0,106, - 16,0,124,10,0,124,1,0,124,12,0,124,8,0,103,1, - 0,124,2,0,131,5,0,83,113,208,0,87,116,17,0,124, - 8,0,131,1,0,125,3,0,120,123,0,124,0,0,106,14, - 0,68,93,112,0,92,2,0,125,9,0,125,10,0,116,13, - 0,124,0,0,106,2,0,124,4,0,124,9,0,23,131,2, - 0,125,12,0,116,18,0,100,6,0,106,19,0,124,12,0, - 131,1,0,100,7,0,100,3,0,131,1,1,1,124,7,0, - 124,9,0,23,124,6,0,107,6,0,114,55,1,116,15,0, - 124,12,0,131,1,0,114,55,1,124,0,0,106,16,0,124, - 10,0,124,1,0,124,12,0,100,8,0,124,2,0,131,5, - 0,83,113,55,1,87,124,3,0,114,230,1,116,18,0,100, - 9,0,106,19,0,124,8,0,131,1,0,131,1,0,1,116, - 20,0,106,21,0,124,1,0,100,8,0,131,2,0,125,13, - 0,124,8,0,103,1,0,124,13,0,95,22,0,124,13,0, - 83,100,8,0,83,41,11,122,125,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,70,114,58,0,0,0,114,56,0,0, - 0,114,29,0,0,0,114,188,0,0,0,122,9,116,114,121, - 105,110,103,32,123,125,114,98,0,0,0,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,87,0,0,0,41,23,114,32, - 0,0,0,114,39,0,0,0,114,35,0,0,0,114,3,0, - 0,0,114,45,0,0,0,114,220,0,0,0,114,40,0,0, - 0,114,11,1,0,0,218,11,95,102,105,108,108,95,99,97, - 99,104,101,114,6,0,0,0,114,14,1,0,0,114,88,0, - 0,0,114,13,1,0,0,114,28,0,0,0,114,10,1,0, - 0,114,44,0,0,0,114,8,1,0,0,114,46,0,0,0, - 114,105,0,0,0,114,47,0,0,0,114,121,0,0,0,114, - 166,0,0,0,114,164,0,0,0,41,14,114,108,0,0,0, - 114,126,0,0,0,114,183,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,138,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,229,0,0,0,114, - 170,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,133, + 0,100,5,0,132,0,0,90,5,0,100,6,0,100,7,0, + 132,0,0,90,6,0,101,7,0,135,0,0,102,1,0,100, + 8,0,100,9,0,134,0,0,131,1,0,90,8,0,101,7, + 0,100,10,0,100,11,0,132,0,0,131,1,0,90,9,0, + 100,12,0,100,13,0,132,0,0,90,10,0,135,0,0,83, + 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,22,0,0, + 0,124,1,0,124,0,0,95,0,0,124,2,0,124,0,0, + 95,1,0,100,1,0,83,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,106,0,0,0,114,35, + 0,0,0,41,3,114,108,0,0,0,114,126,0,0,0,114, + 35,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,188,0,0,0,48,3,0,0,115,4,0,0, + 0,0,3,9,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, + 34,0,0,0,124,0,0,106,0,0,124,1,0,106,0,0, + 107,2,0,111,33,0,124,0,0,106,1,0,124,1,0,106, + 1,0,107,2,0,83,41,1,78,41,2,218,9,95,95,99, + 108,97,115,115,95,95,114,118,0,0,0,41,2,114,108,0, + 0,0,218,5,111,116,104,101,114,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,218,6,95,95,101,113,95,95, + 54,3,0,0,115,4,0,0,0,0,1,18,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,26,0,0,0,116,0,0,124,0,0, + 106,1,0,131,1,0,116,0,0,124,0,0,106,2,0,131, + 1,0,65,83,41,1,78,41,3,218,4,104,97,115,104,114, + 106,0,0,0,114,35,0,0,0,41,1,114,108,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 8,95,95,104,97,115,104,95,95,58,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,22, + 0,0,0,116,0,0,116,1,0,124,0,0,131,2,0,106, + 2,0,124,1,0,131,1,0,83,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,211,0,0,0,114, + 194,0,0,0,41,2,114,108,0,0,0,114,126,0,0,0, + 41,1,114,212,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,194,0,0,0,61,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,7, + 0,0,0,124,0,0,106,0,0,83,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,35,0,0,0,41, + 2,114,108,0,0,0,114,126,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,163,0,0,0,73, + 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,42,0,0,0,116,0,0, + 106,1,0,124,1,0,100,1,0,131,2,0,143,17,0,125, + 2,0,124,2,0,106,2,0,131,0,0,83,87,100,2,0, + 81,82,88,100,2,0,83,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,49,0,0,0,114,50,0, + 0,0,90,4,114,101,97,100,41,3,114,108,0,0,0,114, + 35,0,0,0,114,54,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,201,0,0,0,78,3,0, + 0,115,4,0,0,0,0,2,21,1,122,19,70,105,108,101, + 76,111,97,100,101,114,46,103,101,116,95,100,97,116,97,41, + 11,114,112,0,0,0,114,111,0,0,0,114,113,0,0,0, + 114,114,0,0,0,114,188,0,0,0,114,214,0,0,0,114, + 216,0,0,0,114,123,0,0,0,114,194,0,0,0,114,163, + 0,0,0,114,201,0,0,0,114,4,0,0,0,114,4,0, + 0,0,41,1,114,212,0,0,0,114,5,0,0,0,114,211, + 0,0,0,43,3,0,0,115,14,0,0,0,12,3,6,2, + 12,6,12,4,12,3,24,12,18,5,114,211,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,64,0,0,0,101,0,0,90,1,0,100, + 0,0,90,2,0,100,1,0,90,3,0,100,2,0,100,3, + 0,132,0,0,90,4,0,100,4,0,100,5,0,132,0,0, + 90,5,0,100,6,0,100,7,0,100,8,0,100,9,0,132, + 0,1,90,6,0,100,10,0,83,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,5,0,0,0,67,0, + 0,0,115,34,0,0,0,116,0,0,124,1,0,131,1,0, + 125,2,0,124,2,0,106,1,0,100,1,0,124,2,0,106, + 2,0,100,2,0,105,2,0,83,41,3,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,114,138, + 0,0,0,114,139,0,0,0,41,3,114,39,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,108,0,0,0,114,35,0,0,0,114,209, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,184,0,0,0,225,4,0,0,115,68,0,0,0, - 0,3,6,1,19,1,3,1,34,1,13,1,11,1,15,1, - 10,1,9,2,9,1,9,1,15,2,9,1,6,2,12,1, - 18,1,22,1,10,1,15,1,12,1,32,4,12,2,22,1, - 22,1,25,1,16,1,12,1,29,1,6,1,19,1,18,1, - 12,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,13,0,0,0,67,0,0,0,115, - 11,1,0,0,124,0,0,106,0,0,125,1,0,121,31,0, - 116,1,0,106,2,0,124,1,0,112,33,0,116,1,0,106, - 3,0,131,0,0,131,1,0,125,2,0,87,110,33,0,4, - 116,4,0,116,5,0,116,6,0,102,3,0,107,10,0,114, - 75,0,1,1,1,103,0,0,125,2,0,89,110,1,0,88, - 116,7,0,106,8,0,106,9,0,100,1,0,131,1,0,115, - 112,0,116,10,0,124,2,0,131,1,0,124,0,0,95,11, - 0,110,111,0,116,10,0,131,0,0,125,3,0,120,90,0, - 124,2,0,68,93,82,0,125,4,0,124,4,0,106,12,0, - 100,2,0,131,1,0,92,3,0,125,5,0,125,6,0,125, - 7,0,124,6,0,114,191,0,100,3,0,106,13,0,124,5, - 0,124,7,0,106,14,0,131,0,0,131,2,0,125,8,0, - 110,6,0,124,5,0,125,8,0,124,3,0,106,15,0,124, - 8,0,131,1,0,1,113,128,0,87,124,3,0,124,0,0, - 95,11,0,116,7,0,106,8,0,106,9,0,116,16,0,131, - 1,0,114,7,1,100,4,0,100,5,0,132,0,0,124,2, - 0,68,131,1,0,124,0,0,95,17,0,100,6,0,83,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,58,0,0, - 0,122,5,123,125,46,123,125,99,1,0,0,0,0,0,0, - 0,2,0,0,0,3,0,0,0,83,0,0,0,115,28,0, - 0,0,104,0,0,124,0,0,93,18,0,125,1,0,124,1, - 0,106,0,0,131,0,0,146,2,0,113,6,0,83,114,4, - 0,0,0,41,1,114,88,0,0,0,41,2,114,22,0,0, - 0,90,2,102,110,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,250,9,60,115,101,116,99,111,109,112,62,43, - 5,0,0,115,2,0,0,0,9,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,35,0,0,0,114,3,0, - 0,0,90,7,108,105,115,116,100,105,114,114,45,0,0,0, - 114,3,1,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,7,0,0,0,114, - 8,0,0,0,114,9,0,0,0,114,12,1,0,0,114,13, - 1,0,0,114,83,0,0,0,114,47,0,0,0,114,88,0, - 0,0,218,3,97,100,100,114,10,0,0,0,114,14,1,0, - 0,41,9,114,108,0,0,0,114,35,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,248, - 0,0,0,114,106,0,0,0,114,241,0,0,0,114,229,0, - 0,0,90,8,110,101,119,95,110,97,109,101,114,4,0,0, - 0,114,4,0,0,0,114,5,0,0,0,114,16,1,0,0, - 14,5,0,0,115,34,0,0,0,0,2,9,1,3,1,31, - 1,22,3,11,3,18,1,18,7,9,1,13,1,24,1,6, - 1,27,2,6,1,17,1,9,1,18,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,25,0,0,0,135,0,0, - 135,1,0,102,2,0,100,1,0,100,2,0,134,0,0,125, - 2,0,124,2,0,83,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,43,0,0,0,116,0,0,124,0, - 0,131,1,0,115,30,0,116,1,0,100,1,0,100,2,0, - 124,0,0,131,1,1,130,1,0,136,0,0,124,0,0,136, - 1,0,140,1,0,83,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,114,35,0,0,0,41,2,114,46, - 0,0,0,114,107,0,0,0,41,1,114,35,0,0,0,41, - 2,114,174,0,0,0,114,15,1,0,0,114,4,0,0,0, - 114,5,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,55, - 5,0,0,115,6,0,0,0,0,2,12,1,18,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,174,0, - 0,0,114,15,1,0,0,114,21,1,0,0,114,4,0,0, - 0,41,2,114,174,0,0,0,114,15,1,0,0,114,5,0, - 0,0,218,9,112,97,116,104,95,104,111,111,107,45,5,0, - 0,115,4,0,0,0,0,10,21,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,2,0,0, - 0,67,0,0,0,115,16,0,0,0,100,1,0,106,0,0, - 124,0,0,106,1,0,131,1,0,83,41,2,78,122,16,70, - 105,108,101,70,105,110,100,101,114,40,123,33,114,125,41,41, - 2,114,47,0,0,0,114,35,0,0,0,41,1,114,108,0, + 0,0,114,198,0,0,0,88,3,0,0,115,4,0,0,0, + 0,2,12,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,34,0,0,0,116,0,0,124,1, + 0,131,1,0,125,4,0,124,0,0,106,1,0,124,2,0, + 124,3,0,100,1,0,124,4,0,131,2,1,83,41,2,78, + 218,5,95,109,111,100,101,41,2,114,97,0,0,0,114,199, + 0,0,0,41,5,114,108,0,0,0,114,90,0,0,0,114, + 89,0,0,0,114,53,0,0,0,114,42,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,200,0, + 0,0,93,3,0,0,115,4,0,0,0,0,2,12,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,114,221,0,0,0,105,182,1,0,0,99,3,0,0,0, + 1,0,0,0,9,0,0,0,17,0,0,0,67,0,0,0, + 115,53,1,0,0,116,0,0,124,1,0,131,1,0,92,2, + 0,125,4,0,125,5,0,103,0,0,125,6,0,120,54,0, + 124,4,0,114,80,0,116,1,0,124,4,0,131,1,0,12, + 114,80,0,116,0,0,124,4,0,131,1,0,92,2,0,125, + 4,0,125,7,0,124,6,0,106,2,0,124,7,0,131,1, + 0,1,113,27,0,87,120,132,0,116,3,0,124,6,0,131, + 1,0,68,93,118,0,125,7,0,116,4,0,124,4,0,124, + 7,0,131,2,0,125,4,0,121,17,0,116,5,0,106,6, + 0,124,4,0,131,1,0,1,87,113,94,0,4,116,7,0, + 107,10,0,114,155,0,1,1,1,119,94,0,89,113,94,0, + 4,116,8,0,107,10,0,114,211,0,1,125,8,0,1,122, + 25,0,116,9,0,100,1,0,124,4,0,124,8,0,131,3, + 0,1,100,2,0,83,87,89,100,2,0,100,2,0,125,8, + 0,126,8,0,88,113,94,0,88,113,94,0,87,121,33,0, + 116,10,0,124,1,0,124,2,0,124,3,0,131,3,0,1, + 116,9,0,100,3,0,124,1,0,131,2,0,1,87,110,53, + 0,4,116,8,0,107,10,0,114,48,1,1,125,8,0,1, + 122,21,0,116,9,0,100,1,0,124,1,0,124,8,0,131, + 3,0,1,87,89,100,2,0,100,2,0,125,8,0,126,8, + 0,88,110,1,0,88,100,2,0,83,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,11,114,38,0,0,0,114,46,0,0, + 0,114,169,0,0,0,114,33,0,0,0,114,28,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,40,0, + 0,0,114,105,0,0,0,114,55,0,0,0,41,9,114,108, + 0,0,0,114,35,0,0,0,114,53,0,0,0,114,221,0, + 0,0,218,6,112,97,114,101,110,116,114,94,0,0,0,114, + 27,0,0,0,114,23,0,0,0,114,202,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,199,0, + 0,0,98,3,0,0,115,38,0,0,0,0,2,18,1,6, + 2,22,1,18,1,17,2,19,1,15,1,3,1,17,1,13, + 2,7,1,18,3,16,1,27,1,3,1,16,1,17,1,18, + 2,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, + 112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,114, + 0,0,0,114,198,0,0,0,114,200,0,0,0,114,199,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,219,0,0,0,84,3,0,0,115, + 8,0,0,0,12,2,6,2,12,5,12,5,114,219,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,46,0,0,0,101,0,0,90,1, + 0,100,0,0,90,2,0,100,1,0,90,3,0,100,2,0, + 100,3,0,132,0,0,90,4,0,100,4,0,100,5,0,132, + 0,0,90,5,0,100,6,0,83,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,6,0,0, + 0,67,0,0,0,115,76,0,0,0,124,0,0,106,0,0, + 124,1,0,131,1,0,125,2,0,124,0,0,106,1,0,124, + 2,0,131,1,0,125,3,0,116,2,0,124,3,0,100,1, + 0,124,1,0,100,2,0,124,2,0,131,1,2,125,4,0, + 116,3,0,124,4,0,100,1,0,124,1,0,100,3,0,124, + 2,0,131,1,2,83,41,4,78,114,106,0,0,0,114,35, + 0,0,0,114,89,0,0,0,41,4,114,163,0,0,0,114, + 201,0,0,0,114,146,0,0,0,114,152,0,0,0,41,5, + 114,108,0,0,0,114,126,0,0,0,114,35,0,0,0,114, + 53,0,0,0,114,210,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,114,190,0,0,0,131,3,0, + 0,115,8,0,0,0,0,1,15,1,15,1,24,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,0,83,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,108, + 0,0,0,114,126,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,203,0,0,0,137,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,112,0,0,0, + 114,111,0,0,0,114,113,0,0,0,114,114,0,0,0,114, + 190,0,0,0,114,203,0,0,0,114,4,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,224,0, + 0,0,127,3,0,0,115,6,0,0,0,12,2,6,2,12, + 6,114,224,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,130,0,0,0, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,90, + 3,0,100,2,0,100,3,0,132,0,0,90,4,0,100,4, + 0,100,5,0,132,0,0,90,5,0,100,6,0,100,7,0, + 132,0,0,90,6,0,101,7,0,100,8,0,100,9,0,132, + 0,0,131,1,0,90,8,0,100,10,0,100,11,0,132,0, + 0,90,9,0,100,12,0,100,13,0,132,0,0,90,10,0, + 100,14,0,100,15,0,132,0,0,90,11,0,101,7,0,100, + 16,0,100,17,0,132,0,0,131,1,0,90,12,0,100,18, + 0,83,41,19,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,22,0, + 0,0,124,1,0,124,0,0,95,0,0,124,2,0,124,0, + 0,95,1,0,100,0,0,83,41,1,78,41,2,114,106,0, + 0,0,114,35,0,0,0,41,3,114,108,0,0,0,114,106, + 0,0,0,114,35,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,188,0,0,0,154,3,0,0, + 115,4,0,0,0,0,1,9,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,34,0,0, + 0,124,0,0,106,0,0,124,1,0,106,0,0,107,2,0, + 111,33,0,124,0,0,106,1,0,124,1,0,106,1,0,107, + 2,0,83,41,1,78,41,2,114,212,0,0,0,114,118,0, + 0,0,41,2,114,108,0,0,0,114,213,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,214,0, + 0,0,158,3,0,0,115,4,0,0,0,0,1,18,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,26,0,0,0,116,0,0,124,0,0,106,1,0,131,1, + 0,116,0,0,124,0,0,106,2,0,131,1,0,65,83,41, + 1,78,41,3,114,215,0,0,0,114,106,0,0,0,114,35, + 0,0,0,41,1,114,108,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,114,216,0,0,0,162,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, + 4,0,0,0,11,0,0,0,67,0,0,0,115,184,0,0, + 0,116,0,0,106,1,0,124,1,0,131,1,0,143,32,0, + 1,116,0,0,106,2,0,116,3,0,106,4,0,124,1,0, + 124,0,0,106,5,0,131,3,0,125,2,0,87,100,1,0, + 81,82,88,116,6,0,100,2,0,124,0,0,106,5,0,131, + 2,0,1,124,0,0,106,7,0,124,1,0,131,1,0,125, + 3,0,124,3,0,114,128,0,116,8,0,124,2,0,100,3, + 0,131,2,0,12,114,128,0,116,9,0,124,0,0,106,5, + 0,131,1,0,100,4,0,25,103,1,0,124,2,0,95,10, + 0,124,0,0,124,2,0,95,11,0,124,2,0,106,12,0, + 124,2,0,95,13,0,124,3,0,115,180,0,124,2,0,106, + 13,0,106,14,0,100,5,0,131,1,0,100,4,0,25,124, + 2,0,95,13,0,124,2,0,83,41,6,122,25,76,111,97, + 100,32,97,110,32,101,120,116,101,110,115,105,111,110,32,109, + 111,100,117,108,101,46,78,122,33,101,120,116,101,110,115,105, + 111,110,32,109,111,100,117,108,101,32,108,111,97,100,101,100, + 32,102,114,111,109,32,123,33,114,125,218,8,95,95,112,97, + 116,104,95,95,114,59,0,0,0,114,58,0,0,0,41,15, + 114,121,0,0,0,90,13,95,77,97,110,97,103,101,82,101, + 108,111,97,100,114,191,0,0,0,114,150,0,0,0,90,12, + 108,111,97,100,95,100,121,110,97,109,105,99,114,35,0,0, + 0,114,105,0,0,0,114,162,0,0,0,114,115,0,0,0, + 114,38,0,0,0,114,226,0,0,0,218,10,95,95,108,111, + 97,100,101,114,95,95,114,112,0,0,0,218,11,95,95,112, + 97,99,107,97,103,101,95,95,114,32,0,0,0,41,4,114, + 108,0,0,0,114,126,0,0,0,114,134,0,0,0,114,162, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,114,194,0,0,0,165,3,0,0,115,24,0,0,0, + 0,5,16,1,12,1,22,1,16,1,15,1,22,1,25,1, + 9,1,12,1,6,1,25,1,122,31,69,120,116,101,110,115, + 105,111,110,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,4,0,0,0,3,0,0,0,115,48, + 0,0,0,116,0,0,124,0,0,106,1,0,131,1,0,100, + 1,0,25,137,0,0,116,2,0,135,0,0,102,1,0,100, + 2,0,100,3,0,134,0,0,116,3,0,68,131,1,0,131, + 1,0,83,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,29,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,31,0,0,0,124,0,0,93,21,0,125,1,0, + 136,0,0,100,0,0,124,1,0,23,107,2,0,86,1,113, + 3,0,100,1,0,83,41,2,114,188,0,0,0,78,114,4, + 0,0,0,41,2,114,22,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,5,0,0,0,250,9,60,103,101,110,101, + 120,112,114,62,186,3,0,0,115,2,0,0,0,6,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,38,0,0,0,114,35,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,108,0,0,0,114,126, + 0,0,0,114,4,0,0,0,41,1,114,230,0,0,0,114, + 5,0,0,0,114,162,0,0,0,183,3,0,0,115,6,0, + 0,0,0,2,19,1,18,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,0,83,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,108,0,0,0,114,126,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,190,0,0,0,189, + 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,0,83,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,108,0,0,0,114,126,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,203,0,0,0,193,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,7,0,0,0,124,0,0,106,0,0, + 83,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,35,0,0,0,41,2,114,108,0,0,0,114,126,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,247,0,0,0,63,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,15,114,112,0,0,0,114,111,0, - 0,0,114,113,0,0,0,114,114,0,0,0,114,188,0,0, - 0,114,253,0,0,0,114,130,0,0,0,114,185,0,0,0, - 114,124,0,0,0,114,8,1,0,0,114,184,0,0,0,114, - 16,1,0,0,114,186,0,0,0,114,22,1,0,0,114,247, - 0,0,0,114,4,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,9,1,0,0,179,4,0,0, - 115,20,0,0,0,12,7,6,2,12,14,12,4,6,2,12, - 12,12,5,15,45,12,31,18,18,114,9,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,195,0,0,0,124,0,0,106,0,0,100,1, - 0,131,1,0,125,4,0,124,0,0,106,0,0,100,2,0, - 131,1,0,125,5,0,124,4,0,115,99,0,124,5,0,114, - 54,0,124,5,0,106,1,0,125,4,0,110,45,0,124,2, - 0,124,3,0,107,2,0,114,84,0,116,2,0,124,1,0, - 124,2,0,131,2,0,125,4,0,110,15,0,116,3,0,124, - 1,0,124,2,0,131,2,0,125,4,0,124,5,0,115,126, - 0,116,4,0,124,1,0,124,2,0,100,3,0,124,4,0, - 131,2,1,125,5,0,121,44,0,124,5,0,124,0,0,100, - 2,0,60,124,4,0,124,0,0,100,1,0,60,124,2,0, - 124,0,0,100,4,0,60,124,3,0,124,0,0,100,5,0, - 60,87,110,18,0,4,116,5,0,107,10,0,114,190,0,1, - 1,1,89,110,1,0,88,100,0,0,83,41,6,78,114,227, - 0,0,0,218,8,95,95,115,112,101,99,95,95,114,127,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, - 127,0,0,0,114,224,0,0,0,114,219,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,106,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,127, - 0,0,0,114,133,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,218,14,95,102,105,120,95,117,112, - 95,109,111,100,117,108,101,69,5,0,0,115,34,0,0,0, - 0,2,15,1,15,1,6,1,6,1,12,1,12,1,18,2, - 15,1,6,1,21,1,3,1,10,1,10,1,10,1,14,1, - 13,2,114,26,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,55,0,0, - 0,116,0,0,116,1,0,106,2,0,131,0,0,102,2,0, - 125,0,0,116,3,0,116,4,0,102,2,0,125,1,0,116, - 5,0,116,6,0,102,2,0,125,2,0,124,0,0,124,1, - 0,124,2,0,103,3,0,83,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,225,0, - 0,0,114,150,0,0,0,218,18,101,120,116,101,110,115,105, - 111,110,95,115,117,102,102,105,120,101,115,114,219,0,0,0, - 114,84,0,0,0,114,224,0,0,0,114,74,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,5,0,0,0,114,167, - 0,0,0,92,5,0,0,115,8,0,0,0,0,5,18,1, - 12,1,12,1,114,167,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,70, - 2,0,0,124,0,0,97,0,0,116,0,0,106,1,0,97, - 1,0,116,0,0,106,2,0,97,2,0,116,1,0,106,3, - 0,116,4,0,25,125,1,0,120,76,0,100,26,0,68,93, - 68,0,125,2,0,124,2,0,116,1,0,106,3,0,107,7, - 0,114,83,0,116,0,0,106,5,0,124,2,0,131,1,0, - 125,3,0,110,13,0,116,1,0,106,3,0,124,2,0,25, - 125,3,0,116,6,0,124,1,0,124,2,0,124,3,0,131, - 3,0,1,113,44,0,87,100,5,0,100,6,0,103,1,0, - 102,2,0,100,7,0,100,8,0,100,6,0,103,2,0,102, - 2,0,102,2,0,125,4,0,120,149,0,124,4,0,68,93, - 129,0,92,2,0,125,5,0,125,6,0,116,7,0,100,9, - 0,100,10,0,132,0,0,124,6,0,68,131,1,0,131,1, - 0,115,199,0,116,8,0,130,1,0,124,6,0,100,11,0, - 25,125,7,0,124,5,0,116,1,0,106,3,0,107,6,0, - 114,241,0,116,1,0,106,3,0,124,5,0,25,125,8,0, - 80,113,156,0,121,20,0,116,0,0,106,5,0,124,5,0, - 131,1,0,125,8,0,80,87,113,156,0,4,116,9,0,107, - 10,0,114,28,1,1,1,1,119,156,0,89,113,156,0,88, - 113,156,0,87,116,9,0,100,12,0,131,1,0,130,1,0, - 116,6,0,124,1,0,100,13,0,124,8,0,131,3,0,1, - 116,6,0,124,1,0,100,14,0,124,7,0,131,3,0,1, - 116,6,0,124,1,0,100,15,0,100,16,0,106,10,0,124, - 6,0,131,1,0,131,3,0,1,121,19,0,116,0,0,106, - 5,0,100,17,0,131,1,0,125,9,0,87,110,24,0,4, - 116,9,0,107,10,0,114,147,1,1,1,1,100,18,0,125, - 9,0,89,110,1,0,88,116,6,0,124,1,0,100,17,0, - 124,9,0,131,3,0,1,116,0,0,106,5,0,100,19,0, - 131,1,0,125,10,0,116,6,0,124,1,0,100,19,0,124, - 10,0,131,3,0,1,124,5,0,100,7,0,107,2,0,114, - 238,1,116,0,0,106,5,0,100,20,0,131,1,0,125,11, - 0,116,6,0,124,1,0,100,21,0,124,11,0,131,3,0, - 1,116,6,0,124,1,0,100,22,0,116,11,0,131,0,0, - 131,3,0,1,116,12,0,106,13,0,116,2,0,106,14,0, - 131,0,0,131,1,0,1,124,5,0,100,7,0,107,2,0, - 114,66,2,116,15,0,106,16,0,100,23,0,131,1,0,1, - 100,24,0,116,12,0,107,6,0,114,66,2,100,25,0,116, - 17,0,95,18,0,100,18,0,83,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,49,0,0,0,114, - 60,0,0,0,218,8,98,117,105,108,116,105,110,115,114,147, - 0,0,0,90,5,112,111,115,105,120,250,1,47,218,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,33,0,0,0,124,0, - 0,93,23,0,125,1,0,116,0,0,124,1,0,131,1,0, - 100,0,0,107,2,0,86,1,113,3,0,100,1,0,83,41, - 2,114,29,0,0,0,78,41,1,114,31,0,0,0,41,2, - 114,22,0,0,0,114,77,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,231,0,0,0,128,5, - 0,0,115,2,0,0,0,6,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,59,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,25, - 0,0,0,114,21,0,0,0,114,30,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,173,0,0,0,114,6, - 0,0,0,122,4,46,112,121,119,122,6,95,100,46,112,121, - 100,84,41,4,122,3,95,105,111,122,9,95,119,97,114,110, - 105,110,103,115,122,8,98,117,105,108,116,105,110,115,122,7, - 109,97,114,115,104,97,108,41,19,114,121,0,0,0,114,7, - 0,0,0,114,150,0,0,0,114,132,0,0,0,114,112,0, - 0,0,90,18,95,98,117,105,108,116,105,110,95,102,114,111, - 109,95,110,97,109,101,114,116,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,107,0,0,0,114,26,0,0,0,114,11,0,0,0,114, - 233,0,0,0,114,154,0,0,0,114,27,1,0,0,114,84, - 0,0,0,114,169,0,0,0,114,172,0,0,0,114,177,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,21,0,0,0,114, - 25,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,5,0,0,0,218,6,95,115, - 101,116,117,112,103,5,0,0,115,82,0,0,0,0,8,6, - 1,9,1,9,3,13,1,13,1,15,1,18,2,13,1,20, - 3,33,1,19,2,31,1,10,1,15,1,13,1,4,2,3, - 1,15,1,5,1,13,1,12,2,12,1,16,1,16,1,25, - 3,3,1,19,1,13,2,11,1,16,3,15,1,16,3,12, - 1,15,1,16,3,19,1,19,1,12,1,13,1,12,1,114, - 35,1,0,0,99,1,0,0,0,0,0,0,0,2,0,0, - 0,3,0,0,0,67,0,0,0,115,116,0,0,0,116,0, - 0,124,0,0,131,1,0,1,116,1,0,131,0,0,125,1, - 0,116,2,0,106,3,0,106,4,0,116,5,0,106,6,0, - 124,1,0,140,0,0,103,1,0,131,1,0,1,116,7,0, - 106,8,0,100,1,0,107,2,0,114,78,0,116,2,0,106, - 9,0,106,10,0,116,11,0,131,1,0,1,116,2,0,106, - 9,0,106,10,0,116,12,0,131,1,0,1,116,5,0,124, - 0,0,95,5,0,116,13,0,124,0,0,95,13,0,100,2, - 0,83,41,3,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,114, - 30,1,0,0,78,41,14,114,35,1,0,0,114,167,0,0, - 0,114,7,0,0,0,114,1,1,0,0,114,154,0,0,0, - 114,9,1,0,0,114,22,1,0,0,114,3,0,0,0,114, - 112,0,0,0,218,9,109,101,116,97,95,112,97,116,104,114, - 169,0,0,0,114,172,0,0,0,114,252,0,0,0,114,219, - 0,0,0,41,2,114,34,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,5,0,0,0,218,8,95,105, - 110,115,116,97,108,108,171,5,0,0,115,16,0,0,0,0, - 2,10,1,9,1,28,1,15,1,16,1,16,4,9,1,114, - 37,1,0,0,41,3,122,3,119,105,110,114,1,0,0,0, - 114,2,0,0,0,41,59,114,114,0,0,0,114,10,0,0, - 0,114,11,0,0,0,114,17,0,0,0,114,19,0,0,0, - 114,28,0,0,0,114,38,0,0,0,114,39,0,0,0,114, - 43,0,0,0,114,44,0,0,0,114,46,0,0,0,114,55, - 0,0,0,218,4,116,121,112,101,218,8,95,95,99,111,100, - 101,95,95,114,149,0,0,0,114,15,0,0,0,114,140,0, - 0,0,114,14,0,0,0,114,18,0,0,0,90,17,95,82, - 65,87,95,77,65,71,73,67,95,78,85,77,66,69,82,114, - 73,0,0,0,114,72,0,0,0,114,84,0,0,0,114,74, - 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,79,0,0,0,114,85, - 0,0,0,114,91,0,0,0,114,95,0,0,0,114,97,0, - 0,0,114,105,0,0,0,114,123,0,0,0,114,130,0,0, - 0,114,135,0,0,0,114,146,0,0,0,114,152,0,0,0, - 114,155,0,0,0,114,160,0,0,0,114,131,0,0,0,218, - 6,111,98,106,101,99,116,114,168,0,0,0,114,165,0,0, - 0,114,172,0,0,0,114,187,0,0,0,114,195,0,0,0, - 114,211,0,0,0,114,219,0,0,0,114,224,0,0,0,114, - 233,0,0,0,114,225,0,0,0,114,234,0,0,0,114,250, - 0,0,0,114,252,0,0,0,114,9,1,0,0,114,26,1, - 0,0,114,167,0,0,0,114,35,1,0,0,114,37,1,0, - 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,218,8,60,109,111,100,117,108,101,62,8, - 0,0,0,115,104,0,0,0,6,17,6,3,12,12,12,5, - 12,5,12,6,12,12,12,10,12,9,12,5,12,7,15,22, - 15,108,22,1,18,2,6,1,6,2,9,2,9,2,10,2, - 21,44,12,33,12,19,12,12,12,12,18,8,12,27,12,18, - 12,15,21,55,21,12,18,10,12,14,24,22,9,3,12,1, - 15,65,19,63,19,27,22,110,19,41,25,43,25,16,6,3, - 19,57,19,57,19,41,19,134,19,146,15,23,12,11,12,68, + 0,114,163,0,0,0,197,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,13,114,112,0,0,0,114,111,0,0,0, + 114,113,0,0,0,114,114,0,0,0,114,188,0,0,0,114, + 214,0,0,0,114,216,0,0,0,114,123,0,0,0,114,194, + 0,0,0,114,162,0,0,0,114,190,0,0,0,114,203,0, + 0,0,114,163,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,225,0,0,0, + 146,3,0,0,115,18,0,0,0,12,6,6,2,12,4,12, + 4,12,3,18,18,12,6,12,4,12,4,114,225,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,130,0,0,0,101,0,0,90,1,0, + 100,0,0,90,2,0,100,1,0,90,3,0,100,2,0,100, + 3,0,132,0,0,90,4,0,100,4,0,100,5,0,132,0, + 0,90,5,0,100,6,0,100,7,0,132,0,0,90,6,0, + 100,8,0,100,9,0,132,0,0,90,7,0,100,10,0,100, + 11,0,132,0,0,90,8,0,100,12,0,100,13,0,132,0, + 0,90,9,0,100,14,0,100,15,0,132,0,0,90,10,0, + 100,16,0,100,17,0,132,0,0,90,11,0,100,18,0,100, + 19,0,132,0,0,90,12,0,100,20,0,83,41,21,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,2,0,0,0,67,0,0,0,115,52, + 0,0,0,124,1,0,124,0,0,95,0,0,124,2,0,124, + 0,0,95,1,0,116,2,0,124,0,0,106,3,0,131,0, + 0,131,1,0,124,0,0,95,4,0,124,3,0,124,0,0, + 95,5,0,100,0,0,83,41,1,78,41,6,218,5,95,110, + 97,109,101,218,5,95,112,97,116,104,114,93,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,108,0,0,0,114,106,0,0,0,114,35, + 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,5,0,0,0,114, + 188,0,0,0,210,3,0,0,115,8,0,0,0,0,1,9, + 1,9,1,21,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,53,0,0,0,124,0,0,106,0,0,106,1, + 0,100,1,0,131,1,0,92,3,0,125,1,0,125,2,0, + 125,3,0,124,2,0,100,2,0,107,2,0,114,43,0,100, + 6,0,83,124,1,0,100,5,0,102,2,0,83,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, + 58,0,0,0,114,30,0,0,0,114,7,0,0,0,114,35, + 0,0,0,114,226,0,0,0,41,2,122,3,115,121,115,122, + 4,112,97,116,104,41,2,114,235,0,0,0,114,32,0,0, + 0,41,4,114,108,0,0,0,114,223,0,0,0,218,3,100, + 111,116,90,2,109,101,114,4,0,0,0,114,4,0,0,0, + 114,5,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,216,3, + 0,0,115,8,0,0,0,0,2,27,1,12,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,38,0,0, + 0,124,0,0,106,0,0,131,0,0,92,2,0,125,1,0, + 125,2,0,116,1,0,116,2,0,106,3,0,124,1,0,25, + 124,2,0,131,2,0,83,41,1,78,41,4,114,242,0,0, + 0,114,117,0,0,0,114,7,0,0,0,114,132,0,0,0, + 41,3,114,108,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,5,0,0,0,114,237,0,0,0,226, + 3,0,0,115,4,0,0,0,0,1,18,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,3,0,0,0,67,0, + 0,0,115,118,0,0,0,116,0,0,124,0,0,106,1,0, + 131,0,0,131,1,0,125,1,0,124,1,0,124,0,0,106, + 2,0,107,3,0,114,111,0,124,0,0,106,3,0,124,0, + 0,106,4,0,124,1,0,131,2,0,125,2,0,124,2,0, + 100,0,0,107,9,0,114,102,0,124,2,0,106,5,0,100, + 0,0,107,8,0,114,102,0,124,2,0,106,6,0,114,102, + 0,124,2,0,106,6,0,124,0,0,95,7,0,124,1,0, + 124,0,0,95,2,0,124,0,0,106,7,0,83,41,1,78, + 41,8,114,93,0,0,0,114,237,0,0,0,114,238,0,0, + 0,114,239,0,0,0,114,235,0,0,0,114,127,0,0,0, + 114,164,0,0,0,114,236,0,0,0,41,3,114,108,0,0, + 0,90,11,112,97,114,101,110,116,95,112,97,116,104,114,133, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,12,95,114,101,99,97,108,99,117,108,97,116,101, + 230,3,0,0,115,16,0,0,0,0,2,18,1,15,1,21, + 3,27,1,9,1,12,1,9,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,2,0,0,0,67,0,0,0,115,16,0,0,0, + 116,0,0,124,0,0,106,1,0,131,0,0,131,1,0,83, + 41,1,78,41,2,218,4,105,116,101,114,114,243,0,0,0, + 41,1,114,108,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,218,8,95,95,105,116,101,114,95,95, + 243,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,1,0,0,0,0,0,0,0,1,0,0, + 0,2,0,0,0,67,0,0,0,115,16,0,0,0,116,0, + 0,124,0,0,106,1,0,131,0,0,131,1,0,83,41,1, + 78,41,2,114,31,0,0,0,114,243,0,0,0,41,1,114, + 108,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,218,7,95,95,108,101,110,95,95,246,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,2,0,0,0, + 67,0,0,0,115,16,0,0,0,100,1,0,106,0,0,124, + 0,0,106,1,0,131,1,0,83,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,47,0,0,0,114,236,0,0,0,41,1, + 114,108,0,0,0,114,4,0,0,0,114,4,0,0,0,114, + 5,0,0,0,218,8,95,95,114,101,112,114,95,95,249,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,2, + 0,0,0,67,0,0,0,115,16,0,0,0,124,1,0,124, + 0,0,106,0,0,131,0,0,107,6,0,83,41,1,78,41, + 1,114,243,0,0,0,41,2,114,108,0,0,0,218,4,105, + 116,101,109,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,12,95,95,99,111,110,116,97,105,110,115,95,95, + 252,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,2,0,0,0,67,0,0,0,115,20,0, + 0,0,124,0,0,106,0,0,106,1,0,124,1,0,131,1, + 0,1,100,0,0,83,41,1,78,41,2,114,236,0,0,0, + 114,169,0,0,0,41,2,114,108,0,0,0,114,248,0,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,169,0,0,0,255,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,13,114,112,0,0,0,114, + 111,0,0,0,114,113,0,0,0,114,114,0,0,0,114,188, + 0,0,0,114,242,0,0,0,114,237,0,0,0,114,243,0, + 0,0,114,245,0,0,0,114,246,0,0,0,114,247,0,0, + 0,114,249,0,0,0,114,169,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 234,0,0,0,203,3,0,0,115,20,0,0,0,12,5,6, + 2,12,6,12,10,12,4,12,13,12,3,12,3,12,3,12, + 3,114,234,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,118,0,0,0, + 101,0,0,90,1,0,100,0,0,90,2,0,100,1,0,100, + 2,0,132,0,0,90,3,0,101,4,0,100,3,0,100,4, + 0,132,0,0,131,1,0,90,5,0,100,5,0,100,6,0, + 132,0,0,90,6,0,100,7,0,100,8,0,132,0,0,90, + 7,0,100,9,0,100,10,0,132,0,0,90,8,0,100,11, + 0,100,12,0,132,0,0,90,9,0,100,13,0,100,14,0, + 132,0,0,90,10,0,100,15,0,100,16,0,132,0,0,90, + 11,0,100,17,0,83,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, + 25,0,0,0,116,0,0,124,1,0,124,2,0,124,3,0, + 131,3,0,124,0,0,95,1,0,100,0,0,83,41,1,78, + 41,2,114,234,0,0,0,114,236,0,0,0,41,4,114,108, + 0,0,0,114,106,0,0,0,114,35,0,0,0,114,240,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,188,0,0,0,5,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,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,16,0,0,0,100,1,0,106,0,0,124,1,0,106, + 1,0,131,1,0,83,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,47,0,0,0,114, + 112,0,0,0,41,2,114,174,0,0,0,114,134,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,218, + 11,109,111,100,117,108,101,95,114,101,112,114,8,4,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,0,83,41,2,78,84,114,4,0,0,0,41,2,114,108, + 0,0,0,114,126,0,0,0,114,4,0,0,0,114,4,0, + 0,0,114,5,0,0,0,114,162,0,0,0,17,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, + 0,83,41,2,78,114,30,0,0,0,114,4,0,0,0,41, + 2,114,108,0,0,0,114,126,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,203,0,0,0,20, + 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,22,0,0, + 0,116,0,0,100,1,0,100,2,0,100,3,0,100,4,0, + 100,5,0,131,3,1,83,41,6,78,114,30,0,0,0,122, + 8,60,115,116,114,105,110,103,62,114,192,0,0,0,114,205, + 0,0,0,84,41,1,114,206,0,0,0,41,2,114,108,0, + 0,0,114,126,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,190,0,0,0,23,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,0,83,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,108,0,0,0,114,133,0,0,0,114, + 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,189, + 0,0,0,26,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,0,83,41,1,78,114,4,0, + 0,0,41,2,114,108,0,0,0,114,134,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,193,0, + 0,0,29,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,3,0,0,0,67,0,0,0, + 115,29,0,0,0,116,0,0,100,1,0,124,0,0,106,1, + 0,131,2,0,1,116,2,0,124,0,0,124,1,0,131,2, + 0,83,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,3,114,105,0,0,0,114,236,0,0,0,114,135,0,0, + 0,41,2,114,108,0,0,0,114,126,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,194,0,0, + 0,32,4,0,0,115,4,0,0,0,0,7,16,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, + 112,0,0,0,114,111,0,0,0,114,113,0,0,0,114,188, + 0,0,0,114,186,0,0,0,114,251,0,0,0,114,162,0, + 0,0,114,203,0,0,0,114,190,0,0,0,114,189,0,0, + 0,114,193,0,0,0,114,194,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 250,0,0,0,4,4,0,0,115,16,0,0,0,12,1,12, + 3,18,9,12,3,12,3,12,3,12,3,12,3,114,250,0, + 0,0,99,0,0,0,0,0,0,0,0,0,0,0,0,5, + 0,0,0,64,0,0,0,115,160,0,0,0,101,0,0,90, + 1,0,100,0,0,90,2,0,100,1,0,90,3,0,101,4, + 0,100,2,0,100,3,0,132,0,0,131,1,0,90,5,0, + 101,4,0,100,4,0,100,5,0,132,0,0,131,1,0,90, + 6,0,101,4,0,100,6,0,100,7,0,132,0,0,131,1, + 0,90,7,0,101,4,0,100,8,0,100,9,0,132,0,0, + 131,1,0,90,8,0,101,4,0,100,10,0,100,11,0,100, + 12,0,132,1,0,131,1,0,90,9,0,101,4,0,100,10, + 0,100,10,0,100,13,0,100,14,0,132,2,0,131,1,0, + 90,10,0,101,4,0,100,10,0,100,15,0,100,16,0,132, + 1,0,131,1,0,90,11,0,100,10,0,83,41,17,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, + 55,0,0,0,120,48,0,116,0,0,106,1,0,106,2,0, + 131,0,0,68,93,31,0,125,1,0,116,3,0,124,1,0, + 100,1,0,131,2,0,114,16,0,124,1,0,106,4,0,131, + 0,0,1,113,16,0,87,100,2,0,83,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,7,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,115,0,0,0,114,253,0,0,0,41,2, + 114,174,0,0,0,218,6,102,105,110,100,101,114,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,114,253,0,0, + 0,49,4,0,0,115,6,0,0,0,0,4,22,1,15,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,107,0,0,0,116,0,0,106,1,0,100,1, + 0,107,9,0,114,41,0,116,0,0,106,1,0,12,114,41, + 0,116,2,0,106,3,0,100,2,0,116,4,0,131,2,0, + 1,120,59,0,116,0,0,106,1,0,68,93,44,0,125,2, + 0,121,14,0,124,2,0,124,1,0,131,1,0,83,87,113, + 51,0,4,116,5,0,107,10,0,114,94,0,1,1,1,119, + 51,0,89,113,51,0,88,113,51,0,87,100,1,0,83,100, + 1,0,83,41,3,122,113,83,101,97,114,99,104,32,115,101, + 113,117,101,110,99,101,32,111,102,32,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,10,10,32,32,32,32,32,32, + 32,32,73,102,32,39,104,111,111,107,115,39,32,105,115,32, + 102,97,108,115,101,32,116,104,101,110,32,117,115,101,32,115, + 121,115,46,112,97,116,104,95,104,111,111,107,115,46,10,10, + 32,32,32,32,32,32,32,32,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,7,0,0,0,218,10,112,97,116,104,95, + 104,111,111,107,115,114,60,0,0,0,114,61,0,0,0,114, + 125,0,0,0,114,107,0,0,0,41,3,114,174,0,0,0, + 114,35,0,0,0,90,4,104,111,111,107,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,218,11,95,112,97,116, + 104,95,104,111,111,107,115,57,4,0,0,115,16,0,0,0, + 0,7,25,1,16,1,16,1,3,1,14,1,13,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,123,0, + 0,0,124,1,0,100,1,0,107,2,0,114,53,0,121,16, + 0,116,0,0,106,1,0,131,0,0,125,1,0,87,110,22, + 0,4,116,2,0,107,10,0,114,52,0,1,1,1,100,2, + 0,83,89,110,1,0,88,121,17,0,116,3,0,106,4,0, + 124,1,0,25,125,2,0,87,110,46,0,4,116,5,0,107, + 10,0,114,118,0,1,1,1,124,0,0,106,6,0,124,1, + 0,131,1,0,125,2,0,124,2,0,116,3,0,106,4,0, + 124,1,0,60,89,110,1,0,88,124,2,0,83,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,30,0,0,0,78,41,7,114,3,0,0,0, + 114,45,0,0,0,218,17,70,105,108,101,78,111,116,70,111, + 117,110,100,69,114,114,111,114,114,7,0,0,0,114,254,0, + 0,0,114,142,0,0,0,114,2,1,0,0,41,3,114,174, + 0,0,0,114,35,0,0,0,114,0,1,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,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,74,4,0,0,115,22,0,0,0,0,8,12,1,3, + 1,16,1,13,3,9,1,3,1,17,1,13,1,15,1,18, + 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,3, + 0,0,0,67,0,0,0,115,116,0,0,0,116,0,0,124, + 2,0,100,1,0,131,2,0,114,39,0,124,2,0,106,1, + 0,124,1,0,131,1,0,92,2,0,125,3,0,125,4,0, + 110,21,0,124,2,0,106,2,0,124,1,0,131,1,0,125, + 3,0,103,0,0,125,4,0,124,3,0,100,0,0,107,9, + 0,114,85,0,116,3,0,124,1,0,124,3,0,131,2,0, + 83,116,4,0,106,5,0,124,1,0,100,0,0,131,2,0, + 125,5,0,124,4,0,124,5,0,95,6,0,124,5,0,83, + 41,2,78,114,124,0,0,0,41,7,114,115,0,0,0,114, + 124,0,0,0,114,185,0,0,0,114,131,0,0,0,114,121, + 0,0,0,114,166,0,0,0,114,164,0,0,0,41,6,114, + 174,0,0,0,114,126,0,0,0,114,0,1,0,0,114,127, + 0,0,0,114,128,0,0,0,114,133,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,5,0,0,0,218,16,95,108, + 101,103,97,99,121,95,103,101,116,95,115,112,101,99,96,4, + 0,0,115,18,0,0,0,0,4,15,1,24,2,15,1,6, + 1,12,1,13,1,18,1,9,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,243,0,0, + 0,103,0,0,125,4,0,120,230,0,124,2,0,68,93,191, + 0,125,5,0,116,0,0,124,5,0,116,1,0,116,2,0, + 102,2,0,131,2,0,115,43,0,113,13,0,124,0,0,106, + 3,0,124,5,0,131,1,0,125,6,0,124,6,0,100,1, + 0,107,9,0,114,13,0,116,4,0,124,6,0,100,2,0, + 131,2,0,114,106,0,124,6,0,106,5,0,124,1,0,124, + 3,0,131,2,0,125,7,0,110,18,0,124,0,0,106,6, + 0,124,1,0,124,6,0,131,2,0,125,7,0,124,7,0, + 100,1,0,107,8,0,114,139,0,113,13,0,124,7,0,106, + 7,0,100,1,0,107,9,0,114,158,0,124,7,0,83,124, + 7,0,106,8,0,125,8,0,124,8,0,100,1,0,107,8, + 0,114,191,0,116,9,0,100,3,0,131,1,0,130,1,0, + 124,4,0,106,10,0,124,8,0,131,1,0,1,113,13,0, + 87,116,11,0,106,12,0,124,1,0,100,1,0,131,2,0, + 125,7,0,124,4,0,124,7,0,95,8,0,124,7,0,83, + 100,1,0,83,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,184,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,148,0,0,0,114,69,0,0,0,218,5, + 98,121,116,101,115,114,4,1,0,0,114,115,0,0,0,114, + 184,0,0,0,114,5,1,0,0,114,127,0,0,0,114,164, + 0,0,0,114,107,0,0,0,114,154,0,0,0,114,121,0, + 0,0,114,166,0,0,0,41,9,114,174,0,0,0,114,126, + 0,0,0,114,35,0,0,0,114,183,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,0,1,0,0,114,133,0,0,0,114,128, + 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, + 0,0,218,9,95,103,101,116,95,115,112,101,99,111,4,0, + 0,115,40,0,0,0,0,5,6,1,13,1,21,1,3,1, + 15,1,12,1,15,1,21,2,18,1,12,1,3,1,15,1, + 4,1,9,1,12,1,12,5,17,2,18,1,9,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,4,0,0,0,67,0,0,0,115,140,0,0,0,124,2, + 0,100,1,0,107,8,0,114,21,0,116,0,0,106,1,0, + 125,2,0,124,0,0,106,2,0,124,1,0,124,2,0,124, + 3,0,131,3,0,125,4,0,124,4,0,100,1,0,107,8, + 0,114,58,0,100,1,0,83,124,4,0,106,3,0,100,1, + 0,107,8,0,114,132,0,124,4,0,106,4,0,125,5,0, + 124,5,0,114,125,0,100,2,0,124,4,0,95,5,0,116, + 6,0,124,1,0,124,5,0,124,0,0,106,2,0,131,3, + 0,124,4,0,95,4,0,124,4,0,83,100,1,0,83,110, + 4,0,124,4,0,83,100,1,0,83,41,3,122,98,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, + 78,90,9,110,97,109,101,115,112,97,99,101,41,7,114,7, + 0,0,0,114,35,0,0,0,114,8,1,0,0,114,127,0, + 0,0,114,164,0,0,0,114,161,0,0,0,114,234,0,0, + 0,41,6,114,174,0,0,0,114,126,0,0,0,114,35,0, + 0,0,114,183,0,0,0,114,133,0,0,0,114,7,1,0, + 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, + 114,184,0,0,0,143,4,0,0,115,26,0,0,0,0,4, + 12,1,9,1,21,1,12,1,4,1,15,1,9,1,6,3, + 9,1,24,1,4,2,7,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,3,0,0,0,67, + 0,0,0,115,41,0,0,0,124,0,0,106,0,0,124,1, + 0,124,2,0,131,2,0,125,3,0,124,3,0,100,1,0, + 107,8,0,114,34,0,100,1,0,83,124,3,0,106,1,0, + 83,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,184,0,0,0,114,127,0,0,0,41,4,114,174, + 0,0,0,114,126,0,0,0,114,35,0,0,0,114,133,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,185,0,0,0,165,4,0,0,115,8,0,0,0,0, + 8,18,1,12,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, + 12,114,112,0,0,0,114,111,0,0,0,114,113,0,0,0, + 114,114,0,0,0,114,186,0,0,0,114,253,0,0,0,114, + 2,1,0,0,114,4,1,0,0,114,5,1,0,0,114,8, + 1,0,0,114,184,0,0,0,114,185,0,0,0,114,4,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,252,0,0,0,45,4,0,0,115,22,0,0,0,12, + 2,6,2,18,8,18,17,18,22,18,15,3,1,18,31,3, + 1,21,21,3,1,114,252,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, + 133,0,0,0,101,0,0,90,1,0,100,0,0,90,2,0, + 100,1,0,90,3,0,100,2,0,100,3,0,132,0,0,90, + 4,0,100,4,0,100,5,0,132,0,0,90,5,0,101,6, + 0,90,7,0,100,6,0,100,7,0,132,0,0,90,8,0, + 100,8,0,100,9,0,132,0,0,90,9,0,100,10,0,100, + 11,0,100,12,0,132,1,0,90,10,0,100,13,0,100,14, + 0,132,0,0,90,11,0,101,12,0,100,15,0,100,16,0, + 132,0,0,131,1,0,90,13,0,100,17,0,100,18,0,132, + 0,0,90,14,0,100,10,0,83,41,19,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,5,0,0,0,7,0,0,0,115,122,0,0,0,103, + 0,0,125,3,0,120,52,0,124,2,0,68,93,44,0,92, + 2,0,137,0,0,125,4,0,124,3,0,106,0,0,135,0, + 0,102,1,0,100,1,0,100,2,0,134,0,0,124,4,0, + 68,131,1,0,131,1,0,1,113,13,0,87,124,3,0,124, + 0,0,95,1,0,124,1,0,112,79,0,100,3,0,124,0, + 0,95,2,0,100,6,0,124,0,0,95,3,0,116,4,0, + 131,0,0,124,0,0,95,5,0,116,4,0,131,0,0,124, + 0,0,95,6,0,100,5,0,83,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,27,0,0, + 0,124,0,0,93,17,0,125,1,0,124,1,0,136,0,0, + 102,2,0,86,1,113,3,0,100,0,0,83,41,1,78,114, + 4,0,0,0,41,2,114,22,0,0,0,114,229,0,0,0, + 41,1,114,127,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,231,0,0,0,194,4,0,0,115,2,0,0,0,6, + 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,58,0,0,0,114,29, + 0,0,0,78,114,87,0,0,0,41,7,114,154,0,0,0, + 218,8,95,108,111,97,100,101,114,115,114,35,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,108,0,0,0,114,35,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,171,0,0,0,114,4,0, + 0,0,41,1,114,127,0,0,0,114,5,0,0,0,114,188, + 0,0,0,188,4,0,0,115,16,0,0,0,0,4,6,1, + 19,1,36,1,9,2,15,1,9,1,12,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,13,0,0,0,100,3,0,124,0, + 0,95,0,0,100,2,0,83,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,29,0,0,0, + 78,114,87,0,0,0,41,1,114,11,1,0,0,41,1,114, + 108,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, + 0,0,0,114,253,0,0,0,202,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,2,0, + 0,0,67,0,0,0,115,59,0,0,0,124,0,0,106,0, + 0,124,1,0,131,1,0,125,2,0,124,2,0,100,1,0, + 107,8,0,114,37,0,100,1,0,103,0,0,102,2,0,83, + 124,2,0,106,1,0,124,2,0,106,2,0,112,55,0,103, + 0,0,102,2,0,83,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,184,0,0,0,114,127,0,0,0,114,164,0,0, + 0,41,3,114,108,0,0,0,114,126,0,0,0,114,133,0, + 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, + 0,114,124,0,0,0,208,4,0,0,115,8,0,0,0,0, + 7,15,1,12,1,10,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,7,0,0,0, + 67,0,0,0,115,40,0,0,0,124,1,0,124,2,0,124, + 3,0,131,2,0,125,6,0,116,0,0,124,2,0,124,3, + 0,100,1,0,124,6,0,100,2,0,124,4,0,131,2,2, + 83,41,3,78,114,127,0,0,0,114,164,0,0,0,41,1, + 114,165,0,0,0,41,7,114,108,0,0,0,114,170,0,0, + 0,114,126,0,0,0,114,35,0,0,0,90,4,115,109,115, + 108,114,183,0,0,0,114,127,0,0,0,114,4,0,0,0, + 114,4,0,0,0,114,5,0,0,0,114,8,1,0,0,220, + 4,0,0,115,6,0,0,0,0,1,15,1,18,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,15,0,0,0,67,0,0,0,115,234,1,0,0,100, + 1,0,125,3,0,124,1,0,106,0,0,100,2,0,131,1, + 0,100,3,0,25,125,4,0,121,34,0,116,1,0,124,0, + 0,106,2,0,112,49,0,116,3,0,106,4,0,131,0,0, + 131,1,0,106,5,0,125,5,0,87,110,24,0,4,116,6, + 0,107,10,0,114,85,0,1,1,1,100,10,0,125,5,0, + 89,110,1,0,88,124,5,0,124,0,0,106,7,0,107,3, + 0,114,120,0,124,0,0,106,8,0,131,0,0,1,124,5, + 0,124,0,0,95,7,0,116,9,0,131,0,0,114,153,0, + 124,0,0,106,10,0,125,6,0,124,4,0,106,11,0,131, + 0,0,125,7,0,110,15,0,124,0,0,106,12,0,125,6, + 0,124,4,0,125,7,0,124,7,0,124,6,0,107,6,0, + 114,45,1,116,13,0,124,0,0,106,2,0,124,4,0,131, + 2,0,125,8,0,120,100,0,124,0,0,106,14,0,68,93, + 77,0,92,2,0,125,9,0,125,10,0,100,5,0,124,9, + 0,23,125,11,0,116,13,0,124,8,0,124,11,0,131,2, + 0,125,12,0,116,15,0,124,12,0,131,1,0,114,208,0, + 124,0,0,106,16,0,124,10,0,124,1,0,124,12,0,124, + 8,0,103,1,0,124,2,0,131,5,0,83,113,208,0,87, + 116,17,0,124,8,0,131,1,0,125,3,0,120,123,0,124, + 0,0,106,14,0,68,93,112,0,92,2,0,125,9,0,125, + 10,0,116,13,0,124,0,0,106,2,0,124,4,0,124,9, + 0,23,131,2,0,125,12,0,116,18,0,100,6,0,106,19, + 0,124,12,0,131,1,0,100,7,0,100,3,0,131,1,1, + 1,124,7,0,124,9,0,23,124,6,0,107,6,0,114,55, + 1,116,15,0,124,12,0,131,1,0,114,55,1,124,0,0, + 106,16,0,124,10,0,124,1,0,124,12,0,100,8,0,124, + 2,0,131,5,0,83,113,55,1,87,124,3,0,114,230,1, + 116,18,0,100,9,0,106,19,0,124,8,0,131,1,0,131, + 1,0,1,116,20,0,106,21,0,124,1,0,100,8,0,131, + 2,0,125,13,0,124,8,0,103,1,0,124,13,0,95,22, + 0,124,13,0,83,100,8,0,83,41,11,122,125,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,70,114,58,0,0,0, + 114,56,0,0,0,114,29,0,0,0,114,188,0,0,0,122, + 9,116,114,121,105,110,103,32,123,125,114,98,0,0,0,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,87,0,0,0, + 41,23,114,32,0,0,0,114,39,0,0,0,114,35,0,0, + 0,114,3,0,0,0,114,45,0,0,0,114,220,0,0,0, + 114,40,0,0,0,114,11,1,0,0,218,11,95,102,105,108, + 108,95,99,97,99,104,101,114,6,0,0,0,114,14,1,0, + 0,114,88,0,0,0,114,13,1,0,0,114,28,0,0,0, + 114,10,1,0,0,114,44,0,0,0,114,8,1,0,0,114, + 46,0,0,0,114,105,0,0,0,114,47,0,0,0,114,121, + 0,0,0,114,166,0,0,0,114,164,0,0,0,41,14,114, + 108,0,0,0,114,126,0,0,0,114,183,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,138,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,229, + 0,0,0,114,170,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,133,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,5,0,0,0,114,184,0,0,0,225,4,0,0,115, + 68,0,0,0,0,3,6,1,19,1,3,1,34,1,13,1, + 11,1,15,1,10,1,9,2,9,1,9,1,15,2,9,1, + 6,2,12,1,18,1,22,1,10,1,15,1,12,1,32,4, + 12,2,22,1,22,1,25,1,16,1,12,1,29,1,6,1, + 19,1,18,1,12,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,13,0,0,0,67, + 0,0,0,115,11,1,0,0,124,0,0,106,0,0,125,1, + 0,121,31,0,116,1,0,106,2,0,124,1,0,112,33,0, + 116,1,0,106,3,0,131,0,0,131,1,0,125,2,0,87, + 110,33,0,4,116,4,0,116,5,0,116,6,0,102,3,0, + 107,10,0,114,75,0,1,1,1,103,0,0,125,2,0,89, + 110,1,0,88,116,7,0,106,8,0,106,9,0,100,1,0, + 131,1,0,115,112,0,116,10,0,124,2,0,131,1,0,124, + 0,0,95,11,0,110,111,0,116,10,0,131,0,0,125,3, + 0,120,90,0,124,2,0,68,93,82,0,125,4,0,124,4, + 0,106,12,0,100,2,0,131,1,0,92,3,0,125,5,0, + 125,6,0,125,7,0,124,6,0,114,191,0,100,3,0,106, + 13,0,124,5,0,124,7,0,106,14,0,131,0,0,131,2, + 0,125,8,0,110,6,0,124,5,0,125,8,0,124,3,0, + 106,15,0,124,8,0,131,1,0,1,113,128,0,87,124,3, + 0,124,0,0,95,11,0,116,7,0,106,8,0,106,9,0, + 116,16,0,131,1,0,114,7,1,100,4,0,100,5,0,132, + 0,0,124,2,0,68,131,1,0,124,0,0,95,17,0,100, + 6,0,83,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,58,0,0,0,122,5,123,125,46,123,125,99,1,0,0, + 0,0,0,0,0,2,0,0,0,3,0,0,0,83,0,0, + 0,115,28,0,0,0,104,0,0,124,0,0,93,18,0,125, + 1,0,124,1,0,106,0,0,131,0,0,146,2,0,113,6, + 0,83,114,4,0,0,0,41,1,114,88,0,0,0,41,2, + 114,22,0,0,0,90,2,102,110,114,4,0,0,0,114,4, + 0,0,0,114,5,0,0,0,250,9,60,115,101,116,99,111, + 109,112,62,43,5,0,0,115,2,0,0,0,9,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,35,0,0, + 0,114,3,0,0,0,90,7,108,105,115,116,100,105,114,114, + 45,0,0,0,114,3,1,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,7, + 0,0,0,114,8,0,0,0,114,9,0,0,0,114,12,1, + 0,0,114,13,1,0,0,114,83,0,0,0,114,47,0,0, + 0,114,88,0,0,0,218,3,97,100,100,114,10,0,0,0, + 114,14,1,0,0,41,9,114,108,0,0,0,114,35,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,248,0,0,0,114,106,0,0,0,114,241,0,0, + 0,114,229,0,0,0,90,8,110,101,119,95,110,97,109,101, + 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, + 16,1,0,0,14,5,0,0,115,34,0,0,0,0,2,9, + 1,3,1,31,1,22,3,11,3,18,1,18,7,9,1,13, + 1,24,1,6,1,27,2,6,1,17,1,9,1,18,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,25,0,0, + 0,135,0,0,135,1,0,102,2,0,100,1,0,100,2,0, + 134,0,0,125,2,0,124,2,0,83,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,43,0,0,0,116, + 0,0,124,0,0,131,1,0,115,30,0,116,1,0,100,1, + 0,100,2,0,124,0,0,131,1,1,130,1,0,136,0,0, + 124,0,0,136,1,0,140,1,0,83,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,114,35,0,0,0, + 41,2,114,46,0,0,0,114,107,0,0,0,41,1,114,35, + 0,0,0,41,2,114,174,0,0,0,114,15,1,0,0,114, + 4,0,0,0,114,5,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,55,5,0,0,115,6,0,0,0,0,2,12,1, + 18,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,174,0,0,0,114,15,1,0,0,114,21,1,0,0, + 114,4,0,0,0,41,2,114,174,0,0,0,114,15,1,0, + 0,114,5,0,0,0,218,9,112,97,116,104,95,104,111,111, + 107,45,5,0,0,115,4,0,0,0,0,10,21,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,2,0,0,0,67,0,0,0,115,16,0,0,0,100,1, + 0,106,0,0,124,0,0,106,1,0,131,1,0,83,41,2, + 78,122,16,70,105,108,101,70,105,110,100,101,114,40,123,33, + 114,125,41,41,2,114,47,0,0,0,114,35,0,0,0,41, + 1,114,108,0,0,0,114,4,0,0,0,114,4,0,0,0, + 114,5,0,0,0,114,247,0,0,0,63,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,15,114,112,0,0, + 0,114,111,0,0,0,114,113,0,0,0,114,114,0,0,0, + 114,188,0,0,0,114,253,0,0,0,114,130,0,0,0,114, + 185,0,0,0,114,124,0,0,0,114,8,1,0,0,114,184, + 0,0,0,114,16,1,0,0,114,186,0,0,0,114,22,1, + 0,0,114,247,0,0,0,114,4,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,114,9,1,0,0, + 179,4,0,0,115,20,0,0,0,12,7,6,2,12,14,12, + 4,6,2,12,12,12,5,15,45,12,31,18,18,114,9,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,195,0,0,0,124,0,0,106, + 0,0,100,1,0,131,1,0,125,4,0,124,0,0,106,0, + 0,100,2,0,131,1,0,125,5,0,124,4,0,115,99,0, + 124,5,0,114,54,0,124,5,0,106,1,0,125,4,0,110, + 45,0,124,2,0,124,3,0,107,2,0,114,84,0,116,2, + 0,124,1,0,124,2,0,131,2,0,125,4,0,110,15,0, + 116,3,0,124,1,0,124,2,0,131,2,0,125,4,0,124, + 5,0,115,126,0,116,4,0,124,1,0,124,2,0,100,3, + 0,124,4,0,131,2,1,125,5,0,121,44,0,124,5,0, + 124,0,0,100,2,0,60,124,4,0,124,0,0,100,1,0, + 60,124,2,0,124,0,0,100,4,0,60,124,3,0,124,0, + 0,100,5,0,60,87,110,18,0,4,116,5,0,107,10,0, + 114,190,0,1,1,1,89,110,1,0,88,100,0,0,83,41, + 6,78,114,227,0,0,0,218,8,95,95,115,112,101,99,95, + 95,114,127,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,127,0,0,0,114,224,0,0,0,114,219,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,106,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,127,0,0,0,114,133,0,0,0,114,4,0,0, + 0,114,4,0,0,0,114,5,0,0,0,218,14,95,102,105, + 120,95,117,112,95,109,111,100,117,108,101,69,5,0,0,115, + 34,0,0,0,0,2,15,1,15,1,6,1,6,1,12,1, + 12,1,18,2,15,1,6,1,21,1,3,1,10,1,10,1, + 10,1,14,1,13,2,114,26,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,55,0,0,0,116,0,0,116,1,0,106,2,0,131,0, + 0,102,2,0,125,0,0,116,3,0,116,4,0,102,2,0, + 125,1,0,116,5,0,116,6,0,102,2,0,125,2,0,124, + 0,0,124,1,0,124,2,0,103,3,0,83,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,225,0,0,0,114,150,0,0,0,218,18,101,120,116, + 101,110,115,105,111,110,95,115,117,102,102,105,120,101,115,114, + 219,0,0,0,114,84,0,0,0,114,224,0,0,0,114,74, + 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,5,0, + 0,0,114,167,0,0,0,92,5,0,0,115,8,0,0,0, + 0,5,18,1,12,1,12,1,114,167,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,70,2,0,0,124,0,0,97,0,0,116,0,0, + 106,1,0,97,1,0,116,0,0,106,2,0,97,2,0,116, + 1,0,106,3,0,116,4,0,25,125,1,0,120,76,0,100, + 26,0,68,93,68,0,125,2,0,124,2,0,116,1,0,106, + 3,0,107,7,0,114,83,0,116,0,0,106,5,0,124,2, + 0,131,1,0,125,3,0,110,13,0,116,1,0,106,3,0, + 124,2,0,25,125,3,0,116,6,0,124,1,0,124,2,0, + 124,3,0,131,3,0,1,113,44,0,87,100,5,0,100,6, + 0,103,1,0,102,2,0,100,7,0,100,8,0,100,6,0, + 103,2,0,102,2,0,102,2,0,125,4,0,120,149,0,124, + 4,0,68,93,129,0,92,2,0,125,5,0,125,6,0,116, + 7,0,100,9,0,100,10,0,132,0,0,124,6,0,68,131, + 1,0,131,1,0,115,199,0,116,8,0,130,1,0,124,6, + 0,100,11,0,25,125,7,0,124,5,0,116,1,0,106,3, + 0,107,6,0,114,241,0,116,1,0,106,3,0,124,5,0, + 25,125,8,0,80,113,156,0,121,20,0,116,0,0,106,5, + 0,124,5,0,131,1,0,125,8,0,80,87,113,156,0,4, + 116,9,0,107,10,0,114,28,1,1,1,1,119,156,0,89, + 113,156,0,88,113,156,0,87,116,9,0,100,12,0,131,1, + 0,130,1,0,116,6,0,124,1,0,100,13,0,124,8,0, + 131,3,0,1,116,6,0,124,1,0,100,14,0,124,7,0, + 131,3,0,1,116,6,0,124,1,0,100,15,0,100,16,0, + 106,10,0,124,6,0,131,1,0,131,3,0,1,121,19,0, + 116,0,0,106,5,0,100,17,0,131,1,0,125,9,0,87, + 110,24,0,4,116,9,0,107,10,0,114,147,1,1,1,1, + 100,18,0,125,9,0,89,110,1,0,88,116,6,0,124,1, + 0,100,17,0,124,9,0,131,3,0,1,116,0,0,106,5, + 0,100,19,0,131,1,0,125,10,0,116,6,0,124,1,0, + 100,19,0,124,10,0,131,3,0,1,124,5,0,100,7,0, + 107,2,0,114,238,1,116,0,0,106,5,0,100,20,0,131, + 1,0,125,11,0,116,6,0,124,1,0,100,21,0,124,11, + 0,131,3,0,1,116,6,0,124,1,0,100,22,0,116,11, + 0,131,0,0,131,3,0,1,116,12,0,106,13,0,116,2, + 0,106,14,0,131,0,0,131,1,0,1,124,5,0,100,7, + 0,107,2,0,114,66,2,116,15,0,106,16,0,100,23,0, + 131,1,0,1,100,24,0,116,12,0,107,6,0,114,66,2, + 100,25,0,116,17,0,95,18,0,100,18,0,83,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,49, + 0,0,0,114,60,0,0,0,218,8,98,117,105,108,116,105, + 110,115,114,147,0,0,0,90,5,112,111,115,105,120,250,1, + 47,218,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,33,0, + 0,0,124,0,0,93,23,0,125,1,0,116,0,0,124,1, + 0,131,1,0,100,0,0,107,2,0,86,1,113,3,0,100, + 1,0,83,41,2,114,29,0,0,0,78,41,1,114,31,0, + 0,0,41,2,114,22,0,0,0,114,77,0,0,0,114,4, + 0,0,0,114,4,0,0,0,114,5,0,0,0,114,231,0, + 0,0,128,5,0,0,115,2,0,0,0,6,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,59,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,25,0,0,0,114,21,0,0,0,114,30,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,173,0, + 0,0,114,6,0,0,0,122,4,46,112,121,119,122,6,95, + 100,46,112,121,100,84,41,4,122,3,95,105,111,122,9,95, + 119,97,114,110,105,110,103,115,122,8,98,117,105,108,116,105, + 110,115,122,7,109,97,114,115,104,97,108,41,19,114,121,0, + 0,0,114,7,0,0,0,114,150,0,0,0,114,132,0,0, + 0,114,112,0,0,0,90,18,95,98,117,105,108,116,105,110, + 95,102,114,111,109,95,110,97,109,101,114,116,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,107,0,0,0,114,26,0,0,0,114,11, + 0,0,0,114,233,0,0,0,114,154,0,0,0,114,27,1, + 0,0,114,84,0,0,0,114,169,0,0,0,114,172,0,0, + 0,114,177,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,21, + 0,0,0,114,25,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,5,0,0,0, + 218,6,95,115,101,116,117,112,103,5,0,0,115,82,0,0, + 0,0,8,6,1,9,1,9,3,13,1,13,1,15,1,18, + 2,13,1,20,3,33,1,19,2,31,1,10,1,15,1,13, + 1,4,2,3,1,15,1,5,1,13,1,12,2,12,1,16, + 1,16,1,25,3,3,1,19,1,13,2,11,1,16,3,15, + 1,16,3,12,1,15,1,16,3,19,1,19,1,12,1,13, + 1,12,1,114,35,1,0,0,99,1,0,0,0,0,0,0, + 0,2,0,0,0,3,0,0,0,67,0,0,0,115,116,0, + 0,0,116,0,0,124,0,0,131,1,0,1,116,1,0,131, + 0,0,125,1,0,116,2,0,106,3,0,106,4,0,116,5, + 0,106,6,0,124,1,0,140,0,0,103,1,0,131,1,0, + 1,116,7,0,106,8,0,100,1,0,107,2,0,114,78,0, + 116,2,0,106,9,0,106,10,0,116,11,0,131,1,0,1, + 116,2,0,106,9,0,106,10,0,116,12,0,131,1,0,1, + 116,5,0,124,0,0,95,5,0,116,13,0,124,0,0,95, + 13,0,100,2,0,83,41,3,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,114,30,1,0,0,78,41,14,114,35,1,0,0, + 114,167,0,0,0,114,7,0,0,0,114,1,1,0,0,114, + 154,0,0,0,114,9,1,0,0,114,22,1,0,0,114,3, + 0,0,0,114,112,0,0,0,218,9,109,101,116,97,95,112, + 97,116,104,114,169,0,0,0,114,172,0,0,0,114,252,0, + 0,0,114,219,0,0,0,41,2,114,34,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,5,0,0,0, + 218,8,95,105,110,115,116,97,108,108,171,5,0,0,115,16, + 0,0,0,0,2,10,1,9,1,28,1,15,1,16,1,16, + 4,9,1,114,37,1,0,0,41,3,122,3,119,105,110,114, + 1,0,0,0,114,2,0,0,0,41,59,114,114,0,0,0, + 114,10,0,0,0,114,11,0,0,0,114,17,0,0,0,114, + 19,0,0,0,114,28,0,0,0,114,38,0,0,0,114,39, + 0,0,0,114,43,0,0,0,114,44,0,0,0,114,46,0, + 0,0,114,55,0,0,0,218,4,116,121,112,101,218,8,95, + 95,99,111,100,101,95,95,114,149,0,0,0,114,15,0,0, + 0,114,140,0,0,0,114,14,0,0,0,114,18,0,0,0, + 90,17,95,82,65,87,95,77,65,71,73,67,95,78,85,77, + 66,69,82,114,73,0,0,0,114,72,0,0,0,114,84,0, + 0,0,114,74,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,79,0, + 0,0,114,85,0,0,0,114,91,0,0,0,114,95,0,0, + 0,114,97,0,0,0,114,105,0,0,0,114,123,0,0,0, + 114,130,0,0,0,114,135,0,0,0,114,146,0,0,0,114, + 152,0,0,0,114,155,0,0,0,114,160,0,0,0,114,131, + 0,0,0,218,6,111,98,106,101,99,116,114,168,0,0,0, + 114,165,0,0,0,114,172,0,0,0,114,187,0,0,0,114, + 195,0,0,0,114,211,0,0,0,114,219,0,0,0,114,224, + 0,0,0,114,233,0,0,0,114,225,0,0,0,114,234,0, + 0,0,114,250,0,0,0,114,252,0,0,0,114,9,1,0, + 0,114,26,1,0,0,114,167,0,0,0,114,35,1,0,0, + 114,37,1,0,0,114,4,0,0,0,114,4,0,0,0,114, + 4,0,0,0,114,5,0,0,0,218,8,60,109,111,100,117, + 108,101,62,8,0,0,0,115,104,0,0,0,6,17,6,3, + 12,12,12,5,12,5,12,6,12,12,12,10,12,9,12,5, + 12,7,15,22,15,108,22,1,18,2,6,1,6,2,9,2, + 9,2,10,2,21,44,12,33,12,19,12,12,12,12,18,8, + 12,27,12,18,12,15,21,55,21,12,18,10,12,14,24,22, + 9,3,12,1,15,65,19,63,19,27,22,110,19,41,25,43, + 25,16,6,3,19,57,19,57,19,41,19,134,19,146,15,23, + 12,11,12,68, }; diff --git a/Python/opcode_targets.h b/Python/opcode_targets.h index 45843c305fd..569e7590489 100644 --- a/Python/opcode_targets.h +++ b/Python/opcode_targets.h @@ -49,9 +49,9 @@ static void *opcode_targets[256] = { &&_unknown_opcode, &&_unknown_opcode, &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, - &&_unknown_opcode, + &&TARGET_GET_AITER, + &&TARGET_GET_ANEXT, + &&TARGET_BEFORE_ASYNC_WITH, &&_unknown_opcode, &&TARGET_STORE_MAP, &&TARGET_INPLACE_ADD, @@ -72,7 +72,7 @@ static void *opcode_targets[256] = { &&TARGET_PRINT_EXPR, &&TARGET_LOAD_BUILD_CLASS, &&TARGET_YIELD_FROM, - &&_unknown_opcode, + &&TARGET_GET_AWAITABLE, &&_unknown_opcode, &&TARGET_INPLACE_LSHIFT, &&TARGET_INPLACE_RSHIFT, @@ -80,8 +80,8 @@ static void *opcode_targets[256] = { &&TARGET_INPLACE_XOR, &&TARGET_INPLACE_OR, &&TARGET_BREAK_LOOP, - &&TARGET_WITH_CLEANUP, - &&_unknown_opcode, + &&TARGET_WITH_CLEANUP_START, + &&TARGET_WITH_CLEANUP_FINISH, &&TARGET_RETURN_VALUE, &&TARGET_IMPORT_STAR, &&_unknown_opcode, @@ -153,7 +153,7 @@ static void *opcode_targets[256] = { &&TARGET_BUILD_MAP_UNPACK_WITH_CALL, &&TARGET_BUILD_TUPLE_UNPACK, &&TARGET_BUILD_SET_UNPACK, - &&_unknown_opcode, + &&TARGET_SETUP_ASYNC_WITH, &&_unknown_opcode, &&_unknown_opcode, &&_unknown_opcode, diff --git a/Python/peephole.c b/Python/peephole.c index 2f8f0e5b679..59ad3b762f8 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -319,6 +319,7 @@ markblocks(unsigned char *code, Py_ssize_t len) case SETUP_EXCEPT: case SETUP_FINALLY: case SETUP_WITH: + case SETUP_ASYNC_WITH: j = GETJUMPTGT(code, i); blocks[j] = 1; break; @@ -620,6 +621,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, case SETUP_EXCEPT: case SETUP_FINALLY: case SETUP_WITH: + case SETUP_ASYNC_WITH: tgt = GETJUMPTGT(codestr, i); /* Replace JUMP_* to a RETURN into just a RETURN */ if (UNCONDITIONAL_JUMP(opcode) && @@ -704,6 +706,7 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, case SETUP_EXCEPT: case SETUP_FINALLY: case SETUP_WITH: + case SETUP_ASYNC_WITH: j = addrmap[GETARG(codestr, i) + i + 3] - addrmap[i] - 3; SETARG(codestr, i, j); break; diff --git a/Python/pystate.c b/Python/pystate.c index 32a635c789e..e214f504972 100644 --- a/Python/pystate.c +++ b/Python/pystate.c @@ -212,6 +212,8 @@ new_threadstate(PyInterpreterState *interp, int init) tstate->on_delete = NULL; tstate->on_delete_data = NULL; + tstate->coroutine_wrapper = NULL; + if (init) _PyThreadState_Init(tstate); @@ -372,6 +374,8 @@ PyThreadState_Clear(PyThreadState *tstate) tstate->c_tracefunc = NULL; Py_CLEAR(tstate->c_profileobj); Py_CLEAR(tstate->c_traceobj); + + Py_CLEAR(tstate->coroutine_wrapper); } diff --git a/Python/symtable.c b/Python/symtable.c index 812c052a517..3677e597482 100644 --- a/Python/symtable.c +++ b/Python/symtable.c @@ -180,7 +180,7 @@ static int symtable_visit_slice(struct symtable *st, slice_ty); static int symtable_visit_params(struct symtable *st, asdl_seq *args); static int symtable_visit_argannotations(struct symtable *st, asdl_seq *args); static int symtable_implicit_arg(struct symtable *st, int pos); -static int symtable_visit_annotations(struct symtable *st, stmt_ty s); +static int symtable_visit_annotations(struct symtable *st, stmt_ty s, arguments_ty, expr_ty); static int symtable_visit_withitem(struct symtable *st, withitem_ty item); @@ -1147,7 +1147,8 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s) VISIT_SEQ(st, expr, s->v.FunctionDef.args->defaults); if (s->v.FunctionDef.args->kw_defaults) VISIT_SEQ_WITH_NULL(st, expr, s->v.FunctionDef.args->kw_defaults); - if (!symtable_visit_annotations(st, s)) + if (!symtable_visit_annotations(st, s, s->v.FunctionDef.args, + s->v.FunctionDef.returns)) VISIT_QUIT(st, 0); if (s->v.FunctionDef.decorator_list) VISIT_SEQ(st, expr, s->v.FunctionDef.decorator_list); @@ -1315,6 +1316,39 @@ symtable_visit_stmt(struct symtable *st, stmt_ty s) VISIT_SEQ(st, withitem, s->v.With.items); VISIT_SEQ(st, stmt, s->v.With.body); break; + case AsyncFunctionDef_kind: + if (!symtable_add_def(st, s->v.AsyncFunctionDef.name, DEF_LOCAL)) + VISIT_QUIT(st, 0); + if (s->v.AsyncFunctionDef.args->defaults) + VISIT_SEQ(st, expr, s->v.AsyncFunctionDef.args->defaults); + if (s->v.AsyncFunctionDef.args->kw_defaults) + VISIT_SEQ_WITH_NULL(st, expr, + s->v.AsyncFunctionDef.args->kw_defaults); + if (!symtable_visit_annotations(st, s, s->v.AsyncFunctionDef.args, + s->v.AsyncFunctionDef.returns)) + VISIT_QUIT(st, 0); + if (s->v.AsyncFunctionDef.decorator_list) + VISIT_SEQ(st, expr, s->v.AsyncFunctionDef.decorator_list); + if (!symtable_enter_block(st, s->v.AsyncFunctionDef.name, + FunctionBlock, (void *)s, s->lineno, + s->col_offset)) + VISIT_QUIT(st, 0); + VISIT(st, arguments, s->v.AsyncFunctionDef.args); + VISIT_SEQ(st, stmt, s->v.AsyncFunctionDef.body); + if (!symtable_exit_block(st, s)) + VISIT_QUIT(st, 0); + break; + case AsyncWith_kind: + VISIT_SEQ(st, withitem, s->v.AsyncWith.items); + VISIT_SEQ(st, stmt, s->v.AsyncWith.body); + break; + case AsyncFor_kind: + VISIT(st, expr, s->v.AsyncFor.target); + VISIT(st, expr, s->v.AsyncFor.iter); + VISIT_SEQ(st, stmt, s->v.AsyncFor.body); + if (s->v.AsyncFor.orelse) + VISIT_SEQ(st, stmt, s->v.AsyncFor.orelse); + break; } VISIT_QUIT(st, 1); } @@ -1392,6 +1426,10 @@ symtable_visit_expr(struct symtable *st, expr_ty e) VISIT(st, expr, e->v.YieldFrom.value); st->st_cur->ste_generator = 1; break; + case Await_kind: + VISIT(st, expr, e->v.Await.value); + st->st_cur->ste_generator = 1; + break; case Compare_kind: VISIT(st, expr, e->v.Compare.left); VISIT_SEQ(st, expr, e->v.Compare.comparators); @@ -1492,10 +1530,9 @@ symtable_visit_argannotations(struct symtable *st, asdl_seq *args) } static int -symtable_visit_annotations(struct symtable *st, stmt_ty s) +symtable_visit_annotations(struct symtable *st, stmt_ty s, + arguments_ty a, expr_ty returns) { - arguments_ty a = s->v.FunctionDef.args; - if (a->args && !symtable_visit_argannotations(st, a->args)) return 0; if (a->vararg && a->vararg->annotation) @@ -1504,7 +1541,7 @@ symtable_visit_annotations(struct symtable *st, stmt_ty s) VISIT(st, expr, a->kwarg->annotation); if (a->kwonlyargs && !symtable_visit_argannotations(st, a->kwonlyargs)) return 0; - if (s->v.FunctionDef.returns) + if (returns) VISIT(st, expr, s->v.FunctionDef.returns); return 1; } diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 9ec25216ed8..bf9a96fb75a 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -645,6 +645,49 @@ sys_setrecursionlimit(PyObject *self, PyObject *args) return Py_None; } +static PyObject * +sys_set_coroutine_wrapper(PyObject *self, PyObject *wrapper) +{ + if (wrapper != Py_None) { + if (!PyCallable_Check(wrapper)) { + PyErr_Format(PyExc_TypeError, + "callable expected, got %.50s", + Py_TYPE(wrapper)->tp_name); + return NULL; + } + + PyEval_SetCoroutineWrapper(wrapper); + } + else + PyEval_SetCoroutineWrapper(NULL); + Py_INCREF(Py_None); + Py_RETURN_NONE; +} + +PyDoc_STRVAR(set_coroutine_wrapper_doc, +"set_coroutine_wrapper(wrapper)\n\ +\n\ +Set a wrapper for coroutine objects." +); + +static PyObject * +sys_get_coroutine_wrapper(PyObject *self, PyObject *args) +{ + PyObject *wrapper = PyEval_GetCoroutineWrapper(); + if (wrapper == NULL) { + wrapper = Py_None; + } + Py_INCREF(wrapper); + return wrapper; +} + +PyDoc_STRVAR(get_coroutine_wrapper_doc, +"get_coroutine_wrapper()\n\ +\n\ +Return the wrapper for coroutine objects set by sys.set_coroutine_wrapper." +); + + static PyTypeObject Hash_InfoType; PyDoc_STRVAR(hash_info_doc, @@ -1215,6 +1258,10 @@ static PyMethodDef sys_methods[] = { {"call_tracing", sys_call_tracing, METH_VARARGS, call_tracing_doc}, {"_debugmallocstats", sys_debugmallocstats, METH_NOARGS, debugmallocstats_doc}, + {"set_coroutine_wrapper", sys_set_coroutine_wrapper, METH_O, + set_coroutine_wrapper_doc}, + {"get_coroutine_wrapper", sys_get_coroutine_wrapper, METH_NOARGS, + get_coroutine_wrapper_doc}, {NULL, NULL} /* sentinel */ }; diff --git a/Tools/parser/unparse.py b/Tools/parser/unparse.py index 0c1cc5fe416..c82857710b0 100644 --- a/Tools/parser/unparse.py +++ b/Tools/parser/unparse.py @@ -138,6 +138,14 @@ class Unparser: self.fill("nonlocal ") interleave(lambda: self.write(", "), self.write, t.names) + def _Await(self, t): + self.write("(") + self.write("await") + if t.value: + self.write(" ") + self.dispatch(t.value) + self.write(")") + def _Yield(self, t): self.write("(") self.write("yield") @@ -218,11 +226,18 @@ class Unparser: self.leave() def _FunctionDef(self, t): + self.__FunctionDef_helper(t, "def") + + def _AsyncFunctionDef(self, t): + self.__FunctionDef_helper(t, "async def") + + def __FunctionDef_helper(self, t, fill_suffix): self.write("\n") for deco in t.decorator_list: self.fill("@") self.dispatch(deco) - self.fill("def "+t.name + "(") + def_str = fill_suffix+" "+t.name + "(" + self.fill(def_str) self.dispatch(t.args) self.write(")") if t.returns: @@ -233,7 +248,13 @@ class Unparser: self.leave() def _For(self, t): - self.fill("for ") + self.__For_helper("for ", t) + + def _AsyncFor(self, t): + self.__For_helper("async for ", t) + + def __For_helper(self, fill, t): + self.fill(fill) self.dispatch(t.target) self.write(" in ") self.dispatch(t.iter) @@ -287,6 +308,13 @@ class Unparser: self.dispatch(t.body) self.leave() + def _AsyncWith(self, t): + self.fill("async with ") + interleave(lambda: self.write(", "), self.dispatch, t.items) + self.enter() + self.dispatch(t.body) + self.leave() + # expr def _Bytes(self, t): self.write(repr(t.s))