bpo-42810: Mark jumps at end of if and try statements as artificial. (GH-24091)

* Mark jumps at end of if and try statements as artificial.

* Update importlib

* Add comment explaining the purpose of ADDOP_JUMP_NOLINE.
This commit is contained in:
Mark Shannon 2021-01-04 18:06:55 +00:00 committed by GitHub
parent de833b6013
commit 127dde5916
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 2250 additions and 2191 deletions

View File

@ -874,6 +874,48 @@ class TraceTestCase(unittest.TestCase):
(5, 'line'), (5, 'line'),
(5, 'return')]) (5, 'return')])
def test_nested_ifs(self):
def func():
a = b = 1
if a == 1:
if b == 1:
x = 4
else:
y = 6
else:
z = 8
self.run_and_compare(func,
[(0, 'call'),
(1, 'line'),
(2, 'line'),
(3, 'line'),
(4, 'line'),
(4, 'return')])
def test_nested_try_if(self):
def func():
x = "hello"
try:
3/0
except ZeroDivisionError:
if x == 'raise':
raise ValueError() # line 6
f = 7
self.run_and_compare(func,
[(0, 'call'),
(1, 'line'),
(2, 'line'),
(3, 'line'),
(3, 'exception'),
(4, 'line'),
(5, 'line'),
(7, 'line'),
(7, 'return')])
class SkipLineEventsTraceTestCase(TraceTestCase): class SkipLineEventsTraceTestCase(TraceTestCase):
"""Repeat the trace tests, but with per-line events skipped""" """Repeat the trace tests, but with per-line events skipped"""

View File

@ -207,6 +207,7 @@ static int compiler_next_instr(basicblock *);
static int compiler_addop(struct compiler *, int); static int compiler_addop(struct compiler *, int);
static int compiler_addop_i(struct compiler *, int, Py_ssize_t); static int compiler_addop_i(struct compiler *, int, Py_ssize_t);
static int compiler_addop_j(struct compiler *, int, basicblock *); static int compiler_addop_j(struct compiler *, int, basicblock *);
static int compiler_addop_j_noline(struct compiler *, int, basicblock *);
static int compiler_error(struct compiler *, const char *); static int compiler_error(struct compiler *, const char *);
static int compiler_warn(struct compiler *, const char *, ...); static int compiler_warn(struct compiler *, const char *, ...);
static int compiler_nameop(struct compiler *, identifier, expr_context_ty); static int compiler_nameop(struct compiler *, identifier, expr_context_ty);
@ -1425,6 +1426,12 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b)
return add_jump_to_block(c->u->u_curblock, opcode, c->u->u_lineno, b); return add_jump_to_block(c->u->u_curblock, opcode, c->u->u_lineno, b);
} }
static int
compiler_addop_j_noline(struct compiler *c, int opcode, basicblock *b)
{
return add_jump_to_block(c->u->u_curblock, opcode, -1, b);
}
/* NEXT_BLOCK() creates an implicit jump from the current block /* NEXT_BLOCK() creates an implicit jump from the current block
to the new block. to the new block.
@ -1495,6 +1502,14 @@ compiler_addop_j(struct compiler *c, int opcode, basicblock *b)
return 0; \ return 0; \
} }
/* Add a jump with no line number.
* Used for artificial jumps that have no corresponding
* token in the source code. */
#define ADDOP_JUMP_NOLINE(C, OP, O) { \
if (!compiler_addop_j_noline((C), (OP), (O))) \
return 0; \
}
#define ADDOP_COMPARE(C, CMP) { \ #define ADDOP_COMPARE(C, CMP) { \
if (!compiler_addcompare((C), (cmpop_ty)(CMP))) \ if (!compiler_addcompare((C), (cmpop_ty)(CMP))) \
return 0; \ return 0; \
@ -2527,7 +2542,7 @@ compiler_jump_if(struct compiler *c, expr_ty e, basicblock *next, int cond)
return 0; return 0;
if (!compiler_jump_if(c, e->v.IfExp.body, next, cond)) if (!compiler_jump_if(c, e->v.IfExp.body, next, cond))
return 0; return 0;
ADDOP_JUMP(c, JUMP_FORWARD, end); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
compiler_use_next_block(c, next2); compiler_use_next_block(c, next2);
if (!compiler_jump_if(c, e->v.IfExp.orelse, next, cond)) if (!compiler_jump_if(c, e->v.IfExp.orelse, next, cond))
return 0; return 0;
@ -2560,11 +2575,11 @@ compiler_jump_if(struct compiler *c, expr_ty e, basicblock *next, int cond)
basicblock *end = compiler_new_block(c); basicblock *end = compiler_new_block(c);
if (end == NULL) if (end == NULL)
return 0; return 0;
ADDOP_JUMP(c, JUMP_FORWARD, end); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
compiler_use_next_block(c, cleanup); compiler_use_next_block(c, cleanup);
ADDOP(c, POP_TOP); ADDOP(c, POP_TOP);
if (!cond) { if (!cond) {
ADDOP_JUMP(c, JUMP_FORWARD, next); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, next);
} }
compiler_use_next_block(c, end); compiler_use_next_block(c, end);
return 1; return 1;
@ -2599,7 +2614,7 @@ compiler_ifexp(struct compiler *c, expr_ty e)
if (!compiler_jump_if(c, e->v.IfExp.test, next, 0)) if (!compiler_jump_if(c, e->v.IfExp.test, next, 0))
return 0; return 0;
VISIT(c, expr, e->v.IfExp.body); VISIT(c, expr, e->v.IfExp.body);
ADDOP_JUMP(c, JUMP_FORWARD, end); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
compiler_use_next_block(c, next); compiler_use_next_block(c, next);
VISIT(c, expr, e->v.IfExp.orelse); VISIT(c, expr, e->v.IfExp.orelse);
compiler_use_next_block(c, end); compiler_use_next_block(c, end);
@ -2686,7 +2701,7 @@ compiler_if(struct compiler *c, stmt_ty s)
} }
VISIT_SEQ(c, stmt, s->v.If.body); VISIT_SEQ(c, stmt, s->v.If.body);
if (asdl_seq_LEN(s->v.If.orelse)) { if (asdl_seq_LEN(s->v.If.orelse)) {
ADDOP_JUMP(c, JUMP_FORWARD, end); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
compiler_use_next_block(c, next); compiler_use_next_block(c, next);
VISIT_SEQ(c, stmt, s->v.If.orelse); VISIT_SEQ(c, stmt, s->v.If.orelse);
} }
@ -2945,7 +2960,7 @@ compiler_try_finally(struct compiler *c, stmt_ty s)
ADDOP(c, POP_BLOCK); ADDOP(c, POP_BLOCK);
compiler_pop_fblock(c, FINALLY_TRY, body); compiler_pop_fblock(c, FINALLY_TRY, body);
VISIT_SEQ(c, stmt, s->v.Try.finalbody); VISIT_SEQ(c, stmt, s->v.Try.finalbody);
ADDOP_JUMP(c, JUMP_FORWARD, exit); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, exit);
/* `finally` block */ /* `finally` block */
compiler_use_next_block(c, end); compiler_use_next_block(c, end);
if (!compiler_push_fblock(c, FINALLY_END, end, NULL, NULL)) if (!compiler_push_fblock(c, FINALLY_END, end, NULL, NULL))
@ -3094,6 +3109,8 @@ compiler_try_except(struct compiler *c, stmt_ty s)
return 0; return 0;
VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body); VISIT_SEQ(c, stmt, handler->v.ExceptHandler.body);
compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body); compiler_pop_fblock(c, HANDLER_CLEANUP, cleanup_body);
/* name = None; del name; # Mark as artificial */
c->u->u_lineno = -1;
ADDOP(c, POP_EXCEPT); ADDOP(c, POP_EXCEPT);
ADDOP_JUMP(c, JUMP_FORWARD, end); ADDOP_JUMP(c, JUMP_FORWARD, end);
} }
@ -3907,7 +3924,7 @@ compiler_compare(struct compiler *c, expr_ty e)
basicblock *end = compiler_new_block(c); basicblock *end = compiler_new_block(c);
if (end == NULL) if (end == NULL)
return 0; return 0;
ADDOP_JUMP(c, JUMP_FORWARD, end); ADDOP_JUMP_NOLINE(c, JUMP_FORWARD, end);
compiler_use_next_block(c, cleanup); compiler_use_next_block(c, cleanup);
ADDOP(c, ROT_TWO); ADDOP(c, ROT_TWO);
ADDOP(c, POP_TOP); ADDOP(c, POP_TOP);

1606
Python/importlib.h generated

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -890,144 +890,144 @@ const unsigned char _Py_M__zipimport[] = {
95,109,116,105,109,101,90,11,115,111,117,114,99,101,95,115, 95,109,116,105,109,101,90,11,115,111,117,114,99,101,95,115,
105,122,101,114,50,0,0,0,114,9,0,0,0,114,9,0, 105,122,101,114,50,0,0,0,114,9,0,0,0,114,9,0,
0,0,114,10,0,0,0,218,15,95,117,110,109,97,114,115, 0,0,114,10,0,0,0,218,15,95,117,110,109,97,114,115,
104,97,108,95,99,111,100,101,107,2,0,0,115,72,0,0, 104,97,108,95,99,111,100,101,107,2,0,0,115,74,0,0,
0,2,2,2,1,6,254,14,5,12,2,4,1,12,1,10, 0,2,2,2,1,6,254,14,5,12,2,4,1,12,1,10,
1,2,1,2,255,8,1,2,255,10,2,8,1,4,1,4, 1,2,1,2,255,8,1,2,255,10,2,8,1,4,1,4,
1,2,1,4,254,4,5,8,1,6,255,8,4,6,255,4, 1,2,1,4,254,4,5,8,1,4,255,2,128,8,4,6,
3,22,3,18,1,2,255,4,2,8,1,4,255,4,2,18, 255,4,3,22,3,18,1,2,255,4,2,8,1,4,255,4,
2,10,1,16,1,4,1,255,128,114,157,0,0,0,99,1, 2,18,2,10,1,16,1,4,1,255,128,114,157,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4, 99,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,
0,0,0,67,0,0,0,115,28,0,0,0,124,0,160,0, 0,4,0,0,0,67,0,0,0,115,28,0,0,0,124,0,
100,1,100,2,161,2,125,0,124,0,160,0,100,3,100,2, 160,0,100,1,100,2,161,2,125,0,124,0,160,0,100,3,
161,2,125,0,124,0,83,0,41,4,78,115,2,0,0,0, 100,2,161,2,125,0,124,0,83,0,41,4,78,115,2,0,
13,10,243,1,0,0,0,10,243,1,0,0,0,13,41,1, 0,0,13,10,243,1,0,0,0,10,243,1,0,0,0,13,
114,19,0,0,0,41,1,218,6,115,111,117,114,99,101,114, 41,1,114,19,0,0,0,41,1,218,6,115,111,117,114,99,
9,0,0,0,114,9,0,0,0,114,10,0,0,0,218,23, 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,
95,110,111,114,109,97,108,105,122,101,95,108,105,110,101,95, 218,23,95,110,111,114,109,97,108,105,122,101,95,108,105,110,
101,110,100,105,110,103,115,152,2,0,0,115,8,0,0,0, 101,95,101,110,100,105,110,103,115,152,2,0,0,115,8,0,
12,1,12,1,4,1,255,128,114,161,0,0,0,99,2,0, 0,0,12,1,12,1,4,1,255,128,114,161,0,0,0,99,
0,0,0,0,0,0,0,0,0,0,2,0,0,0,6,0, 2,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,
0,0,67,0,0,0,115,24,0,0,0,116,0,124,1,131, 6,0,0,0,67,0,0,0,115,24,0,0,0,116,0,124,
1,125,1,116,1,124,1,124,0,100,1,100,2,100,3,141, 1,131,1,125,1,116,1,124,1,124,0,100,1,100,2,100,
4,83,0,41,4,78,114,78,0,0,0,84,41,1,90,12, 3,141,4,83,0,41,4,78,114,78,0,0,0,84,41,1,
100,111,110,116,95,105,110,104,101,114,105,116,41,2,114,161, 90,12,100,111,110,116,95,105,110,104,101,114,105,116,41,2,
0,0,0,218,7,99,111,109,112,105,108,101,41,2,114,57, 114,161,0,0,0,218,7,99,111,109,112,105,108,101,41,2,
0,0,0,114,160,0,0,0,114,9,0,0,0,114,9,0, 114,57,0,0,0,114,160,0,0,0,114,9,0,0,0,114,
0,0,114,10,0,0,0,218,15,95,99,111,109,112,105,108, 9,0,0,0,114,10,0,0,0,218,15,95,99,111,109,112,
101,95,115,111,117,114,99,101,159,2,0,0,115,6,0,0, 105,108,101,95,115,111,117,114,99,101,159,2,0,0,115,6,
0,8,1,16,1,255,128,114,163,0,0,0,99,2,0,0, 0,0,0,8,1,16,1,255,128,114,163,0,0,0,99,2,
0,0,0,0,0,0,0,0,0,2,0,0,0,11,0,0, 0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,11,
0,67,0,0,0,115,68,0,0,0,116,0,160,1,124,0, 0,0,0,67,0,0,0,115,68,0,0,0,116,0,160,1,
100,1,63,0,100,2,23,0,124,0,100,3,63,0,100,4, 124,0,100,1,63,0,100,2,23,0,124,0,100,3,63,0,
64,0,124,0,100,5,64,0,124,1,100,6,63,0,124,1, 100,4,64,0,124,0,100,5,64,0,124,1,100,6,63,0,
100,3,63,0,100,7,64,0,124,1,100,5,64,0,100,8, 124,1,100,3,63,0,100,7,64,0,124,1,100,5,64,0,
20,0,100,9,100,9,100,9,102,9,161,1,83,0,41,10, 100,8,20,0,100,9,100,9,100,9,102,9,161,1,83,0,
78,233,9,0,0,0,105,188,7,0,0,233,5,0,0,0, 41,10,78,233,9,0,0,0,105,188,7,0,0,233,5,0,
233,15,0,0,0,233,31,0,0,0,233,11,0,0,0,233, 0,0,233,15,0,0,0,233,31,0,0,0,233,11,0,0,
63,0,0,0,114,88,0,0,0,114,14,0,0,0,41,2, 0,233,63,0,0,0,114,88,0,0,0,114,14,0,0,0,
114,133,0,0,0,90,6,109,107,116,105,109,101,41,2,218, 41,2,114,133,0,0,0,90,6,109,107,116,105,109,101,41,
1,100,114,140,0,0,0,114,9,0,0,0,114,9,0,0, 2,218,1,100,114,140,0,0,0,114,9,0,0,0,114,9,
0,114,10,0,0,0,218,14,95,112,97,114,115,101,95,100, 0,0,0,114,10,0,0,0,218,14,95,112,97,114,115,101,
111,115,116,105,109,101,165,2,0,0,115,20,0,0,0,4, 95,100,111,115,116,105,109,101,165,2,0,0,115,20,0,0,
1,10,1,10,1,6,1,6,1,10,1,10,1,6,1,6, 0,4,1,10,1,10,1,6,1,6,1,10,1,10,1,6,
249,255,128,114,171,0,0,0,99,2,0,0,0,0,0,0, 1,6,249,255,128,114,171,0,0,0,99,2,0,0,0,0,
0,0,0,0,0,6,0,0,0,10,0,0,0,67,0,0, 0,0,0,0,0,0,0,6,0,0,0,10,0,0,0,67,
0,115,110,0,0,0,122,82,124,1,100,1,100,0,133,2, 0,0,0,115,110,0,0,0,122,82,124,1,100,1,100,0,
25,0,100,2,118,0,115,22,74,0,130,1,124,1,100,0, 133,2,25,0,100,2,118,0,115,22,74,0,130,1,124,1,
100,1,133,2,25,0,125,1,124,0,106,0,124,1,25,0, 100,0,100,1,133,2,25,0,125,1,124,0,106,0,124,1,
125,2,124,2,100,3,25,0,125,3,124,2,100,4,25,0, 25,0,125,2,124,2,100,3,25,0,125,3,124,2,100,4,
125,4,124,2,100,5,25,0,125,5,116,1,124,4,124,3, 25,0,125,4,124,2,100,5,25,0,125,5,116,1,124,4,
131,2,124,5,102,2,87,0,83,0,4,0,116,2,116,3, 124,3,131,2,124,5,102,2,87,0,83,0,4,0,116,2,
116,4,102,3,121,108,1,0,1,0,1,0,89,0,100,6, 116,3,116,4,102,3,121,108,1,0,1,0,1,0,89,0,
83,0,119,0,41,7,78,114,14,0,0,0,169,2,218,1, 100,6,83,0,119,0,41,7,78,114,14,0,0,0,169,2,
99,218,1,111,114,165,0,0,0,233,6,0,0,0,233,3, 218,1,99,218,1,111,114,165,0,0,0,233,6,0,0,0,
0,0,0,41,2,114,0,0,0,0,114,0,0,0,0,41, 233,3,0,0,0,41,2,114,0,0,0,0,114,0,0,0,
5,114,28,0,0,0,114,171,0,0,0,114,26,0,0,0, 0,41,5,114,28,0,0,0,114,171,0,0,0,114,26,0,
218,10,73,110,100,101,120,69,114,114,111,114,114,156,0,0, 0,0,218,10,73,110,100,101,120,69,114,114,111,114,114,156,
0,41,6,114,32,0,0,0,114,13,0,0,0,114,58,0, 0,0,0,41,6,114,32,0,0,0,114,13,0,0,0,114,
0,0,114,133,0,0,0,114,134,0,0,0,90,17,117,110, 58,0,0,0,114,133,0,0,0,114,134,0,0,0,90,17,
99,111,109,112,114,101,115,115,101,100,95,115,105,122,101,114, 117,110,99,111,109,112,114,101,115,115,101,100,95,115,105,122,
9,0,0,0,114,9,0,0,0,114,10,0,0,0,114,153, 101,114,9,0,0,0,114,9,0,0,0,114,10,0,0,0,
0,0,0,178,2,0,0,115,24,0,0,0,2,1,20,2, 114,153,0,0,0,178,2,0,0,115,24,0,0,0,2,1,
12,1,10,1,8,3,8,1,8,1,16,1,18,1,6,1, 20,2,12,1,10,1,8,3,8,1,8,1,16,1,18,1,
2,255,255,128,114,153,0,0,0,99,2,0,0,0,0,0, 6,1,2,255,255,128,114,153,0,0,0,99,2,0,0,0,
0,0,0,0,0,0,3,0,0,0,8,0,0,0,67,0, 0,0,0,0,0,0,0,0,3,0,0,0,8,0,0,0,
0,0,115,80,0,0,0,124,1,100,1,100,0,133,2,25, 67,0,0,0,115,80,0,0,0,124,1,100,1,100,0,133,
0,100,2,118,0,115,20,74,0,130,1,124,1,100,0,100, 2,25,0,100,2,118,0,115,20,74,0,130,1,124,1,100,
1,133,2,25,0,125,1,122,14,124,0,106,0,124,1,25, 0,100,1,133,2,25,0,125,1,122,14,124,0,106,0,124,
0,125,2,87,0,110,18,4,0,116,1,121,78,1,0,1, 1,25,0,125,2,87,0,110,18,4,0,116,1,121,78,1,
0,1,0,89,0,100,0,83,0,116,2,124,0,106,3,124, 0,1,0,1,0,89,0,100,0,83,0,116,2,124,0,106,
2,131,2,83,0,119,0,41,3,78,114,14,0,0,0,114, 3,124,2,131,2,83,0,119,0,41,3,78,114,14,0,0,
172,0,0,0,41,4,114,28,0,0,0,114,26,0,0,0, 0,114,172,0,0,0,41,4,114,28,0,0,0,114,26,0,
114,56,0,0,0,114,29,0,0,0,41,3,114,32,0,0, 0,0,114,56,0,0,0,114,29,0,0,0,41,3,114,32,
0,114,13,0,0,0,114,58,0,0,0,114,9,0,0,0, 0,0,0,114,13,0,0,0,114,58,0,0,0,114,9,0,
114,9,0,0,0,114,10,0,0,0,114,151,0,0,0,197, 0,0,114,9,0,0,0,114,10,0,0,0,114,151,0,0,
2,0,0,115,18,0,0,0,20,2,12,1,2,2,14,1, 0,197,2,0,0,115,18,0,0,0,20,2,12,1,2,2,
12,1,6,1,12,2,2,253,255,128,114,151,0,0,0,99, 14,1,12,1,6,1,12,2,2,253,255,128,114,151,0,0,
2,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0, 0,99,2,0,0,0,0,0,0,0,0,0,0,0,14,0,
11,0,0,0,67,0,0,0,115,18,1,0,0,116,0,124, 0,0,11,0,0,0,67,0,0,0,115,18,1,0,0,116,
0,124,1,131,2,125,2,100,0,125,3,116,1,68,0,93, 0,124,0,124,1,131,2,125,2,100,0,125,3,116,1,68,
204,92,3,125,4,125,5,125,6,124,2,124,4,23,0,125, 0,93,204,92,3,125,4,125,5,125,6,124,2,124,4,23,
7,116,2,106,3,100,1,124,0,106,4,116,5,124,7,100, 0,125,7,116,2,106,3,100,1,124,0,106,4,116,5,124,
2,100,3,141,5,1,0,122,14,124,0,106,6,124,7,25, 7,100,2,100,3,141,5,1,0,122,14,124,0,106,6,124,
0,125,8,87,0,110,18,4,0,116,7,144,1,121,16,1, 7,25,0,125,8,87,0,110,18,4,0,116,7,144,1,121,
0,1,0,1,0,89,0,113,18,124,8,100,4,25,0,125, 16,1,0,1,0,1,0,89,0,113,18,124,8,100,4,25,
9,116,8,124,0,106,4,124,8,131,2,125,10,100,0,125, 0,125,9,116,8,124,0,106,4,124,8,131,2,125,10,100,
11,124,5,114,182,122,20,116,9,124,0,124,9,124,7,124, 0,125,11,124,5,114,182,122,20,116,9,124,0,124,9,124,
1,124,10,131,5,125,11,87,0,110,50,4,0,116,10,144, 7,124,1,124,10,131,5,125,11,87,0,110,50,4,0,116,
1,121,14,1,0,125,12,1,0,122,16,124,12,125,3,87, 10,144,1,121,14,1,0,125,12,1,0,122,16,124,12,125,
0,89,0,100,0,125,12,126,12,110,18,100,0,125,12,126, 3,87,0,89,0,100,0,125,12,126,12,110,18,100,0,125,
12,119,1,116,11,124,9,124,10,131,2,125,11,124,11,100, 12,126,12,119,1,116,11,124,9,124,10,131,2,125,11,124,
0,117,0,114,202,113,18,124,8,100,4,25,0,125,9,124, 11,100,0,117,0,114,202,113,18,124,8,100,4,25,0,125,
11,124,6,124,9,102,3,2,0,1,0,83,0,124,3,114, 9,124,11,124,6,124,9,102,3,2,0,1,0,83,0,124,
252,100,5,124,3,155,0,157,2,125,13,116,12,124,13,124, 3,114,252,100,5,124,3,155,0,157,2,125,13,116,12,124,
1,100,6,141,2,124,3,130,2,116,12,100,7,124,1,155, 13,124,1,100,6,141,2,124,3,130,2,116,12,100,7,124,
2,157,2,124,1,100,6,141,2,130,1,119,0,119,0,41, 1,155,2,157,2,124,1,100,6,141,2,130,1,119,0,119,
8,78,122,13,116,114,121,105,110,103,32,123,125,123,125,123, 0,41,8,78,122,13,116,114,121,105,110,103,32,123,125,123,
125,114,88,0,0,0,41,1,90,9,118,101,114,98,111,115, 125,123,125,114,88,0,0,0,41,1,90,9,118,101,114,98,
105,116,121,114,0,0,0,0,122,20,109,111,100,117,108,101, 111,115,105,116,121,114,0,0,0,0,122,20,109,111,100,117,
32,108,111,97,100,32,102,97,105,108,101,100,58,32,114,62, 108,101,32,108,111,97,100,32,102,97,105,108,101,100,58,32,
0,0,0,114,61,0,0,0,41,13,114,36,0,0,0,114, 114,62,0,0,0,114,61,0,0,0,41,13,114,36,0,0,
91,0,0,0,114,45,0,0,0,114,80,0,0,0,114,29, 0,114,91,0,0,0,114,45,0,0,0,114,80,0,0,0,
0,0,0,114,20,0,0,0,114,28,0,0,0,114,26,0, 114,29,0,0,0,114,20,0,0,0,114,28,0,0,0,114,
0,0,114,56,0,0,0,114,157,0,0,0,114,79,0,0, 26,0,0,0,114,56,0,0,0,114,157,0,0,0,114,79,
0,114,163,0,0,0,114,3,0,0,0,41,14,114,32,0, 0,0,0,114,163,0,0,0,114,3,0,0,0,41,14,114,
0,0,114,38,0,0,0,114,13,0,0,0,90,12,105,109, 32,0,0,0,114,38,0,0,0,114,13,0,0,0,90,12,
112,111,114,116,95,101,114,114,111,114,114,92,0,0,0,114, 105,109,112,111,114,116,95,101,114,114,111,114,114,92,0,0,
93,0,0,0,114,51,0,0,0,114,66,0,0,0,114,58, 0,114,93,0,0,0,114,51,0,0,0,114,66,0,0,0,
0,0,0,114,40,0,0,0,114,128,0,0,0,114,50,0, 114,58,0,0,0,114,40,0,0,0,114,128,0,0,0,114,
0,0,90,3,101,120,99,114,81,0,0,0,114,9,0,0, 50,0,0,0,90,3,101,120,99,114,81,0,0,0,114,9,
0,114,9,0,0,0,114,10,0,0,0,114,48,0,0,0, 0,0,0,114,9,0,0,0,114,10,0,0,0,114,48,0,
212,2,0,0,115,60,0,0,0,10,1,4,1,14,1,8, 0,0,212,2,0,0,115,60,0,0,0,10,1,4,1,14,
1,22,1,2,1,14,1,14,1,4,1,8,2,12,1,4, 1,8,1,22,1,2,1,14,1,14,1,4,1,8,2,12,
1,4,1,2,1,20,1,16,1,16,1,8,128,10,2,8, 1,4,1,4,1,2,1,20,1,16,1,16,1,8,128,10,
1,2,3,8,1,14,1,4,2,10,1,14,1,18,2,2, 2,8,1,2,3,8,1,14,1,4,2,10,1,14,1,18,
241,2,247,255,128,114,48,0,0,0,41,46,114,86,0,0, 2,2,241,2,247,255,128,114,48,0,0,0,41,46,114,86,
0,90,26,95,102,114,111,122,101,110,95,105,109,112,111,114, 0,0,0,90,26,95,102,114,111,122,101,110,95,105,109,112,
116,108,105,98,95,101,120,116,101,114,110,97,108,114,21,0, 111,114,116,108,105,98,95,101,120,116,101,114,110,97,108,114,
0,0,114,1,0,0,0,114,2,0,0,0,90,17,95,102, 21,0,0,0,114,1,0,0,0,114,2,0,0,0,90,17,
114,111,122,101,110,95,105,109,112,111,114,116,108,105,98,114, 95,102,114,111,122,101,110,95,105,109,112,111,114,116,108,105,
45,0,0,0,114,150,0,0,0,114,112,0,0,0,114,154, 98,114,45,0,0,0,114,150,0,0,0,114,112,0,0,0,
0,0,0,114,71,0,0,0,114,133,0,0,0,114,69,0, 114,154,0,0,0,114,71,0,0,0,114,133,0,0,0,114,
0,0,90,7,95,95,97,108,108,95,95,114,20,0,0,0, 69,0,0,0,90,7,95,95,97,108,108,95,95,114,20,0,
90,15,112,97,116,104,95,115,101,112,97,114,97,116,111,114, 0,0,90,15,112,97,116,104,95,115,101,112,97,114,97,116,
115,114,18,0,0,0,114,79,0,0,0,114,3,0,0,0, 111,114,115,114,18,0,0,0,114,79,0,0,0,114,3,0,
114,25,0,0,0,218,4,116,121,112,101,114,74,0,0,0, 0,0,114,25,0,0,0,218,4,116,121,112,101,114,74,0,
114,115,0,0,0,114,117,0,0,0,114,119,0,0,0,90, 0,0,114,115,0,0,0,114,117,0,0,0,114,119,0,0,
13,95,76,111,97,100,101,114,66,97,115,105,99,115,114,4, 0,90,13,95,76,111,97,100,101,114,66,97,115,105,99,115,
0,0,0,114,91,0,0,0,114,36,0,0,0,114,37,0, 114,4,0,0,0,114,91,0,0,0,114,36,0,0,0,114,
0,0,114,35,0,0,0,114,27,0,0,0,114,124,0,0, 37,0,0,0,114,35,0,0,0,114,27,0,0,0,114,124,
0,114,144,0,0,0,114,146,0,0,0,114,56,0,0,0, 0,0,0,114,144,0,0,0,114,146,0,0,0,114,56,0,
114,149,0,0,0,114,157,0,0,0,218,8,95,95,99,111, 0,0,114,149,0,0,0,114,157,0,0,0,218,8,95,95,
100,101,95,95,114,155,0,0,0,114,161,0,0,0,114,163, 99,111,100,101,95,95,114,155,0,0,0,114,161,0,0,0,
0,0,0,114,171,0,0,0,114,153,0,0,0,114,151,0, 114,163,0,0,0,114,171,0,0,0,114,153,0,0,0,114,
0,0,114,48,0,0,0,114,9,0,0,0,114,9,0,0, 151,0,0,0,114,48,0,0,0,114,9,0,0,0,114,9,
0,114,9,0,0,0,114,10,0,0,0,218,8,60,109,111, 0,0,0,114,9,0,0,0,114,10,0,0,0,218,8,60,
100,117,108,101,62,1,0,0,0,115,92,0,0,0,4,0, 109,111,100,117,108,101,62,1,0,0,0,115,92,0,0,0,
8,16,16,1,8,1,8,1,8,1,8,1,8,1,8,1, 4,0,8,16,16,1,8,1,8,1,8,1,8,1,8,1,
8,1,8,2,6,3,14,1,16,3,4,4,8,2,4,2, 8,1,8,1,8,2,6,3,14,1,16,3,4,4,8,2,
4,1,4,1,18,2,0,127,0,127,12,34,12,1,2,1, 4,2,4,1,4,1,18,2,0,127,0,127,12,34,12,1,
2,1,4,252,8,9,8,4,8,9,8,31,2,126,2,254, 2,1,2,1,4,252,8,9,8,4,8,9,8,31,2,126,
4,29,8,5,8,21,8,46,8,8,10,40,8,5,8,7, 2,254,4,29,8,5,8,21,8,46,8,8,10,40,8,5,
8,6,8,13,8,19,12,15,255,128, 8,7,8,6,8,13,8,19,12,15,255,128,
}; };