changeset: 100004:775b74e0e103 parent: 100002:f97da0952a2e user: Victor Stinner date: Wed Jan 20 12:16:21 2016 +0100 files: Doc/whatsnew/3.6.rst Include/code.h Lib/dis.py Lib/importlib/_bootstrap_external.py Misc/NEWS Objects/codeobject.c Objects/frameobject.c Objects/lnotab_notes.txt Python/compile.c Python/importlib_external.h Python/peephole.c description: co_lnotab supports negative line number delta Issue #26107: The format of the co_lnotab attribute of code objects changes to support negative line number delta. Changes: * assemble_lnotab(): if line number delta is less than -128 or greater than 127, emit multiple (offset_delta, lineno_delta) in co_lnotab * update functions decoding co_lnotab to use signed 8-bit integers - dis.findlinestarts() - PyCode_Addr2Line() - _PyCode_CheckLineNumber() - frame_setlineno() * update lnotab_notes.txt * increase importlib MAGIC_NUMBER to 3361 * document the change in What's New in Python 3.6 * cleanup also PyCode_Optimize() to use better variable names diff -r f97da0952a2e -r 775b74e0e103 Doc/whatsnew/3.6.rst --- a/Doc/whatsnew/3.6.rst Wed Jan 20 03:11:52 2016 -0800 +++ b/Doc/whatsnew/3.6.rst Wed Jan 20 12:16:21 2016 +0100 @@ -244,6 +244,16 @@ Changes in the Python API ------------------------- +* The format of the ``co_lnotab`` attribute of code objects changed to support + negative line number delta. By default, Python does not emit bytecode with + negative line number delta. Functions using ``frame.f_lineno``, + ``PyFrame_GetLineNumber()`` or ``PyCode_Addr2Line()`` are not affected. + Functions decoding directly ``co_lnotab`` should be updated to use a signed + 8-bit integer type for the line number delta, but it's only required to + support applications using negative line number delta. See + ``Objects/lnotab_notes.txt`` for the ``co_lnotab`` format and how to decode + it, and see the :pep:`511` for the rationale. + * The functions in the :mod:`compileall` module now return booleans instead of ``1`` or ``0`` to represent success or failure, respectively. Thanks to booleans being a subclass of integers, this should only be an issue if you diff -r f97da0952a2e -r 775b74e0e103 Include/code.h --- a/Include/code.h Wed Jan 20 03:11:52 2016 -0800 +++ b/Include/code.h Wed Jan 20 12:16:21 2016 +0100 @@ -117,7 +117,7 @@ #endif PyAPI_FUNC(PyObject*) PyCode_Optimize(PyObject *code, PyObject* consts, - PyObject *names, PyObject *lineno_obj); + PyObject *names, PyObject *lnotab); #ifdef __cplusplus } diff -r f97da0952a2e -r 775b74e0e103 Lib/dis.py --- a/Lib/dis.py Wed Jan 20 03:11:52 2016 -0800 +++ b/Lib/dis.py Wed Jan 20 12:16:21 2016 +0100 @@ -397,8 +397,8 @@ Generate pairs (offset, lineno) as described in Python/compile.c. """ - byte_increments = list(code.co_lnotab[0::2]) - line_increments = list(code.co_lnotab[1::2]) + byte_increments = code.co_lnotab[0::2] + line_increments = code.co_lnotab[1::2] lastlineno = None lineno = code.co_firstlineno @@ -409,6 +409,9 @@ yield (addr, lineno) lastlineno = lineno addr += byte_incr + if line_incr >= 0x80: + # line_increments is an array of 8-bit signed integers + line_incr -= 0x100 lineno += line_incr if lineno != lastlineno: yield (addr, lineno) diff -r f97da0952a2e -r 775b74e0e103 Lib/importlib/_bootstrap_external.py --- a/Lib/importlib/_bootstrap_external.py Wed Jan 20 03:11:52 2016 -0800 +++ b/Lib/importlib/_bootstrap_external.py Wed Jan 20 12:16:21 2016 +0100 @@ -223,13 +223,14 @@ # Python 3.5b1 3330 (PEP 448: Additional Unpacking Generalizations) # Python 3.5b2 3340 (fix dictionary display evaluation order #11205) # Python 3.5b2 3350 (add GET_YIELD_FROM_ITER opcode #24400) -# Python 3.6a0 3360 (add FORMAT_VALUE opcode #25483) +# Python 3.6a0 3360 (add FORMAT_VALUE opcode #25483 +# Python 3.6a0 3361 (lineno delta of code.co_lnotab becomes signed) # # MAGIC must change whenever the bytecode emitted by the compiler may no # longer be understood by older implementations of the eval loop (usually # due to the addition of new opcodes). -MAGIC_NUMBER = (3360).to_bytes(2, 'little') + b'\r\n' +MAGIC_NUMBER = (3361).to_bytes(2, 'little') + b'\r\n' _RAW_MAGIC_NUMBER = int.from_bytes(MAGIC_NUMBER, 'little') # For import.c _PYCACHE = '__pycache__' diff -r f97da0952a2e -r 775b74e0e103 Misc/NEWS --- a/Misc/NEWS Wed Jan 20 03:11:52 2016 -0800 +++ b/Misc/NEWS Wed Jan 20 12:16:21 2016 +0100 @@ -10,6 +10,9 @@ Core and Builtins ----------------- +- Issue #26107: The format of the ``co_lnotab`` attribute of code objects + changes to support negative line number delta. + - Issue #26154: Add a new private _PyThreadState_UncheckedGet() function to get the current Python thread state, but don't issue a fatal error if it is NULL. This new function must be used instead of accessing directly the diff -r f97da0952a2e -r 775b74e0e103 Objects/codeobject.c --- a/Objects/codeobject.c Wed Jan 20 03:11:52 2016 -0800 +++ b/Objects/codeobject.c Wed Jan 20 12:16:21 2016 +0100 @@ -557,7 +557,8 @@ addr += *p++; if (addr > addrq) break; - line += *p++; + line += (signed char)*p; + p++; } return line; } @@ -592,17 +593,19 @@ if (addr + *p > lasti) break; addr += *p++; - if (*p) + if ((signed char)*p) bounds->ap_lower = addr; - line += *p++; + line += (signed char)*p; + p++; --size; } if (size > 0) { while (--size >= 0) { addr += *p++; - if (*p++) + if ((signed char)*p) break; + p++; } bounds->ap_upper = addr; } diff -r f97da0952a2e -r 775b74e0e103 Objects/frameobject.c --- a/Objects/frameobject.c Wed Jan 20 03:11:52 2016 -0800 +++ b/Objects/frameobject.c Wed Jan 20 12:16:21 2016 +0100 @@ -137,7 +137,7 @@ new_lasti = -1; for (offset = 0; offset < lnotab_len; offset += 2) { addr += lnotab[offset]; - line += lnotab[offset+1]; + line += (signed char)lnotab[offset+1]; if (line >= new_lineno) { new_lasti = addr; new_lineno = line; diff -r f97da0952a2e -r 775b74e0e103 Objects/lnotab_notes.txt --- a/Objects/lnotab_notes.txt Wed Jan 20 03:11:52 2016 -0800 +++ b/Objects/lnotab_notes.txt Wed Jan 20 12:16:21 2016 +0100 @@ -12,42 +12,47 @@ 0 1 6 2 50 7 - 350 307 - 361 308 + 350 207 + 361 208 Instead of storing these numbers literally, we compress the list by storing only -the increments from one row to the next. Conceptually, the stored list might +the difference from one row to the next. Conceptually, the stored list might look like: - 0, 1, 6, 1, 44, 5, 300, 300, 11, 1 + 0, 1, 6, 1, 44, 5, 300, 200, 11, 1 -The above doesn't really work, but it's a start. Note that an unsigned byte -can't hold negative values, or values larger than 255, and the above example -contains two such values. So we make two tweaks: +The above doesn't really work, but it's a start. An unsigned byte (byte code +offset)) can't hold negative values, or values larger than 255, a signed byte +(line number) can't hold values larger than 127 or less than -128, and the +above example contains two such values. So we make two tweaks: - (a) there's a deep assumption that byte code offsets and their corresponding - line #s both increase monotonically, and - (b) if at least one column jumps by more than 255 from one row to the next, - more than one pair is written to the table. In case #b, there's no way to know - from looking at the table later how many were written. That's the delicate - part. A user of co_lnotab desiring to find the source line number - corresponding to a bytecode address A should do something like this + (a) there's a deep assumption that byte code offsets increase monotonically, + and + (b) if byte code offset jumps by more than 255 from one row to the next, or if + source code line number jumps by more than 127 or less than -128 from one row + to the next, more than one pair is written to the table. In case #b, + there's no way to know from looking at the table later how many were written. + That's the delicate part. A user of co_lnotab desiring to find the source + line number corresponding to a bytecode address A should do something like + this: lineno = addr = 0 for addr_incr, line_incr in co_lnotab: addr += addr_incr if addr > A: return lineno + if line_incr >= 0x80: + line_incr -= 0x100 lineno += line_incr (In C, this is implemented by PyCode_Addr2Line().) In order for this to work, when the addr field increments by more than 255, the line # increment in each pair generated must be 0 until the remaining addr increment is < 256. So, in the example above, assemble_lnotab in compile.c should not (as was actually done -until 2.2) expand 300, 300 to +until 2.2) expand 300, 200 to 255, 255, 45, 45, but to - 255, 0, 45, 255, 0, 45. + 255, 0, 45, 128, 0, 72. The above is sufficient to reconstruct line numbers for tracebacks, but not for line tracing. Tracing is handled by PyCode_CheckLineNumber() in codeobject.c diff -r f97da0952a2e -r 775b74e0e103 Python/compile.c --- a/Python/compile.c Wed Jan 20 03:11:52 2016 -0800 +++ b/Python/compile.c Wed Jan 20 12:16:21 2016 +0100 @@ -4452,7 +4452,6 @@ d_lineno = i->i_lineno - a->a_lineno; assert(d_bytecode >= 0); - assert(d_lineno >= 0); if(d_bytecode == 0 && d_lineno == 0) return 1; @@ -4482,9 +4481,21 @@ d_bytecode -= ncodes * 255; a->a_lnotab_off += ncodes * 2; } - assert(d_bytecode <= 255); - if (d_lineno > 255) { - int j, nbytes, ncodes = d_lineno / 255; + assert(0 <= d_bytecode && d_bytecode <= 255); + + if (d_lineno < -128 || 127 < d_lineno) { + int j, nbytes, ncodes, k; + if (d_lineno < 0) { + k = -128; + /* use division on positive numbers */ + ncodes = (-d_lineno) / 128; + } + else { + k = 127; + ncodes = d_lineno / 127; + } + d_lineno -= ncodes * k; + assert(ncodes >= 1); nbytes = a->a_lnotab_off + 2 * ncodes; len = PyBytes_GET_SIZE(a->a_lnotab); if (nbytes >= len) { @@ -4502,15 +4513,15 @@ lnotab = (unsigned char *) PyBytes_AS_STRING(a->a_lnotab) + a->a_lnotab_off; *lnotab++ = d_bytecode; - *lnotab++ = 255; + *lnotab++ = k; d_bytecode = 0; for (j = 1; j < ncodes; j++) { *lnotab++ = 0; - *lnotab++ = 255; + *lnotab++ = k; } - d_lineno -= ncodes * 255; a->a_lnotab_off += ncodes * 2; } + assert(-128 <= d_lineno && d_lineno <= 127); len = PyBytes_GET_SIZE(a->a_lnotab); if (a->a_lnotab_off + 2 >= len) { diff -r f97da0952a2e -r 775b74e0e103 Python/importlib_external.h --- a/Python/importlib_external.h Wed Jan 20 03:11:52 2016 -0800 +++ b/Python/importlib_external.h Wed Jan 20 12:16:21 2016 +0100 @@ -258,7 +258,7 @@ 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,32,13,0, + 1,17,1,13,1,5,1,114,55,0,0,0,105,33,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, @@ -368,7 +368,7 @@ 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,244,0,0,0,115,46,0,0,0,0,18,12, + 117,114,99,101,245,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, @@ -447,7 +447,7 @@ 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,32,1,0,0,115,44,0,0,0,0,9, + 99,97,99,104,101,33,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, @@ -484,7 +484,7 @@ 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,65, + 95,103,101,116,95,115,111,117,114,99,101,102,105,108,101,66, 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, @@ -499,7 +499,7 @@ 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,84,1,0,0,115,16,0, + 101,116,95,99,97,99,104,101,100,85,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, @@ -514,7 +514,7 @@ 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,96,1,0,0,115,12,0,0,0,0, + 99,95,109,111,100,101,97,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, 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, @@ -554,7 +554,7 @@ 103,115,90,6,107,119,97,114,103,115,41,1,218,6,109,101, 116,104,111,100,114,4,0,0,0,114,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,116,1,0,0,115,12,0,0,0,0,1,12,1, + 112,101,114,117,1,0,0,115,12,0,0,0,0,1,12,1, 12,1,15,1,6,1,25,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, @@ -573,7 +573,7 @@ 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,127,1, + 0,0,114,5,0,0,0,218,5,95,119,114,97,112,128,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, @@ -581,7 +581,7 @@ 78,97,109,101,69,114,114,111,114,41,3,114,102,0,0,0, 114,103,0,0,0,114,113,0,0,0,114,4,0,0,0,41, 1,114,102,0,0,0,114,5,0,0,0,218,11,95,99,104, - 101,99,107,95,110,97,109,101,108,1,0,0,115,14,0,0, + 101,99,107,95,110,97,109,101,109,1,0,0,115,14,0,0, 0,0,8,21,7,3,1,13,1,13,2,17,5,13,1,114, 116,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, @@ -611,7 +611,7 @@ 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,136,1,0,0,115,10,0,0,0,0,10,21,1,24,1, + 109,137,1,0,0,115,10,0,0,0,0,10,21,1,24,1, 6,1,29,1,114,123,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,252, 1,0,0,105,0,0,125,4,0,124,2,0,100,1,0,107, @@ -698,7 +698,7 @@ 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,153,1,0,0,115,76,0,0,0, + 95,104,101,97,100,101,114,154,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,16,1,18,1,18,1,15,1, 16,1,15,1,18,1,15,1,16,1,12,1,12,1,3,1, @@ -729,7 +729,7 @@ 5,114,53,0,0,0,114,98,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,208,1,0, + 112,105,108,101,95,98,121,116,101,99,111,100,101,209,1,0, 0,115,16,0,0,0,0,2,15,1,15,1,16,1,12,1, 16,1,4,2,18,1,114,141,0,0,0,114,59,0,0,0, 99,3,0,0,0,0,0,0,0,4,0,0,0,3,0,0, @@ -749,7 +749,7 @@ 100,117,109,112,115,41,4,114,140,0,0,0,114,126,0,0, 0,114,134,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,220,1,0, + 101,95,116,111,95,98,121,116,101,99,111,100,101,221,1,0, 0,115,10,0,0,0,0,3,12,1,19,1,19,1,22,1, 114,144,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, @@ -778,7 +778,7 @@ 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,230,1,0,0,115,10,0, + 100,101,95,115,111,117,114,99,101,231,1,0,0,115,10,0, 0,0,0,5,12,1,18,1,15,1,18,1,114,149,0,0, 0,114,120,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, @@ -843,7 +843,7 @@ 102,105,120,101,115,114,153,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,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,247,1,0,0,115, + 108,101,95,108,111,99,97,116,105,111,110,248,1,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, @@ -883,7 +883,7 @@ 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,69,2,0, + 111,112,101,110,95,114,101,103,105,115,116,114,121,70,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, @@ -910,7 +910,7 @@ 121,95,107,101,121,114,165,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,76,2,0,0,115, + 99,104,95,114,101,103,105,115,116,114,121,77,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, @@ -935,7 +935,7 @@ 103,101,116,114,171,0,0,0,114,120,0,0,0,114,160,0, 0,0,114,158,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,91,2,0,0,115,26,0,0,0,0,2,15,1,12,1, + 99,92,2,0,0,115,26,0,0,0,0,2,15,1,12,1, 4,1,3,1,14,1,13,1,9,1,22,1,21,1,9,1, 15,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, @@ -954,7 +954,7 @@ 175,0,0,0,114,120,0,0,0,41,4,114,164,0,0,0, 114,119,0,0,0,114,35,0,0,0,114,158,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,107,2,0,0,115, + 102,105,110,100,95,109,111,100,117,108,101,108,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, @@ -963,7 +963,7 @@ 167,0,0,0,218,11,99,108,97,115,115,109,101,116,104,111, 100,114,166,0,0,0,114,172,0,0,0,114,175,0,0,0, 114,176,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,162,0,0,0,57,2, + 4,0,0,0,114,5,0,0,0,114,162,0,0,0,58,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,15,3,1,114,162,0,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0, @@ -1001,7 +1001,7 @@ 100,0,0,0,114,119,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,153,0,0,0,126,2,0,0, + 0,0,114,5,0,0,0,114,153,0,0,0,127,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, @@ -1012,7 +1012,7 @@ 111,110,46,78,114,4,0,0,0,41,2,114,100,0,0,0, 114,158,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,134,2,0,0,115,0,0,0,0,122,27,95,76, + 117,108,101,135,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, @@ -1033,7 +1033,7 @@ 101,99,114,111,0,0,0,41,3,114,100,0,0,0,218,6, 109,111,100,117,108,101,114,140,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,137,2,0,0,115,10,0,0,0, + 95,109,111,100,117,108,101,138,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,99,2,0,0,0,0,0,0,0,2,0, @@ -1044,14 +1044,14 @@ 114,0,0,0,218,17,95,108,111,97,100,95,109,111,100,117, 108,101,95,115,104,105,109,41,2,114,100,0,0,0,114,119, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,145, + 0,0,218,11,108,111,97,100,95,109,111,100,117,108,101,146, 2,0,0,115,2,0,0,0,0,2,122,25,95,76,111,97, 100,101,114,66,97,115,105,99,115,46,108,111,97,100,95,109, 111,100,117,108,101,78,41,8,114,105,0,0,0,114,104,0, 0,0,114,106,0,0,0,114,107,0,0,0,114,153,0,0, 0,114,180,0,0,0,114,185,0,0,0,114,187,0,0,0, 114,4,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,178,0,0,0,121,2,0,0,115,10,0, + 5,0,0,0,114,178,0,0,0,122,2,0,0,115,10,0, 0,0,12,3,6,2,12,8,12,3,12,8,114,178,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, @@ -1079,7 +1079,7 @@ 41,1,218,7,73,79,69,114,114,111,114,41,2,114,100,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,152,2,0,0,115,2,0,0,0,0,6,122,23,83, + 109,101,153,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, @@ -1114,7 +1114,7 @@ 32,32,32,32,114,126,0,0,0,41,1,114,190,0,0,0, 41,2,114,100,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,160,2,0,0,115,2,0,0,0, + 104,95,115,116,97,116,115,161,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, @@ -1138,7 +1138,7 @@ 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,173,2,0,0,115,2,0,0,0,0, + 116,101,99,111,100,101,174,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, @@ -1155,7 +1155,7 @@ 32,32,32,32,32,32,32,78,114,4,0,0,0,41,3,114, 100,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,192,0, - 0,0,183,2,0,0,115,0,0,0,0,122,21,83,111,117, + 0,0,184,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, @@ -1177,7 +1177,7 @@ 0,0,0,114,119,0,0,0,114,35,0,0,0,114,147,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,190,2,0,0,115,14,0,0,0,0,2,15,1,3, + 99,101,191,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, @@ -1199,7 +1199,7 @@ 108,101,41,4,114,100,0,0,0,114,53,0,0,0,114,35, 0,0,0,114,197,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,200,2,0,0,115,4,0,0,0, + 116,111,95,99,111,100,101,201,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, @@ -1260,7 +1260,7 @@ 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,147,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,181,0,0,0,208, + 114,4,0,0,0,114,5,0,0,0,114,181,0,0,0,209, 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, @@ -1273,7 +1273,7 @@ 0,0,0,114,192,0,0,0,114,196,0,0,0,114,200,0, 0,0,114,181,0,0,0,114,4,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,188,0,0,0, - 150,2,0,0,115,14,0,0,0,12,2,12,8,12,13,12, + 151,2,0,0,115,14,0,0,0,12,2,12,8,12,13,12, 10,12,7,12,10,18,8,114,188,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, @@ -1301,7 +1301,7 @@ 32,32,32,32,32,102,105,110,100,101,114,46,78,41,2,114, 98,0,0,0,114,35,0,0,0,41,3,114,100,0,0,0, 114,119,0,0,0,114,35,0,0,0,114,4,0,0,0,114, - 4,0,0,0,114,5,0,0,0,114,179,0,0,0,9,3, + 4,0,0,0,114,5,0,0,0,114,179,0,0,0,10,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, @@ -1311,7 +1311,7 @@ 2,218,9,95,95,99,108,97,115,115,95,95,114,111,0,0, 0,41,2,114,100,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,15,3,0,0,115,4,0,0,0,0, + 95,95,101,113,95,95,16,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, @@ -1319,7 +1319,7 @@ 0,0,106,2,0,131,1,0,65,83,41,1,78,41,3,218, 4,104,97,115,104,114,98,0,0,0,114,35,0,0,0,41, 1,114,100,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,19, + 114,5,0,0,0,218,8,95,95,104,97,115,104,95,95,20, 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, @@ -1334,7 +1334,7 @@ 32,32,32,32,32,32,32,41,3,218,5,115,117,112,101,114, 114,204,0,0,0,114,187,0,0,0,41,2,114,100,0,0, 0,114,119,0,0,0,41,1,114,205,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,187,0,0,0,22,3,0,0, + 0,0,114,5,0,0,0,114,187,0,0,0,23,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, @@ -1345,7 +1345,7 @@ 98,121,32,116,104,101,32,102,105,110,100,101,114,46,41,1, 114,35,0,0,0,41,2,114,100,0,0,0,114,119,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,151,0,0,0,34,3,0,0,115,2,0,0,0,0,3, + 114,151,0,0,0,35,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, @@ -1358,14 +1358,14 @@ 0,0,0,114,50,0,0,0,90,4,114,101,97,100,41,3, 114,100,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,194, - 0,0,0,39,3,0,0,115,4,0,0,0,0,2,21,1, + 0,0,0,40,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,105,0,0,0,114,104,0,0, 0,114,106,0,0,0,114,107,0,0,0,114,179,0,0,0, 114,207,0,0,0,114,209,0,0,0,114,116,0,0,0,114, 187,0,0,0,114,151,0,0,0,114,194,0,0,0,114,4, 0,0,0,114,4,0,0,0,41,1,114,205,0,0,0,114, - 5,0,0,0,114,204,0,0,0,4,3,0,0,115,14,0, + 5,0,0,0,114,204,0,0,0,5,3,0,0,115,14,0, 0,0,12,3,6,2,12,6,12,4,12,3,24,12,18,5, 114,204,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, @@ -1388,7 +1388,7 @@ 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,100,0,0,0,114, 35,0,0,0,114,202,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,191,0,0,0,49,3,0, + 0,0,0,114,5,0,0,0,114,191,0,0,0,50,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, @@ -1399,7 +1399,7 @@ 97,0,0,0,114,192,0,0,0,41,5,114,100,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,193,0,0,0,54,3,0,0,115,4,0,0, + 0,0,0,114,193,0,0,0,55,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,214,0,0,0,105,182,1,0, @@ -1438,7 +1438,7 @@ 0,114,214,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,195,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,192,0,0,0,59,3,0,0,115,42,0,0,0,0, + 0,114,192,0,0,0,60,3,0,0,115,42,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,9,1,10,1,27,1,3, 1,16,1,20,1,18,2,12,1,122,25,83,111,117,114,99, @@ -1447,7 +1447,7 @@ 0,114,106,0,0,0,114,107,0,0,0,114,191,0,0,0, 114,193,0,0,0,114,192,0,0,0,114,4,0,0,0,114, 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,212, - 0,0,0,45,3,0,0,115,8,0,0,0,12,2,6,2, + 0,0,0,46,3,0,0,115,8,0,0,0,12,2,6,2, 12,5,12,5,114,212,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, @@ -1469,7 +1469,7 @@ 0,114,141,0,0,0,41,5,114,100,0,0,0,114,119,0, 0,0,114,35,0,0,0,114,53,0,0,0,114,203,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,181,0,0,0,94,3,0,0,115,8,0,0,0,0,1, + 114,181,0,0,0,95,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, @@ -1479,13 +1479,13 @@ 111,32,115,111,117,114,99,101,32,99,111,100,101,46,78,114, 4,0,0,0,41,2,114,100,0,0,0,114,119,0,0,0, 114,4,0,0,0,114,4,0,0,0,114,5,0,0,0,114, - 196,0,0,0,100,3,0,0,115,2,0,0,0,0,2,122, + 196,0,0,0,101,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,105,0,0,0,114,104,0,0,0,114,106,0, 0,0,114,107,0,0,0,114,181,0,0,0,114,196,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,217,0,0,0,90,3,0,0,115,6, + 114,5,0,0,0,114,217,0,0,0,91,3,0,0,115,6, 0,0,0,12,2,6,2,12,6,114,217,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,136,0,0,0,101,0,0,90,1,0,100,0, @@ -1510,7 +1510,7 @@ 1,0,100,0,0,83,41,1,78,41,2,114,98,0,0,0, 114,35,0,0,0,41,3,114,100,0,0,0,114,98,0,0, 0,114,35,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,5,0,0,0,114,179,0,0,0,117,3,0,0,115,4, + 114,5,0,0,0,114,179,0,0,0,118,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, @@ -1520,7 +1520,7 @@ 83,41,1,78,41,2,114,205,0,0,0,114,111,0,0,0, 41,2,114,100,0,0,0,114,206,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,207,0,0,0, - 121,3,0,0,115,4,0,0,0,0,1,18,1,122,26,69, + 122,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, @@ -1528,7 +1528,7 @@ 0,0,124,0,0,106,2,0,131,1,0,65,83,41,1,78, 41,3,114,208,0,0,0,114,98,0,0,0,114,35,0,0, 0,41,1,114,100,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,209,0,0,0,125,3,0,0, + 0,0,114,5,0,0,0,114,209,0,0,0,126,3,0,0, 115,2,0,0,0,0,1,122,28,69,120,116,101,110,115,105, 111,110,70,105,108,101,76,111,97,100,101,114,46,95,95,104, 97,115,104,95,95,99,2,0,0,0,0,0,0,0,3,0, @@ -1546,7 +1546,7 @@ 97,109,105,99,114,129,0,0,0,114,98,0,0,0,114,35, 0,0,0,41,3,114,100,0,0,0,114,158,0,0,0,114, 184,0,0,0,114,4,0,0,0,114,4,0,0,0,114,5, - 0,0,0,114,180,0,0,0,128,3,0,0,115,10,0,0, + 0,0,0,114,180,0,0,0,129,3,0,0,115,10,0,0, 0,0,2,6,1,15,1,9,1,16,1,122,33,69,120,116, 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, 46,99,114,101,97,116,101,95,109,111,100,117,108,101,99,2, @@ -1564,7 +1564,7 @@ 97,109,105,99,114,129,0,0,0,114,98,0,0,0,114,35, 0,0,0,41,2,114,100,0,0,0,114,184,0,0,0,114, 4,0,0,0,114,4,0,0,0,114,5,0,0,0,114,185, - 0,0,0,136,3,0,0,115,6,0,0,0,0,2,19,1, + 0,0,0,137,3,0,0,115,6,0,0,0,0,2,19,1, 9,1,122,31,69,120,116,101,110,115,105,111,110,70,105,108, 101,76,111,97,100,101,114,46,101,120,101,99,95,109,111,100, 117,108,101,99,2,0,0,0,0,0,0,0,2,0,0,0, @@ -1582,7 +1582,7 @@ 41,2,114,179,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,145,3, + 0,0,0,250,9,60,103,101,110,101,120,112,114,62,146,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, @@ -1591,7 +1591,7 @@ 88,84,69,78,83,73,79,78,95,83,85,70,70,73,88,69, 83,41,2,114,100,0,0,0,114,119,0,0,0,114,4,0, 0,0,41,1,114,220,0,0,0,114,5,0,0,0,114,153, - 0,0,0,142,3,0,0,115,6,0,0,0,0,2,19,1, + 0,0,0,143,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, @@ -1602,7 +1602,7 @@ 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,100,0,0,0, 114,119,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,181,0,0,0,148,3,0,0,115,2,0, + 5,0,0,0,114,181,0,0,0,149,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, @@ -1612,7 +1612,7 @@ 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,100,0,0,0,114,119,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,196,0,0,0,152, + 114,4,0,0,0,114,5,0,0,0,114,196,0,0,0,153, 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, @@ -1624,7 +1624,7 @@ 101,32,102,105,110,100,101,114,46,41,1,114,35,0,0,0, 41,2,114,100,0,0,0,114,119,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,151,0,0,0, - 156,3,0,0,115,2,0,0,0,0,3,122,32,69,120,116, + 157,3,0,0,115,2,0,0,0,0,3,122,32,69,120,116, 101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114, 46,103,101,116,95,102,105,108,101,110,97,109,101,78,41,14, 114,105,0,0,0,114,104,0,0,0,114,106,0,0,0,114, @@ -1632,7 +1632,7 @@ 0,0,0,114,180,0,0,0,114,185,0,0,0,114,153,0, 0,0,114,181,0,0,0,114,196,0,0,0,114,116,0,0, 0,114,151,0,0,0,114,4,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,109, + 114,4,0,0,0,114,5,0,0,0,114,218,0,0,0,110, 3,0,0,115,20,0,0,0,12,6,6,2,12,4,12,4, 12,3,12,8,12,6,12,6,12,4,12,4,114,218,0,0, 0,99,0,0,0,0,0,0,0,0,0,0,0,0,2,0, @@ -1677,7 +1677,7 @@ 100,101,114,41,4,114,100,0,0,0,114,98,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,179,0,0,0,169,3,0,0,115,8,0,0,0,0,1, + 114,179,0,0,0,170,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, @@ -1696,7 +1696,7 @@ 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,175,3,0,0,115,8,0,0,0,0,2,27, + 97,109,101,115,176,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, @@ -1709,7 +1709,7 @@ 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,227,0,0,0,185,3,0,0,115,4,0, + 5,0,0,0,114,227,0,0,0,186,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, @@ -1727,7 +1727,7 @@ 226,0,0,0,41,3,114,100,0,0,0,90,11,112,97,114, 101,110,116,95,112,97,116,104,114,158,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,189,3,0,0,115,16, + 101,99,97,108,99,117,108,97,116,101,190,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, @@ -1736,7 +1736,7 @@ 106,1,0,131,0,0,131,1,0,83,41,1,78,41,2,218, 4,105,116,101,114,114,234,0,0,0,41,1,114,100,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,202,3,0,0,115,2, + 218,8,95,95,105,116,101,114,95,95,203,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, @@ -1744,7 +1744,7 @@ 0,131,0,0,131,1,0,83,41,1,78,41,2,114,31,0, 0,0,114,234,0,0,0,41,1,114,100,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,205,3,0,0,115,2,0,0,0,0, + 95,108,101,110,95,95,206,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, @@ -1753,7 +1753,7 @@ 99,101,80,97,116,104,40,123,33,114,125,41,41,2,114,47, 0,0,0,114,226,0,0,0,41,1,114,100,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,208,3,0,0,115,2,0,0, + 95,95,114,101,112,114,95,95,209,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, @@ -1761,7 +1761,7 @@ 0,0,107,6,0,83,41,1,78,41,1,114,234,0,0,0, 41,2,114,100,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,211,3,0,0,115,2, + 99,111,110,116,97,105,110,115,95,95,212,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, @@ -1769,7 +1769,7 @@ 0,0,106,1,0,124,1,0,131,1,0,1,100,0,0,83, 41,1,78,41,2,114,226,0,0,0,114,157,0,0,0,41, 2,114,100,0,0,0,114,239,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,157,0,0,0,214, + 114,4,0,0,0,114,5,0,0,0,114,157,0,0,0,215, 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,105,0,0,0,114,104,0,0,0,114,106, @@ -1777,7 +1777,7 @@ 0,0,114,227,0,0,0,114,234,0,0,0,114,236,0,0, 0,114,237,0,0,0,114,238,0,0,0,114,240,0,0,0, 114,157,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,162,3, + 4,0,0,0,114,5,0,0,0,114,224,0,0,0,163,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,224,0,0,0, 99,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0, @@ -1797,7 +1797,7 @@ 0,114,226,0,0,0,41,4,114,100,0,0,0,114,98,0, 0,0,114,35,0,0,0,114,230,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,179,0,0,0, - 220,3,0,0,115,2,0,0,0,0,1,122,25,95,78,97, + 221,3,0,0,115,2,0,0,0,0,1,122,25,95,78,97, 109,101,115,112,97,99,101,76,111,97,100,101,114,46,95,95, 105,110,105,116,95,95,99,2,0,0,0,0,0,0,0,2, 0,0,0,2,0,0,0,67,0,0,0,115,16,0,0,0, @@ -1814,21 +1814,21 @@ 41,62,41,2,114,47,0,0,0,114,105,0,0,0,41,2, 114,164,0,0,0,114,184,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,223,3,0,0,115,2,0,0,0,0, + 101,95,114,101,112,114,224,3,0,0,115,2,0,0,0,0, 7,122,28,95,78,97,109,101,115,112,97,99,101,76,111,97, 100,101,114,46,109,111,100,117,108,101,95,114,101,112,114,99, 2,0,0,0,0,0,0,0,2,0,0,0,1,0,0,0, 67,0,0,0,115,4,0,0,0,100,1,0,83,41,2,78, 84,114,4,0,0,0,41,2,114,100,0,0,0,114,119,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,153,0,0,0,232,3,0,0,115,2,0,0,0,0, + 0,114,153,0,0,0,233,3,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,100,0,0,0, 114,119,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,196,0,0,0,235,3,0,0,115,2,0, + 5,0,0,0,114,196,0,0,0,236,3,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, @@ -1838,7 +1838,7 @@ 110,103,62,114,183,0,0,0,114,198,0,0,0,84,41,1, 114,199,0,0,0,41,2,114,100,0,0,0,114,119,0,0, 0,114,4,0,0,0,114,4,0,0,0,114,5,0,0,0, - 114,181,0,0,0,238,3,0,0,115,2,0,0,0,0,1, + 114,181,0,0,0,239,3,0,0,115,2,0,0,0,0,1, 122,25,95,78,97,109,101,115,112,97,99,101,76,111,97,100, 101,114,46,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, @@ -1847,14 +1847,14 @@ 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, 100,0,0,0,114,158,0,0,0,114,4,0,0,0,114,4, - 0,0,0,114,5,0,0,0,114,180,0,0,0,241,3,0, + 0,0,0,114,5,0,0,0,114,180,0,0,0,242,3,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,100, 0,0,0,114,184,0,0,0,114,4,0,0,0,114,4,0, - 0,0,114,5,0,0,0,114,185,0,0,0,244,3,0,0, + 0,0,114,5,0,0,0,114,185,0,0,0,245,3,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, @@ -1873,7 +1873,7 @@ 41,4,114,114,0,0,0,114,129,0,0,0,114,226,0,0, 0,114,186,0,0,0,41,2,114,100,0,0,0,114,119,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,5,0,0, - 0,114,187,0,0,0,247,3,0,0,115,6,0,0,0,0, + 0,114,187,0,0,0,248,3,0,0,115,6,0,0,0,0, 7,9,1,10,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,105,0,0,0,114,104,0,0,0, @@ -1881,7 +1881,7 @@ 242,0,0,0,114,153,0,0,0,114,196,0,0,0,114,181, 0,0,0,114,180,0,0,0,114,185,0,0,0,114,187,0, 0,0,114,4,0,0,0,114,4,0,0,0,114,4,0,0, - 0,114,5,0,0,0,114,241,0,0,0,219,3,0,0,115, + 0,114,5,0,0,0,114,241,0,0,0,220,3,0,0,115, 16,0,0,0,12,1,12,3,18,9,12,3,12,3,12,3, 12,3,12,3,114,241,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, @@ -1919,7 +1919,7 @@ 99,104,101,218,6,118,97,108,117,101,115,114,108,0,0,0, 114,244,0,0,0,41,2,114,164,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,244,0,0,0,9,4,0,0,115,6,0,0, + 0,0,0,114,244,0,0,0,10,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, @@ -1944,7 +1944,7 @@ 0,114,61,0,0,0,114,118,0,0,0,114,99,0,0,0, 41,3,114,164,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,17,4, + 0,218,11,95,112,97,116,104,95,104,111,111,107,115,18,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, @@ -1977,7 +1977,7 @@ 0,0,0,41,3,114,164,0,0,0,114,35,0,0,0,114, 247,0,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,34,4,0,0,115,22,0, + 116,101,114,95,99,97,99,104,101,35,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, @@ -1997,7 +1997,7 @@ 0,0,0,114,247,0,0,0,114,120,0,0,0,114,121,0, 0,0,114,158,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,56,4,0,0,115,18,0,0, + 103,101,116,95,115,112,101,99,57,4,0,0,115,18,0,0, 0,0,4,15,1,24,2,15,1,6,1,12,1,16,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, @@ -2033,7 +2033,7 @@ 99,101,95,112,97,116,104,90,5,101,110,116,114,121,114,247, 0,0,0,114,158,0,0,0,114,121,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,71,4,0,0,115,40,0,0,0, + 101,116,95,115,112,101,99,72,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, @@ -2060,7 +2060,7 @@ 0,114,152,0,0,0,114,224,0,0,0,41,6,114,164,0, 0,0,114,119,0,0,0,114,35,0,0,0,114,174,0,0, 0,114,158,0,0,0,114,254,0,0,0,114,4,0,0,0, - 114,4,0,0,0,114,5,0,0,0,114,175,0,0,0,103, + 114,4,0,0,0,114,5,0,0,0,114,175,0,0,0,104, 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, @@ -2083,7 +2083,7 @@ 0,114,120,0,0,0,41,4,114,164,0,0,0,114,119,0, 0,0,114,35,0,0,0,114,158,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,176,0,0,0, - 125,4,0,0,115,8,0,0,0,0,8,18,1,12,1,4, + 126,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,105,0,0,0, 114,104,0,0,0,114,106,0,0,0,114,107,0,0,0,114, @@ -2091,7 +2091,7 @@ 0,0,0,114,252,0,0,0,114,255,0,0,0,114,175,0, 0,0,114,176,0,0,0,114,4,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,243,0,0,0, - 5,4,0,0,115,22,0,0,0,12,2,6,2,18,8,18, + 6,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, 243,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, @@ -2140,7 +2140,7 @@ 3,0,100,0,0,83,41,1,78,114,4,0,0,0,41,2, 114,22,0,0,0,114,219,0,0,0,41,1,114,120,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,221,0,0,0, - 154,4,0,0,115,2,0,0,0,6,0,122,38,70,105,108, + 155,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, @@ -2152,7 +2152,7 @@ 100,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,160,0,0,0,114,4,0,0,0,41,1,114,120, - 0,0,0,114,5,0,0,0,114,179,0,0,0,148,4,0, + 0,0,0,114,5,0,0,0,114,179,0,0,0,149,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, @@ -2163,7 +2163,7 @@ 116,105,109,101,46,114,29,0,0,0,78,114,87,0,0,0, 41,1,114,2,1,0,0,41,1,114,100,0,0,0,114,4, 0,0,0,114,4,0,0,0,114,5,0,0,0,114,244,0, - 0,0,162,4,0,0,115,2,0,0,0,0,2,122,28,70, + 0,0,163,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, @@ -2187,7 +2187,7 @@ 0,114,120,0,0,0,114,150,0,0,0,41,3,114,100,0, 0,0,114,119,0,0,0,114,158,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,117,0,0,0, - 168,4,0,0,115,8,0,0,0,0,7,15,1,12,1,10, + 169,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, @@ -2198,7 +2198,7 @@ 7,114,100,0,0,0,114,159,0,0,0,114,119,0,0,0, 114,35,0,0,0,90,4,115,109,115,108,114,174,0,0,0, 114,120,0,0,0,114,4,0,0,0,114,4,0,0,0,114, - 5,0,0,0,114,255,0,0,0,180,4,0,0,115,6,0, + 5,0,0,0,114,255,0,0,0,181,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, @@ -2262,7 +2262,7 @@ 110,105,116,95,102,105,108,101,110,97,109,101,90,9,102,117, 108,108,95,112,97,116,104,114,158,0,0,0,114,4,0,0, 0,114,4,0,0,0,114,5,0,0,0,114,175,0,0,0, - 185,4,0,0,115,70,0,0,0,0,3,6,1,19,1,3, + 186,4,0,0,115,70,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,22,1,16,1,12, @@ -2298,7 +2298,7 @@ 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,4,5,0,0,115,2, + 9,60,115,101,116,99,111,109,112,62,5,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, @@ -2315,7 +2315,7 @@ 95,99,111,110,116,101,110,116,115,114,239,0,0,0,114,98, 0,0,0,114,231,0,0,0,114,219,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,7,1,0,0,231,4,0,0,115, + 0,114,5,0,0,0,114,7,1,0,0,232,4,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, @@ -2354,7 +2354,7 @@ 0,0,0,41,1,114,35,0,0,0,41,2,114,164,0,0, 0,114,6,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,16,5,0,0,115,6, + 70,105,108,101,70,105,110,100,101,114,17,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, @@ -2362,7 +2362,7 @@ 114,114,4,0,0,0,41,3,114,164,0,0,0,114,6,1, 0,0,114,12,1,0,0,114,4,0,0,0,41,2,114,164, 0,0,0,114,6,1,0,0,114,5,0,0,0,218,9,112, - 97,116,104,95,104,111,111,107,6,5,0,0,115,4,0,0, + 97,116,104,95,104,111,111,107,7,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, @@ -2371,7 +2371,7 @@ 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,100,0,0,0,114,4,0, 0,0,114,4,0,0,0,114,5,0,0,0,114,238,0,0, - 0,24,5,0,0,115,2,0,0,0,0,1,122,19,70,105, + 0,25,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,105,0,0,0,114,104,0,0,0,114,106,0, 0,0,114,107,0,0,0,114,179,0,0,0,114,244,0,0, @@ -2379,7 +2379,7 @@ 114,255,0,0,0,114,175,0,0,0,114,7,1,0,0,114, 177,0,0,0,114,13,1,0,0,114,238,0,0,0,114,4, 0,0,0,114,4,0,0,0,114,4,0,0,0,114,5,0, - 0,0,114,0,1,0,0,139,4,0,0,115,20,0,0,0, + 0,0,114,0,1,0,0,140,4,0,0,115,20,0,0,0, 12,7,6,2,12,14,12,4,6,2,12,12,12,5,15,46, 12,31,18,18,114,0,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, @@ -2405,7 +2405,7 @@ 104,110,97,109,101,90,9,99,112,97,116,104,110,97,109,101, 114,120,0,0,0,114,158,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,30,5,0,0,115,34,0, + 117,112,95,109,111,100,117,108,101,31,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,18,1,0,0,99,0,0,0,0,0,0, @@ -2426,7 +2426,7 @@ 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,155,0,0,0,53,5,0,0,115,8,0,0,0,0,5, + 114,155,0,0,0,54,5,0,0,115,8,0,0,0,0,5, 18,1,12,1,12,1,114,155,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, @@ -2488,7 +2488,7 @@ 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,221,0,0,0, - 89,5,0,0,115,2,0,0,0,6,0,122,25,95,115,101, + 90,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, @@ -2518,7 +2518,7 @@ 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,64,5,0,0,115,82,0,0,0,0, + 95,115,101,116,117,112,65,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, @@ -2544,7 +2544,7 @@ 114,212,0,0,0,41,2,114,26,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,132,5,0,0,115,16,0,0, + 95,105,110,115,116,97,108,108,133,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,29,1,0,0,41,3,122,3,119,105,110,114,1,0, 0,0,114,2,0,0,0,41,56,114,107,0,0,0,114,10, @@ -2571,11 +2571,12 @@ 114,18,1,0,0,114,155,0,0,0,114,27,1,0,0,114, 29,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,98,0,0,0,6,17,6,3,12, + 101,62,8,0,0,0,115,102,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,111,22,1,18,2,6,1,6,2,9,2,9, + 7,15,22,15,112,22,1,18,2,6,1,6,2,9,2,9, 2,10,2,21,44,12,33,12,19,12,12,12,12,12,28,12, 17,21,55,21,12,18,10,12,14,9,3,12,1,15,65,19, 64,19,29,22,110,19,41,25,45,25,16,6,3,25,53,19, - 57,19,42,19,134,19,147,15,23,12,11,12,68, + 57,19,42,19,127,0,7,19,127,0,20,15,23,12,11,12, + 68, }; diff -r f97da0952a2e -r 775b74e0e103 Python/peephole.c --- a/Python/peephole.c Wed Jan 20 03:11:52 2016 -0800 +++ b/Python/peephole.c Wed Jan 20 12:16:21 2016 +0100 @@ -346,19 +346,19 @@ single basic block. All transformations keep the code size the same or smaller. For those that reduce size, the gaps are initially filled with NOPs. Later those NOPs are removed and the jump addresses retargeted in - a single pass. Line numbering is adjusted accordingly. */ + a single pass. Code offset is adjusted accordingly. */ PyObject * PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names, - PyObject *lineno_obj) + PyObject *lnotab_obj) { Py_ssize_t i, j, codelen; int nops, h, adj; int tgt, tgttgt, opcode; unsigned char *codestr = NULL; - unsigned char *lineno; + unsigned char *lnotab; int *addrmap = NULL; - int new_line, cum_orig_line, last_line; + int cum_orig_offset, last_offset; Py_ssize_t tabsiz; PyObject **const_stack = NULL; Py_ssize_t *load_const_stack = NULL; @@ -371,12 +371,17 @@ if (PyErr_Occurred()) goto exitError; - /* Bypass optimization when the lineno table is too complex */ - assert(PyBytes_Check(lineno_obj)); - lineno = (unsigned char*)PyBytes_AS_STRING(lineno_obj); - tabsiz = PyBytes_GET_SIZE(lineno_obj); - if (memchr(lineno, 255, tabsiz) != NULL) + /* Bypass optimization when the lnotab table is too complex */ + assert(PyBytes_Check(lnotab_obj)); + lnotab = (unsigned char*)PyBytes_AS_STRING(lnotab_obj); + tabsiz = PyBytes_GET_SIZE(lnotab_obj); + assert(tabsiz == 0 || Py_REFCNT(lnotab_obj) == 1); + if (memchr(lnotab, 255, tabsiz) != NULL) { + /* 255 value are used for multibyte bytecode instructions */ goto exitUnchanged; + } + /* Note: -128 and 127 special values for line number delta are ok, + the peephole optimizer doesn't modify line numbers. */ /* Avoid situations where jump retargeting could overflow */ assert(PyBytes_Check(code)); @@ -663,21 +668,24 @@ } } - /* Fixup linenotab */ + /* Fixup lnotab */ for (i=0, nops=0 ; i new code offset */ addrmap[i] = (int)(i - nops); if (codestr[i] == NOP) nops++; } - cum_orig_line = 0; - last_line = 0; + cum_orig_offset = 0; + last_offset = 0; for (i=0 ; i < tabsiz ; i+=2) { - cum_orig_line += lineno[i]; - new_line = addrmap[cum_orig_line]; - assert (new_line - last_line < 255); - lineno[i] =((unsigned char)(new_line - last_line)); - last_line = new_line; + int offset_delta, new_offset; + cum_orig_offset += lnotab[i]; + new_offset = addrmap[cum_orig_offset]; + offset_delta = new_offset - last_offset; + assert(0 <= offset_delta && offset_delta <= 255); + lnotab[i] = (unsigned char)offset_delta; + last_offset = new_offset; } /* Remove NOPs and fixup jump targets */ @@ -727,12 +735,9 @@ exitUnchanged: CONST_STACK_DELETE(); - if (blocks != NULL) - PyMem_Free(blocks); - if (addrmap != NULL) - PyMem_Free(addrmap); - if (codestr != NULL) - PyMem_Free(codestr); + PyMem_Free(blocks); + PyMem_Free(addrmap); + PyMem_Free(codestr); Py_XINCREF(code); return code; }