]> granicus.if.org Git - python/commitdiff
Issue #14583: Fix importlib bug when a package's __init__.py would first import one...
authorAntoine Pitrou <solipsis@pitrou.net>
Mon, 7 May 2012 19:41:59 +0000 (21:41 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Mon, 7 May 2012 19:41:59 +0000 (21:41 +0200)
Lib/importlib/_bootstrap.py
Lib/importlib/test/import_/test_packages.py
Lib/importlib/test/util.py
Misc/NEWS
Python/import.c
Python/importlib.h

index 1e6a05a1a750463dcddcc5a72fcecfd150dfdbc8..9952b067f1363f879d8f4e8710955de794623684 100644 (file)
@@ -1082,7 +1082,7 @@ def __import__(name, globals={}, locals={}, fromlist=[], level=0):
         # Return up to the first dot in 'name'. This is complicated by the fact
         # that 'name' may be relative.
         if level == 0:
-            return sys.modules[name.partition('.')[0]]
+            return _gcd_import(name.partition('.')[0])
         elif not name:
             return module
         else:
index e756ee419694a0fe3451f84703e1d5d7abca5138..931494d6f7c08afbcaf2f7ae22b373b26123d709 100644 (file)
@@ -23,6 +23,62 @@ class ParentModuleTests(unittest.TestCase):
                     import_util.import_('pkg.module')
                 self.assertEqual(cm.exception.name, 'pkg')
 
+    def test_raising_parent_after_importing_child(self):
+        def __init__():
+            import pkg.module
+            1/0
+        mock = util.mock_modules('pkg.__init__', 'pkg.module',
+                                 module_code={'pkg': __init__})
+        with mock:
+            with util.import_state(meta_path=[mock]):
+                with self.assertRaises(ZeroDivisionError):
+                    import_util.import_('pkg')
+                self.assertFalse('pkg' in sys.modules)
+                self.assertTrue('pkg.module' in sys.modules)
+                with self.assertRaises(ZeroDivisionError):
+                    import_util.import_('pkg.module')
+                self.assertFalse('pkg' in sys.modules)
+                self.assertTrue('pkg.module' in sys.modules)
+
+    def test_raising_parent_after_relative_importing_child(self):
+        def __init__():
+            from . import module
+            1/0
+        mock = util.mock_modules('pkg.__init__', 'pkg.module',
+                                 module_code={'pkg': __init__})
+        with mock:
+            with util.import_state(meta_path=[mock]):
+                with self.assertRaises((ZeroDivisionError, ImportError)):
+                    # This raises ImportError on the "from . import module"
+                    # line, not sure why.
+                    import_util.import_('pkg')
+                self.assertFalse('pkg' in sys.modules)
+                with self.assertRaises((ZeroDivisionError, ImportError)):
+                    import_util.import_('pkg.module')
+                self.assertFalse('pkg' in sys.modules)
+                # XXX False
+                #self.assertTrue('pkg.module' in sys.modules)
+
+    def test_raising_parent_after_double_relative_importing_child(self):
+        def __init__():
+            from ..subpkg import module
+            1/0
+        mock = util.mock_modules('pkg.__init__', 'pkg.subpkg.__init__',
+                                 'pkg.subpkg.module',
+                                 module_code={'pkg.subpkg': __init__})
+        with mock:
+            with util.import_state(meta_path=[mock]):
+                with self.assertRaises((ZeroDivisionError, ImportError)):
+                    # This raises ImportError on the "from ..subpkg import module"
+                    # line, not sure why.
+                    import_util.import_('pkg.subpkg')
+                self.assertFalse('pkg.subpkg' in sys.modules)
+                with self.assertRaises((ZeroDivisionError, ImportError)):
+                    import_util.import_('pkg.subpkg.module')
+                self.assertFalse('pkg.subpkg' in sys.modules)
+                # XXX False
+                #self.assertTrue('pkg.subpkg.module' in sys.modules)
+
     def test_module_not_package(self):
         # Try to import a submodule from a non-package should raise ImportError.
         assert not hasattr(sys, '__path__')
index 7ba7a97f58548f6d128ae04622dadb2197e33012..ef32f7d690fe42ae8a4dd2c82dd5c305cc796cb6 100644 (file)
@@ -124,7 +124,11 @@ class mock_modules:
         else:
             sys.modules[fullname] = self.modules[fullname]
             if fullname in self.module_code:
-                self.module_code[fullname]()
+                try:
+                    self.module_code[fullname]()
+                except Exception:
+                    del sys.modules[fullname]
+                    raise
             return self.modules[fullname]
 
     def __enter__(self):
index 9e48da5c354f4f5dfce02bf95ab55b6c9ce2a19b..0850336c90f35e39e019888905939fa39e4586e7 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -20,6 +20,9 @@ Core and Builtins
 Library
 -------
 
+- Issue #14583: Fix importlib bug when a package's __init__.py would first
+  import one of its modules then raise an error.
+
 - Issue #14741: Fix missing support for Ellipsis ('...') in parser module.
 
 - Issue #14697: Fix missing support for set displays and set comprehensions in
index fd42a892a164fb036ed7624e775635a7447e9e74..a8b1aa3fd14cc3b1f8f4831aa7ecf99e254522af 100644 (file)
@@ -1633,19 +1633,20 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
                 goto error_with_unlock;
             }
 
+            if (PyUnicode_GET_LENGTH(PyTuple_GET_ITEM(partition, 1)) == 0) {
+                /* No dot in module name, simple exit */
+                Py_DECREF(partition);
+                final_mod = mod;
+                Py_INCREF(mod);
+                goto exit_with_unlock;
+            }
+
             front = PyTuple_GET_ITEM(partition, 0);
             Py_INCREF(front);
             Py_DECREF(partition);
 
             if (level == 0) {
-                final_mod = PyDict_GetItem(interp->modules, front);
-                if (final_mod == NULL) {
-                    PyErr_Format(PyExc_KeyError,
-                                 "%R not in sys.modules as expected", front);
-                }
-                else {
-                    Py_INCREF(final_mod);
-                }
+                final_mod = PyObject_CallFunctionObjArgs(builtins_import, front, NULL);
                 Py_DECREF(front);
             }
             else {
@@ -1682,6 +1683,8 @@ PyImport_ImportModuleLevelObject(PyObject *name, PyObject *given_globals,
                                                   fromlist, builtins_import,
                                                   NULL);
     }
+
+  exit_with_unlock:
   error_with_unlock:
 #ifdef WITH_THREAD
     if (_PyImport_ReleaseLock() < 0) {
index 292308fc78123e9fa10c7131bb110c47559975dd..c88fc8018149bd01cc54b8759f937df81e7016cc 100644 (file)
@@ -2703,308 +2703,308 @@ unsigned char _Py_M__importlib[] = {
     0,0,0,0,7,15,1,12,1,10,1,12,1,25,1,117,
     17,0,0,0,95,99,97,108,99,95,95,95,112,97,99,107,
     97,103,101,95,95,99,5,0,0,0,0,0,0,0,8,0,
-    0,0,5,0,0,0,67,0,0,0,115,204,0,0,0,124,
+    0,0,5,0,0,0,67,0,0,0,115,203,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,30,0,116,1,0,124,1,0,
     131,1,0,125,6,0,116,0,0,124,0,0,124,6,0,124,
-    4,0,131,3,0,125,5,0,124,3,0,115,184,0,124,4,
-    0,100,1,0,107,2,0,114,99,0,116,2,0,106,3,0,
-    124,0,0,106,4,0,100,2,0,131,1,0,100,1,0,25,
-    25,83,124,0,0,115,109,0,124,5,0,83,116,5,0,124,
-    0,0,131,1,0,116,5,0,124,0,0,106,4,0,100,2,
-    0,131,1,0,100,1,0,25,131,1,0,24,125,7,0,116,
-    2,0,106,3,0,124,5,0,106,6,0,100,3,0,116,5,
-    0,124,5,0,106,6,0,131,1,0,124,7,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,3,0,83,40,4,0,0,0,
-    117,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,105,0,0,0,0,
-    117,1,0,0,0,46,78,40,8,0,0,0,117,11,0,0,
-    0,95,103,99,100,95,105,109,112,111,114,116,117,17,0,0,
-    0,95,99,97,108,99,95,95,95,112,97,99,107,97,103,101,
-    95,95,117,3,0,0,0,115,121,115,117,7,0,0,0,109,
-    111,100,117,108,101,115,117,9,0,0,0,112,97,114,116,105,
-    116,105,111,110,117,3,0,0,0,108,101,110,117,8,0,0,
-    0,95,95,110,97,109,101,95,95,117,16,0,0,0,95,104,
-    97,110,100,108,101,95,102,114,111,109,108,105,115,116,40,8,
-    0,0,0,117,4,0,0,0,110,97,109,101,117,7,0,0,
-    0,103,108,111,98,97,108,115,117,6,0,0,0,108,111,99,
-    97,108,115,117,8,0,0,0,102,114,111,109,108,105,115,116,
-    117,5,0,0,0,108,101,118,101,108,117,6,0,0,0,109,
-    111,100,117,108,101,117,7,0,0,0,112,97,99,107,97,103,
-    101,117,7,0,0,0,99,117,116,95,111,102,102,40,0,0,
-    0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,
-    122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,
-    111,111,116,115,116,114,97,112,62,117,10,0,0,0,95,95,
-    105,109,112,111,114,116,95,95,41,4,0,0,115,24,0,0,
-    0,0,11,12,1,15,2,12,1,18,1,6,3,12,1,24,
-    1,6,1,4,2,35,1,40,2,117,10,0,0,0,95,95,
-    105,109,112,111,114,116,95,95,99,2,0,0,0,0,0,0,
-    0,11,0,0,0,12,0,0,0,67,0,0,0,115,31,2,
-    0,0,124,1,0,97,0,0,124,0,0,97,1,0,120,47,
-    0,116,0,0,116,1,0,102,2,0,68,93,33,0,125,2,
-    0,116,2,0,124,2,0,100,1,0,131,2,0,115,25,0,
-    116,3,0,124,2,0,95,4,0,113,25,0,113,25,0,87,
-    116,1,0,106,5,0,116,6,0,25,125,3,0,120,76,0,
-    100,25,0,68,93,68,0,125,4,0,124,4,0,116,1,0,
-    106,5,0,107,7,0,114,121,0,116,3,0,106,7,0,124,
-    4,0,131,1,0,125,5,0,110,13,0,116,1,0,106,5,
-    0,124,4,0,25,125,5,0,116,8,0,124,3,0,124,4,
-    0,124,5,0,131,3,0,1,113,82,0,87,100,6,0,100,
-    7,0,103,1,0,102,2,0,100,8,0,100,9,0,100,7,
-    0,103,2,0,102,2,0,100,10,0,100,9,0,100,7,0,
-    103,2,0,102,2,0,102,3,0,125,6,0,120,189,0,124,
-    6,0,68,93,169,0,92,2,0,125,7,0,125,8,0,116,
-    9,0,100,11,0,100,12,0,132,0,0,124,8,0,68,131,
-    1,0,131,1,0,115,252,0,116,10,0,130,1,0,124,8,
-    0,100,13,0,25,125,9,0,124,7,0,116,1,0,106,5,
-    0,107,6,0,114,38,1,116,1,0,106,5,0,124,7,0,
-    25,125,10,0,80,113,209,0,121,60,0,116,3,0,106,7,
-    0,124,7,0,131,1,0,125,10,0,124,7,0,100,10,0,
-    107,2,0,114,96,1,100,14,0,116,1,0,106,11,0,107,
-    6,0,114,96,1,124,8,0,100,15,0,25,125,9,0,110,
-    0,0,80,87,113,209,0,4,116,12,0,107,10,0,114,121,
-    1,1,1,1,119,209,0,89,113,209,0,88,113,209,0,87,
-    116,12,0,100,16,0,131,1,0,130,1,0,116,8,0,124,
-    3,0,100,17,0,124,10,0,131,3,0,1,116,8,0,124,
-    3,0,100,18,0,124,9,0,131,3,0,1,116,8,0,124,
-    3,0,100,19,0,116,13,0,124,8,0,131,1,0,131,3,
-    0,1,116,8,0,124,3,0,100,20,0,116,14,0,131,0,
-    0,131,3,0,1,116,8,0,124,3,0,100,21,0,124,1,
-    0,106,15,0,131,0,0,131,3,0,1,116,8,0,124,3,
-    0,100,22,0,116,0,0,106,16,0,131,0,0,131,3,0,
-    1,124,7,0,100,8,0,107,2,0,114,27,2,116,17,0,
-    106,18,0,100,23,0,131,1,0,1,110,0,0,100,24,0,
-    83,40,26,0,0,0,117,250,0,0,0,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,117,10,0,0,0,95,95,108,111,97,100,
-    101,114,95,95,117,3,0,0,0,95,105,111,117,9,0,0,
-    0,95,119,97,114,110,105,110,103,115,117,8,0,0,0,98,
-    117,105,108,116,105,110,115,117,7,0,0,0,109,97,114,115,
-    104,97,108,117,5,0,0,0,112,111,115,105,120,117,1,0,
-    0,0,47,117,2,0,0,0,110,116,117,1,0,0,0,92,
-    117,3,0,0,0,111,115,50,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,40,2,0,0,0,105,1,0,0,0,78,40,1,
-    0,0,0,117,3,0,0,0,108,101,110,40,2,0,0,0,
-    117,2,0,0,0,46,48,117,3,0,0,0,115,101,112,40,
-    0,0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,
-    114,111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,
-    95,98,111,111,116,115,116,114,97,112,62,117,9,0,0,0,
-    60,103,101,110,101,120,112,114,62,102,4,0,0,115,2,0,
-    0,0,6,0,117,25,0,0,0,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,105,0,0,0,0,117,7,0,0,0,69,77,88,32,
-    71,67,67,105,1,0,0,0,117,30,0,0,0,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,117,3,0,0,0,
-    95,111,115,117,8,0,0,0,112,97,116,104,95,115,101,112,
-    117,15,0,0,0,112,97,116,104,95,115,101,112,97,114,97,
-    116,111,114,115,117,11,0,0,0,95,114,101,108,97,120,95,
-    99,97,115,101,117,13,0,0,0,95,77,65,71,73,67,95,
-    78,85,77,66,69,82,117,4,0,0,0,95,84,65,71,117,
-    4,0,0,0,46,112,121,119,78,40,4,0,0,0,117,3,
-    0,0,0,95,105,111,117,9,0,0,0,95,119,97,114,110,
-    105,110,103,115,117,8,0,0,0,98,117,105,108,116,105,110,
-    115,117,7,0,0,0,109,97,114,115,104,97,108,40,19,0,
-    0,0,117,4,0,0,0,95,105,109,112,117,3,0,0,0,
-    115,121,115,117,7,0,0,0,104,97,115,97,116,116,114,117,
-    15,0,0,0,66,117,105,108,116,105,110,73,109,112,111,114,
-    116,101,114,117,10,0,0,0,95,95,108,111,97,100,101,114,
-    95,95,117,7,0,0,0,109,111,100,117,108,101,115,117,8,
-    0,0,0,95,95,110,97,109,101,95,95,117,11,0,0,0,
-    108,111,97,100,95,109,111,100,117,108,101,117,7,0,0,0,
-    115,101,116,97,116,116,114,117,3,0,0,0,97,108,108,117,
-    14,0,0,0,65,115,115,101,114,116,105,111,110,69,114,114,
-    111,114,117,7,0,0,0,118,101,114,115,105,111,110,117,11,
-    0,0,0,73,109,112,111,114,116,69,114,114,111,114,117,3,
-    0,0,0,115,101,116,117,16,0,0,0,95,109,97,107,101,
-    95,114,101,108,97,120,95,99,97,115,101,117,9,0,0,0,
-    103,101,116,95,109,97,103,105,99,117,7,0,0,0,103,101,
-    116,95,116,97,103,117,16,0,0,0,95,83,79,85,82,67,
-    69,95,83,85,70,70,73,88,69,83,117,6,0,0,0,97,
-    112,112,101,110,100,40,11,0,0,0,117,10,0,0,0,115,
-    121,115,95,109,111,100,117,108,101,117,11,0,0,0,95,105,
-    109,112,95,109,111,100,117,108,101,117,6,0,0,0,109,111,
-    100,117,108,101,117,11,0,0,0,115,101,108,102,95,109,111,
-    100,117,108,101,117,12,0,0,0,98,117,105,108,116,105,110,
-    95,110,97,109,101,117,14,0,0,0,98,117,105,108,116,105,
-    110,95,109,111,100,117,108,101,117,10,0,0,0,111,115,95,
-    100,101,116,97,105,108,115,117,10,0,0,0,98,117,105,108,
-    116,105,110,95,111,115,117,15,0,0,0,112,97,116,104,95,
-    115,101,112,97,114,97,116,111,114,115,117,8,0,0,0,112,
-    97,116,104,95,115,101,112,117,9,0,0,0,111,115,95,109,
-    111,100,117,108,101,40,0,0,0,0,40,0,0,0,0,117,
-    29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,
-    114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,
-    62,117,6,0,0,0,95,115,101,116,117,112,75,4,0,0,
-    115,68,0,0,0,0,9,6,1,6,2,19,1,15,1,16,
-    2,13,1,13,1,15,1,18,2,13,1,20,2,48,1,19,
-    2,31,1,10,1,15,1,13,1,4,2,3,1,15,2,27,
-    1,13,1,5,1,13,1,12,2,12,1,16,1,16,1,22,
-    2,19,1,22,1,22,1,12,1,117,6,0,0,0,95,115,
-    101,116,117,112,99,2,0,0,0,0,0,0,0,6,0,0,
-    0,4,0,0,0,67,0,0,0,115,139,0,0,0,116,0,
-    0,124,0,0,124,1,0,131,2,0,1,116,1,0,124,1,
-    0,106,2,0,131,0,0,100,2,0,102,3,0,125,2,0,
-    116,4,0,116,5,0,100,3,0,102,3,0,125,3,0,116,
-    7,0,116,8,0,103,1,0,100,3,0,102,3,0,125,4,
-    0,124,2,0,124,3,0,124,4,0,103,3,0,125,5,0,
-    116,9,0,106,10,0,106,11,0,116,12,0,106,13,0,124,
-    5,0,140,0,0,103,1,0,131,1,0,1,116,9,0,106,
-    14,0,106,11,0,116,15,0,116,16,0,116,17,0,103,3,
-    0,131,1,0,1,100,1,0,83,40,4,0,0,0,117,50,
-    0,0,0,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,78,70,84,40,18,0,0,0,117,6,0,
-    0,0,95,115,101,116,117,112,117,19,0,0,0,69,120,116,
-    101,110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,
-    117,18,0,0,0,101,120,116,101,110,115,105,111,110,95,115,
-    117,102,102,105,120,101,115,117,5,0,0,0,70,97,108,115,
-    101,117,16,0,0,0,83,111,117,114,99,101,70,105,108,101,
-    76,111,97,100,101,114,117,16,0,0,0,95,83,79,85,82,
-    67,69,95,83,85,70,70,73,88,69,83,117,4,0,0,0,
-    84,114,117,101,117,20,0,0,0,83,111,117,114,99,101,108,
-    101,115,115,70,105,108,101,76,111,97,100,101,114,117,16,0,
-    0,0,95,66,89,84,69,67,79,68,69,95,83,85,70,70,
-    73,88,117,3,0,0,0,115,121,115,117,10,0,0,0,112,
-    97,116,104,95,104,111,111,107,115,117,6,0,0,0,101,120,
-    116,101,110,100,117,10,0,0,0,70,105,108,101,70,105,110,
-    100,101,114,117,9,0,0,0,112,97,116,104,95,104,111,111,
-    107,117,9,0,0,0,109,101,116,97,95,112,97,116,104,117,
-    15,0,0,0,66,117,105,108,116,105,110,73,109,112,111,114,
-    116,101,114,117,14,0,0,0,70,114,111,122,101,110,73,109,
-    112,111,114,116,101,114,117,10,0,0,0,80,97,116,104,70,
-    105,110,100,101,114,40,6,0,0,0,117,10,0,0,0,115,
-    121,115,95,109,111,100,117,108,101,117,11,0,0,0,95,105,
-    109,112,95,109,111,100,117,108,101,117,10,0,0,0,101,120,
-    116,101,110,115,105,111,110,115,117,6,0,0,0,115,111,117,
-    114,99,101,117,8,0,0,0,98,121,116,101,99,111,100,101,
-    117,17,0,0,0,115,117,112,112,111,114,116,101,100,95,108,
-    111,97,100,101,114,115,40,0,0,0,0,40,0,0,0,0,
-    117,29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,
-    111,114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,
-    112,62,117,8,0,0,0,95,105,110,115,116,97,108,108,129,
-    4,0,0,115,14,0,0,0,0,2,13,1,21,1,15,1,
-    18,1,15,1,28,1,117,8,0,0,0,95,105,110,115,116,
-    97,108,108,78,40,3,0,0,0,117,3,0,0,0,119,105,
-    110,117,6,0,0,0,99,121,103,119,105,110,117,6,0,0,
-    0,100,97,114,119,105,110,40,55,0,0,0,117,7,0,0,
-    0,95,95,100,111,99,95,95,117,27,0,0,0,95,67,65,
-    83,69,95,73,78,83,69,78,83,73,84,73,86,69,95,80,
-    76,65,84,70,79,82,77,83,117,16,0,0,0,95,109,97,
-    107,101,95,114,101,108,97,120,95,99,97,115,101,117,7,0,
-    0,0,95,119,95,108,111,110,103,117,7,0,0,0,95,114,
-    95,108,111,110,103,117,10,0,0,0,95,112,97,116,104,95,
-    106,111,105,110,117,11,0,0,0,95,112,97,116,104,95,115,
-    112,108,105,116,117,18,0,0,0,95,112,97,116,104,95,105,
-    115,95,109,111,100,101,95,116,121,112,101,117,12,0,0,0,
-    95,112,97,116,104,95,105,115,102,105,108,101,117,11,0,0,
-    0,95,112,97,116,104,95,105,115,100,105,114,117,13,0,0,
-    0,95,119,114,105,116,101,95,97,116,111,109,105,99,117,5,
-    0,0,0,95,119,114,97,112,117,4,0,0,0,116,121,112,
-    101,117,8,0,0,0,95,95,99,111,100,101,95,95,117,10,
-    0,0,0,95,99,111,100,101,95,116,121,112,101,117,10,0,
-    0,0,110,101,119,95,109,111,100,117,108,101,117,8,0,0,
-    0,95,80,89,67,65,67,72,69,117,16,0,0,0,95,83,
-    79,85,82,67,69,95,83,85,70,70,73,88,69,83,117,22,
-    0,0,0,95,68,69,66,85,71,95,66,89,84,69,67,79,
-    68,69,95,83,85,70,70,73,88,117,20,0,0,0,95,79,
-    80,84,95,66,89,84,69,67,79,68,69,95,83,85,70,70,
-    73,88,117,9,0,0,0,95,95,100,101,98,117,103,95,95,
-    117,16,0,0,0,95,66,89,84,69,67,79,68,69,95,83,
-    85,70,70,73,88,117,4,0,0,0,78,111,110,101,117,17,
-    0,0,0,99,97,99,104,101,95,102,114,111,109,95,115,111,
-    117,114,99,101,117,16,0,0,0,95,118,101,114,98,111,115,
-    101,95,109,101,115,115,97,103,101,117,11,0,0,0,115,101,
-    116,95,112,97,99,107,97,103,101,117,10,0,0,0,115,101,
-    116,95,108,111,97,100,101,114,117,17,0,0,0,109,111,100,
-    117,108,101,95,102,111,114,95,108,111,97,100,101,114,117,11,
-    0,0,0,95,99,104,101,99,107,95,110,97,109,101,117,17,
-    0,0,0,95,114,101,113,117,105,114,101,115,95,98,117,105,
-    108,116,105,110,117,16,0,0,0,95,114,101,113,117,105,114,
-    101,115,95,102,114,111,122,101,110,117,15,0,0,0,66,117,
-    105,108,116,105,110,73,109,112,111,114,116,101,114,117,14,0,
-    0,0,70,114,111,122,101,110,73,109,112,111,114,116,101,114,
-    117,13,0,0,0,95,76,111,97,100,101,114,66,97,115,105,
-    99,115,117,12,0,0,0,83,111,117,114,99,101,76,111,97,
-    100,101,114,117,10,0,0,0,70,105,108,101,76,111,97,100,
-    101,114,117,16,0,0,0,83,111,117,114,99,101,70,105,108,
-    101,76,111,97,100,101,114,117,20,0,0,0,83,111,117,114,
-    99,101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,
-    117,19,0,0,0,69,120,116,101,110,115,105,111,110,70,105,
-    108,101,76,111,97,100,101,114,117,10,0,0,0,80,97,116,
-    104,70,105,110,100,101,114,117,10,0,0,0,70,105,108,101,
-    70,105,110,100,101,114,117,18,0,0,0,95,73,109,112,111,
-    114,116,76,111,99,107,67,111,110,116,101,120,116,117,13,0,
-    0,0,95,114,101,115,111,108,118,101,95,110,97,109,101,117,
-    12,0,0,0,95,102,105,110,100,95,109,111,100,117,108,101,
-    117,13,0,0,0,95,115,97,110,105,116,121,95,99,104,101,
-    99,107,117,8,0,0,0,95,69,82,82,95,77,83,71,117,
-    14,0,0,0,95,102,105,110,100,95,97,110,100,95,108,111,
-    97,100,117,11,0,0,0,95,103,99,100,95,105,109,112,111,
-    114,116,117,16,0,0,0,95,104,97,110,100,108,101,95,102,
-    114,111,109,108,105,115,116,117,17,0,0,0,95,99,97,108,
-    99,95,95,95,112,97,99,107,97,103,101,95,95,117,10,0,
-    0,0,95,95,105,109,112,111,114,116,95,95,117,13,0,0,
-    0,95,77,65,71,73,67,95,78,85,77,66,69,82,117,4,
-    0,0,0,95,84,65,71,117,6,0,0,0,95,115,101,116,
-    117,112,117,8,0,0,0,95,105,110,115,116,97,108,108,40,
-    0,0,0,0,40,0,0,0,0,40,0,0,0,0,117,29,
+    4,0,131,3,0,125,5,0,124,3,0,115,183,0,124,4,
+    0,100,1,0,107,2,0,114,98,0,116,0,0,124,0,0,
+    106,2,0,100,2,0,131,1,0,100,1,0,25,131,1,0,
+    83,124,0,0,115,108,0,124,5,0,83,116,3,0,124,0,
+    0,131,1,0,116,3,0,124,0,0,106,2,0,100,2,0,
+    131,1,0,100,1,0,25,131,1,0,24,125,7,0,116,4,
+    0,106,5,0,124,5,0,106,6,0,100,3,0,116,3,0,
+    124,5,0,106,6,0,131,1,0,124,7,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,3,0,83,40,4,0,0,0,117,
+    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,105,0,0,0,0,117,
+    1,0,0,0,46,78,40,8,0,0,0,117,11,0,0,0,
+    95,103,99,100,95,105,109,112,111,114,116,117,17,0,0,0,
+    95,99,97,108,99,95,95,95,112,97,99,107,97,103,101,95,
+    95,117,9,0,0,0,112,97,114,116,105,116,105,111,110,117,
+    3,0,0,0,108,101,110,117,3,0,0,0,115,121,115,117,
+    7,0,0,0,109,111,100,117,108,101,115,117,8,0,0,0,
+    95,95,110,97,109,101,95,95,117,16,0,0,0,95,104,97,
+    110,100,108,101,95,102,114,111,109,108,105,115,116,40,8,0,
+    0,0,117,4,0,0,0,110,97,109,101,117,7,0,0,0,
+    103,108,111,98,97,108,115,117,6,0,0,0,108,111,99,97,
+    108,115,117,8,0,0,0,102,114,111,109,108,105,115,116,117,
+    5,0,0,0,108,101,118,101,108,117,6,0,0,0,109,111,
+    100,117,108,101,117,7,0,0,0,112,97,99,107,97,103,101,
+    117,7,0,0,0,99,117,116,95,111,102,102,40,0,0,0,
+    0,40,0,0,0,0,117,29,0,0,0,60,102,114,111,122,
+    101,110,32,105,109,112,111,114,116,108,105,98,46,95,98,111,
+    111,116,115,116,114,97,112,62,117,10,0,0,0,95,95,105,
+    109,112,111,114,116,95,95,41,4,0,0,115,24,0,0,0,
+    0,11,12,1,15,2,12,1,18,1,6,3,12,1,23,1,
+    6,1,4,2,35,1,40,2,117,10,0,0,0,95,95,105,
+    109,112,111,114,116,95,95,99,2,0,0,0,0,0,0,0,
+    11,0,0,0,12,0,0,0,67,0,0,0,115,31,2,0,
+    0,124,1,0,97,0,0,124,0,0,97,1,0,120,47,0,
+    116,0,0,116,1,0,102,2,0,68,93,33,0,125,2,0,
+    116,2,0,124,2,0,100,1,0,131,2,0,115,25,0,116,
+    3,0,124,2,0,95,4,0,113,25,0,113,25,0,87,116,
+    1,0,106,5,0,116,6,0,25,125,3,0,120,76,0,100,
+    25,0,68,93,68,0,125,4,0,124,4,0,116,1,0,106,
+    5,0,107,7,0,114,121,0,116,3,0,106,7,0,124,4,
+    0,131,1,0,125,5,0,110,13,0,116,1,0,106,5,0,
+    124,4,0,25,125,5,0,116,8,0,124,3,0,124,4,0,
+    124,5,0,131,3,0,1,113,82,0,87,100,6,0,100,7,
+    0,103,1,0,102,2,0,100,8,0,100,9,0,100,7,0,
+    103,2,0,102,2,0,100,10,0,100,9,0,100,7,0,103,
+    2,0,102,2,0,102,3,0,125,6,0,120,189,0,124,6,
+    0,68,93,169,0,92,2,0,125,7,0,125,8,0,116,9,
+    0,100,11,0,100,12,0,132,0,0,124,8,0,68,131,1,
+    0,131,1,0,115,252,0,116,10,0,130,1,0,124,8,0,
+    100,13,0,25,125,9,0,124,7,0,116,1,0,106,5,0,
+    107,6,0,114,38,1,116,1,0,106,5,0,124,7,0,25,
+    125,10,0,80,113,209,0,121,60,0,116,3,0,106,7,0,
+    124,7,0,131,1,0,125,10,0,124,7,0,100,10,0,107,
+    2,0,114,96,1,100,14,0,116,1,0,106,11,0,107,6,
+    0,114,96,1,124,8,0,100,15,0,25,125,9,0,110,0,
+    0,80,87,113,209,0,4,116,12,0,107,10,0,114,121,1,
+    1,1,1,119,209,0,89,113,209,0,88,113,209,0,87,116,
+    12,0,100,16,0,131,1,0,130,1,0,116,8,0,124,3,
+    0,100,17,0,124,10,0,131,3,0,1,116,8,0,124,3,
+    0,100,18,0,124,9,0,131,3,0,1,116,8,0,124,3,
+    0,100,19,0,116,13,0,124,8,0,131,1,0,131,3,0,
+    1,116,8,0,124,3,0,100,20,0,116,14,0,131,0,0,
+    131,3,0,1,116,8,0,124,3,0,100,21,0,124,1,0,
+    106,15,0,131,0,0,131,3,0,1,116,8,0,124,3,0,
+    100,22,0,116,0,0,106,16,0,131,0,0,131,3,0,1,
+    124,7,0,100,8,0,107,2,0,114,27,2,116,17,0,106,
+    18,0,100,23,0,131,1,0,1,110,0,0,100,24,0,83,
+    40,26,0,0,0,117,250,0,0,0,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,117,10,0,0,0,95,95,108,111,97,100,101,
+    114,95,95,117,3,0,0,0,95,105,111,117,9,0,0,0,
+    95,119,97,114,110,105,110,103,115,117,8,0,0,0,98,117,
+    105,108,116,105,110,115,117,7,0,0,0,109,97,114,115,104,
+    97,108,117,5,0,0,0,112,111,115,105,120,117,1,0,0,
+    0,47,117,2,0,0,0,110,116,117,1,0,0,0,92,117,
+    3,0,0,0,111,115,50,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,40,2,0,0,0,105,1,0,0,0,78,40,1,0,
+    0,0,117,3,0,0,0,108,101,110,40,2,0,0,0,117,
+    2,0,0,0,46,48,117,3,0,0,0,115,101,112,40,0,
+    0,0,0,40,0,0,0,0,117,29,0,0,0,60,102,114,
+    111,122,101,110,32,105,109,112,111,114,116,108,105,98,46,95,
+    98,111,111,116,115,116,114,97,112,62,117,9,0,0,0,60,
+    103,101,110,101,120,112,114,62,102,4,0,0,115,2,0,0,
+    0,6,0,117,25,0,0,0,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,105,0,0,0,0,117,7,0,0,0,69,77,88,32,71,
+    67,67,105,1,0,0,0,117,30,0,0,0,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,117,3,0,0,0,95,
+    111,115,117,8,0,0,0,112,97,116,104,95,115,101,112,117,
+    15,0,0,0,112,97,116,104,95,115,101,112,97,114,97,116,
+    111,114,115,117,11,0,0,0,95,114,101,108,97,120,95,99,
+    97,115,101,117,13,0,0,0,95,77,65,71,73,67,95,78,
+    85,77,66,69,82,117,4,0,0,0,95,84,65,71,117,4,
+    0,0,0,46,112,121,119,78,40,4,0,0,0,117,3,0,
+    0,0,95,105,111,117,9,0,0,0,95,119,97,114,110,105,
+    110,103,115,117,8,0,0,0,98,117,105,108,116,105,110,115,
+    117,7,0,0,0,109,97,114,115,104,97,108,40,19,0,0,
+    0,117,4,0,0,0,95,105,109,112,117,3,0,0,0,115,
+    121,115,117,7,0,0,0,104,97,115,97,116,116,114,117,15,
+    0,0,0,66,117,105,108,116,105,110,73,109,112,111,114,116,
+    101,114,117,10,0,0,0,95,95,108,111,97,100,101,114,95,
+    95,117,7,0,0,0,109,111,100,117,108,101,115,117,8,0,
+    0,0,95,95,110,97,109,101,95,95,117,11,0,0,0,108,
+    111,97,100,95,109,111,100,117,108,101,117,7,0,0,0,115,
+    101,116,97,116,116,114,117,3,0,0,0,97,108,108,117,14,
+    0,0,0,65,115,115,101,114,116,105,111,110,69,114,114,111,
+    114,117,7,0,0,0,118,101,114,115,105,111,110,117,11,0,
+    0,0,73,109,112,111,114,116,69,114,114,111,114,117,3,0,
+    0,0,115,101,116,117,16,0,0,0,95,109,97,107,101,95,
+    114,101,108,97,120,95,99,97,115,101,117,9,0,0,0,103,
+    101,116,95,109,97,103,105,99,117,7,0,0,0,103,101,116,
+    95,116,97,103,117,16,0,0,0,95,83,79,85,82,67,69,
+    95,83,85,70,70,73,88,69,83,117,6,0,0,0,97,112,
+    112,101,110,100,40,11,0,0,0,117,10,0,0,0,115,121,
+    115,95,109,111,100,117,108,101,117,11,0,0,0,95,105,109,
+    112,95,109,111,100,117,108,101,117,6,0,0,0,109,111,100,
+    117,108,101,117,11,0,0,0,115,101,108,102,95,109,111,100,
+    117,108,101,117,12,0,0,0,98,117,105,108,116,105,110,95,
+    110,97,109,101,117,14,0,0,0,98,117,105,108,116,105,110,
+    95,109,111,100,117,108,101,117,10,0,0,0,111,115,95,100,
+    101,116,97,105,108,115,117,10,0,0,0,98,117,105,108,116,
+    105,110,95,111,115,117,15,0,0,0,112,97,116,104,95,115,
+    101,112,97,114,97,116,111,114,115,117,8,0,0,0,112,97,
+    116,104,95,115,101,112,117,9,0,0,0,111,115,95,109,111,
+    100,117,108,101,40,0,0,0,0,40,0,0,0,0,117,29,
     0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,
     116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,
-    117,8,0,0,0,60,109,111,100,117,108,101,62,8,0,0,
-    0,115,100,0,0,0,6,21,6,3,12,13,12,16,12,13,
-    12,12,12,12,12,10,12,6,12,7,12,21,12,8,15,3,
-    12,11,6,2,9,2,6,1,6,1,18,2,15,19,12,8,
-    12,13,12,11,12,48,12,16,12,11,12,13,19,53,19,47,
-    19,77,22,111,19,22,25,38,25,24,19,45,19,54,19,116,
-    19,13,12,9,12,16,12,17,6,2,12,47,18,25,12,23,
-    12,15,24,30,6,1,6,3,12,54,
+    117,6,0,0,0,95,115,101,116,117,112,75,4,0,0,115,
+    68,0,0,0,0,9,6,1,6,2,19,1,15,1,16,2,
+    13,1,13,1,15,1,18,2,13,1,20,2,48,1,19,2,
+    31,1,10,1,15,1,13,1,4,2,3,1,15,2,27,1,
+    13,1,5,1,13,1,12,2,12,1,16,1,16,1,22,2,
+    19,1,22,1,22,1,12,1,117,6,0,0,0,95,115,101,
+    116,117,112,99,2,0,0,0,0,0,0,0,6,0,0,0,
+    4,0,0,0,67,0,0,0,115,139,0,0,0,116,0,0,
+    124,0,0,124,1,0,131,2,0,1,116,1,0,124,1,0,
+    106,2,0,131,0,0,100,2,0,102,3,0,125,2,0,116,
+    4,0,116,5,0,100,3,0,102,3,0,125,3,0,116,7,
+    0,116,8,0,103,1,0,100,3,0,102,3,0,125,4,0,
+    124,2,0,124,3,0,124,4,0,103,3,0,125,5,0,116,
+    9,0,106,10,0,106,11,0,116,12,0,106,13,0,124,5,
+    0,140,0,0,103,1,0,131,1,0,1,116,9,0,106,14,
+    0,106,11,0,116,15,0,116,16,0,116,17,0,103,3,0,
+    131,1,0,1,100,1,0,83,40,4,0,0,0,117,50,0,
+    0,0,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,78,70,84,40,18,0,0,0,117,6,0,0,
+    0,95,115,101,116,117,112,117,19,0,0,0,69,120,116,101,
+    110,115,105,111,110,70,105,108,101,76,111,97,100,101,114,117,
+    18,0,0,0,101,120,116,101,110,115,105,111,110,95,115,117,
+    102,102,105,120,101,115,117,5,0,0,0,70,97,108,115,101,
+    117,16,0,0,0,83,111,117,114,99,101,70,105,108,101,76,
+    111,97,100,101,114,117,16,0,0,0,95,83,79,85,82,67,
+    69,95,83,85,70,70,73,88,69,83,117,4,0,0,0,84,
+    114,117,101,117,20,0,0,0,83,111,117,114,99,101,108,101,
+    115,115,70,105,108,101,76,111,97,100,101,114,117,16,0,0,
+    0,95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,
+    88,117,3,0,0,0,115,121,115,117,10,0,0,0,112,97,
+    116,104,95,104,111,111,107,115,117,6,0,0,0,101,120,116,
+    101,110,100,117,10,0,0,0,70,105,108,101,70,105,110,100,
+    101,114,117,9,0,0,0,112,97,116,104,95,104,111,111,107,
+    117,9,0,0,0,109,101,116,97,95,112,97,116,104,117,15,
+    0,0,0,66,117,105,108,116,105,110,73,109,112,111,114,116,
+    101,114,117,14,0,0,0,70,114,111,122,101,110,73,109,112,
+    111,114,116,101,114,117,10,0,0,0,80,97,116,104,70,105,
+    110,100,101,114,40,6,0,0,0,117,10,0,0,0,115,121,
+    115,95,109,111,100,117,108,101,117,11,0,0,0,95,105,109,
+    112,95,109,111,100,117,108,101,117,10,0,0,0,101,120,116,
+    101,110,115,105,111,110,115,117,6,0,0,0,115,111,117,114,
+    99,101,117,8,0,0,0,98,121,116,101,99,111,100,101,117,
+    17,0,0,0,115,117,112,112,111,114,116,101,100,95,108,111,
+    97,100,101,114,115,40,0,0,0,0,40,0,0,0,0,117,
+    29,0,0,0,60,102,114,111,122,101,110,32,105,109,112,111,
+    114,116,108,105,98,46,95,98,111,111,116,115,116,114,97,112,
+    62,117,8,0,0,0,95,105,110,115,116,97,108,108,129,4,
+    0,0,115,14,0,0,0,0,2,13,1,21,1,15,1,18,
+    1,15,1,28,1,117,8,0,0,0,95,105,110,115,116,97,
+    108,108,78,40,3,0,0,0,117,3,0,0,0,119,105,110,
+    117,6,0,0,0,99,121,103,119,105,110,117,6,0,0,0,
+    100,97,114,119,105,110,40,55,0,0,0,117,7,0,0,0,
+    95,95,100,111,99,95,95,117,27,0,0,0,95,67,65,83,
+    69,95,73,78,83,69,78,83,73,84,73,86,69,95,80,76,
+    65,84,70,79,82,77,83,117,16,0,0,0,95,109,97,107,
+    101,95,114,101,108,97,120,95,99,97,115,101,117,7,0,0,
+    0,95,119,95,108,111,110,103,117,7,0,0,0,95,114,95,
+    108,111,110,103,117,10,0,0,0,95,112,97,116,104,95,106,
+    111,105,110,117,11,0,0,0,95,112,97,116,104,95,115,112,
+    108,105,116,117,18,0,0,0,95,112,97,116,104,95,105,115,
+    95,109,111,100,101,95,116,121,112,101,117,12,0,0,0,95,
+    112,97,116,104,95,105,115,102,105,108,101,117,11,0,0,0,
+    95,112,97,116,104,95,105,115,100,105,114,117,13,0,0,0,
+    95,119,114,105,116,101,95,97,116,111,109,105,99,117,5,0,
+    0,0,95,119,114,97,112,117,4,0,0,0,116,121,112,101,
+    117,8,0,0,0,95,95,99,111,100,101,95,95,117,10,0,
+    0,0,95,99,111,100,101,95,116,121,112,101,117,10,0,0,
+    0,110,101,119,95,109,111,100,117,108,101,117,8,0,0,0,
+    95,80,89,67,65,67,72,69,117,16,0,0,0,95,83,79,
+    85,82,67,69,95,83,85,70,70,73,88,69,83,117,22,0,
+    0,0,95,68,69,66,85,71,95,66,89,84,69,67,79,68,
+    69,95,83,85,70,70,73,88,117,20,0,0,0,95,79,80,
+    84,95,66,89,84,69,67,79,68,69,95,83,85,70,70,73,
+    88,117,9,0,0,0,95,95,100,101,98,117,103,95,95,117,
+    16,0,0,0,95,66,89,84,69,67,79,68,69,95,83,85,
+    70,70,73,88,117,4,0,0,0,78,111,110,101,117,17,0,
+    0,0,99,97,99,104,101,95,102,114,111,109,95,115,111,117,
+    114,99,101,117,16,0,0,0,95,118,101,114,98,111,115,101,
+    95,109,101,115,115,97,103,101,117,11,0,0,0,115,101,116,
+    95,112,97,99,107,97,103,101,117,10,0,0,0,115,101,116,
+    95,108,111,97,100,101,114,117,17,0,0,0,109,111,100,117,
+    108,101,95,102,111,114,95,108,111,97,100,101,114,117,11,0,
+    0,0,95,99,104,101,99,107,95,110,97,109,101,117,17,0,
+    0,0,95,114,101,113,117,105,114,101,115,95,98,117,105,108,
+    116,105,110,117,16,0,0,0,95,114,101,113,117,105,114,101,
+    115,95,102,114,111,122,101,110,117,15,0,0,0,66,117,105,
+    108,116,105,110,73,109,112,111,114,116,101,114,117,14,0,0,
+    0,70,114,111,122,101,110,73,109,112,111,114,116,101,114,117,
+    13,0,0,0,95,76,111,97,100,101,114,66,97,115,105,99,
+    115,117,12,0,0,0,83,111,117,114,99,101,76,111,97,100,
+    101,114,117,10,0,0,0,70,105,108,101,76,111,97,100,101,
+    114,117,16,0,0,0,83,111,117,114,99,101,70,105,108,101,
+    76,111,97,100,101,114,117,20,0,0,0,83,111,117,114,99,
+    101,108,101,115,115,70,105,108,101,76,111,97,100,101,114,117,
+    19,0,0,0,69,120,116,101,110,115,105,111,110,70,105,108,
+    101,76,111,97,100,101,114,117,10,0,0,0,80,97,116,104,
+    70,105,110,100,101,114,117,10,0,0,0,70,105,108,101,70,
+    105,110,100,101,114,117,18,0,0,0,95,73,109,112,111,114,
+    116,76,111,99,107,67,111,110,116,101,120,116,117,13,0,0,
+    0,95,114,101,115,111,108,118,101,95,110,97,109,101,117,12,
+    0,0,0,95,102,105,110,100,95,109,111,100,117,108,101,117,
+    13,0,0,0,95,115,97,110,105,116,121,95,99,104,101,99,
+    107,117,8,0,0,0,95,69,82,82,95,77,83,71,117,14,
+    0,0,0,95,102,105,110,100,95,97,110,100,95,108,111,97,
+    100,117,11,0,0,0,95,103,99,100,95,105,109,112,111,114,
+    116,117,16,0,0,0,95,104,97,110,100,108,101,95,102,114,
+    111,109,108,105,115,116,117,17,0,0,0,95,99,97,108,99,
+    95,95,95,112,97,99,107,97,103,101,95,95,117,10,0,0,
+    0,95,95,105,109,112,111,114,116,95,95,117,13,0,0,0,
+    95,77,65,71,73,67,95,78,85,77,66,69,82,117,4,0,
+    0,0,95,84,65,71,117,6,0,0,0,95,115,101,116,117,
+    112,117,8,0,0,0,95,105,110,115,116,97,108,108,40,0,
+    0,0,0,40,0,0,0,0,40,0,0,0,0,117,29,0,
+    0,0,60,102,114,111,122,101,110,32,105,109,112,111,114,116,
+    108,105,98,46,95,98,111,111,116,115,116,114,97,112,62,117,
+    8,0,0,0,60,109,111,100,117,108,101,62,8,0,0,0,
+    115,100,0,0,0,6,21,6,3,12,13,12,16,12,13,12,
+    12,12,12,12,10,12,6,12,7,12,21,12,8,15,3,12,
+    11,6,2,9,2,6,1,6,1,18,2,15,19,12,8,12,
+    13,12,11,12,48,12,16,12,11,12,13,19,53,19,47,19,
+    77,22,111,19,22,25,38,25,24,19,45,19,54,19,116,19,
+    13,12,9,12,16,12,17,6,2,12,47,18,25,12,23,12,
+    15,24,30,6,1,6,3,12,54,
 };
 /* Mercurial binary marker: \0 */
\ No newline at end of file