Remove generated file tests/Recode.c from git
authorReuben Thomas <rrt@sc3d.org>
Sat, 13 Jan 2018 16:34:34 +0000 (16:34 +0000)
committerReuben Thomas <rrt@sc3d.org>
Sun, 14 Jan 2018 20:45:30 +0000 (20:45 +0000)
.gitignore
tests/Recode.c [deleted file]

index 837074aa7e41e190a0db273c5c2b8bff9a1e9b6c..ef22605b09cb15fd8c8940bec4edd7f6aabfa275 100644 (file)
@@ -41,4 +41,5 @@ html/
 /stamp-h1
 /tests/setup.py
 /tests/Recode.body.c
+/tests/Recode.c
 /tests/Recode.so
diff --git a/tests/Recode.c b/tests/Recode.c
deleted file mode 100644 (file)
index 7e67e40..0000000
+++ /dev/null
@@ -1,6025 +0,0 @@
-#include "config.h"
-/* Generated by Cython 0.23.4 */
-
-#define PY_SSIZE_T_CLEAN
-#include "Python.h"
-#ifndef Py_PYTHON_H
-    #error Python headers needed to compile C extensions, please install development version of Python.
-#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000)
-    #error Cython requires Python 2.6+ or Python 3.2+.
-#else
-#define CYTHON_ABI "0_23_4"
-#include <stddef.h>
-#ifndef offsetof
-#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
-#endif
-#if !defined(WIN32) && !defined(MS_WINDOWS)
-  #ifndef __stdcall
-    #define __stdcall
-  #endif
-  #ifndef __cdecl
-    #define __cdecl
-  #endif
-  #ifndef __fastcall
-    #define __fastcall
-  #endif
-#endif
-#ifndef DL_IMPORT
-  #define DL_IMPORT(t) t
-#endif
-#ifndef DL_EXPORT
-  #define DL_EXPORT(t) t
-#endif
-#ifndef PY_LONG_LONG
-  #define PY_LONG_LONG LONG_LONG
-#endif
-#ifndef Py_HUGE_VAL
-  #define Py_HUGE_VAL HUGE_VAL
-#endif
-#ifdef PYPY_VERSION
-#define CYTHON_COMPILING_IN_PYPY 1
-#define CYTHON_COMPILING_IN_CPYTHON 0
-#else
-#define CYTHON_COMPILING_IN_PYPY 0
-#define CYTHON_COMPILING_IN_CPYTHON 1
-#endif
-#if !defined(CYTHON_USE_PYLONG_INTERNALS) && CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x02070000
-#define CYTHON_USE_PYLONG_INTERNALS 1
-#endif
-#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag)
-#define Py_OptimizeFlag 0
-#endif
-#define __PYX_BUILD_PY_SSIZE_T "n"
-#define CYTHON_FORMAT_SSIZE_T "z"
-#if PY_MAJOR_VERSION < 3
-  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
-  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
-          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-  #define __Pyx_DefaultClassType PyClass_Type
-#else
-  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
-  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
-          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
-  #define __Pyx_DefaultClassType PyType_Type
-#endif
-#ifndef Py_TPFLAGS_CHECKTYPES
-  #define Py_TPFLAGS_CHECKTYPES 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_INDEX
-  #define Py_TPFLAGS_HAVE_INDEX 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_NEWBUFFER
-  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
-#endif
-#ifndef Py_TPFLAGS_HAVE_FINALIZE
-  #define Py_TPFLAGS_HAVE_FINALIZE 0
-#endif
-#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
-  #define CYTHON_PEP393_ENABLED 1
-  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
-                                              0 : _PyUnicode_Ready((PyObject *)(op)))
-  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
-  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
-  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
-  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
-  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
-#else
-  #define CYTHON_PEP393_ENABLED 0
-  #define __Pyx_PyUnicode_READY(op)       (0)
-  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
-  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
-  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
-  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
-  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
-#endif
-#if CYTHON_COMPILING_IN_PYPY
-  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
-  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
-#else
-  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
-  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\
-      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
-#endif
-#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains)
-  #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
-#endif
-#define __Pyx_PyString_FormatSafe(a, b)   ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
-#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
-#else
-  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define PyBaseString_Type            PyUnicode_Type
-  #define PyStringObject               PyUnicodeObject
-  #define PyString_Type                PyUnicode_Type
-  #define PyString_Check               PyUnicode_Check
-  #define PyString_CheckExact          PyUnicode_CheckExact
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
-  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
-#else
-  #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj))
-  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
-#endif
-#ifndef PySet_CheckExact
-  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
-#endif
-#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
-#if PY_MAJOR_VERSION >= 3
-  #define PyIntObject                  PyLongObject
-  #define PyInt_Type                   PyLong_Type
-  #define PyInt_Check(op)              PyLong_Check(op)
-  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
-  #define PyInt_FromString             PyLong_FromString
-  #define PyInt_FromUnicode            PyLong_FromUnicode
-  #define PyInt_FromLong               PyLong_FromLong
-  #define PyInt_FromSize_t             PyLong_FromSize_t
-  #define PyInt_FromSsize_t            PyLong_FromSsize_t
-  #define PyInt_AsLong                 PyLong_AsLong
-  #define PyInt_AS_LONG                PyLong_AS_LONG
-  #define PyInt_AsSsize_t              PyLong_AsSsize_t
-  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
-  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
-  #define PyNumber_Int                 PyNumber_Long
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define PyBoolObject                 PyLongObject
-#endif
-#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY
-  #ifndef PyUnicode_InternFromString
-    #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
-  #endif
-#endif
-#if PY_VERSION_HEX < 0x030200A4
-  typedef long Py_hash_t;
-  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
-#else
-  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
-  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
-#endif
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
-#else
-  #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)
-#endif
-#if PY_VERSION_HEX >= 0x030500B1
-#define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
-#define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async)
-#elif CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
-typedef struct {
-    unaryfunc am_await;
-    unaryfunc am_aiter;
-    unaryfunc am_anext;
-} __Pyx_PyAsyncMethodsStruct;
-#define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved))
-#else
-#define __Pyx_PyType_AsAsync(obj) NULL
-#endif
-#ifndef CYTHON_RESTRICT
-  #if defined(__GNUC__)
-    #define CYTHON_RESTRICT __restrict__
-  #elif defined(_MSC_VER) && _MSC_VER >= 1400
-    #define CYTHON_RESTRICT __restrict
-  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-    #define CYTHON_RESTRICT restrict
-  #else
-    #define CYTHON_RESTRICT
-  #endif
-#endif
-#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
-
-#ifndef CYTHON_INLINE
-  #if defined(__GNUC__)
-    #define CYTHON_INLINE __inline__
-  #elif defined(_MSC_VER)
-    #define CYTHON_INLINE __inline
-  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-    #define CYTHON_INLINE inline
-  #else
-    #define CYTHON_INLINE
-  #endif
-#endif
-
-#if defined(WIN32) || defined(MS_WINDOWS)
-  #define _USE_MATH_DEFINES
-#endif
-#include <math.h>
-#ifdef NAN
-#define __PYX_NAN() ((float) NAN)
-#else
-static CYTHON_INLINE float __PYX_NAN() {
-  float value;
-  memset(&value, 0xFF, sizeof(value));
-  return value;
-}
-#endif
-
-
-#if PY_MAJOR_VERSION >= 3
-  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
-  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
-#else
-  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
-  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
-#endif
-
-#ifndef __PYX_EXTERN_C
-  #ifdef __cplusplus
-    #define __PYX_EXTERN_C extern "C"
-  #else
-    #define __PYX_EXTERN_C extern
-  #endif
-#endif
-
-#define __PYX_HAVE__Recode
-#define __PYX_HAVE_API__Recode
-#include "stdio.h"
-#include "config.h"
-#include "common.h"
-#ifdef _OPENMP
-#include <omp.h>
-#endif /* _OPENMP */
-
-#ifdef PYREX_WITHOUT_ASSERTIONS
-#define CYTHON_WITHOUT_ASSERTIONS
-#endif
-
-#ifndef CYTHON_UNUSED
-# if defined(__GNUC__)
-#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-#     define CYTHON_UNUSED __attribute__ ((__unused__))
-#   else
-#     define CYTHON_UNUSED
-#   endif
-# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
-#   define CYTHON_UNUSED __attribute__ ((__unused__))
-# else
-#   define CYTHON_UNUSED
-# endif
-#endif
-#ifndef CYTHON_NCP_UNUSED
-# if CYTHON_COMPILING_IN_CPYTHON
-#  define CYTHON_NCP_UNUSED
-# else
-#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
-# endif
-#endif
-typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
-                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
-
-#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
-#define __PYX_DEFAULT_STRING_ENCODING ""
-#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
-#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#define __Pyx_uchar_cast(c) ((unsigned char)c)
-#define __Pyx_long_cast(x) ((long)x)
-#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (\
-    (sizeof(type) < sizeof(Py_ssize_t))  ||\
-    (sizeof(type) > sizeof(Py_ssize_t) &&\
-          likely(v < (type)PY_SSIZE_T_MAX ||\
-                 v == (type)PY_SSIZE_T_MAX)  &&\
-          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\
-                                v == (type)PY_SSIZE_T_MIN)))  ||\
-    (sizeof(type) == sizeof(Py_ssize_t) &&\
-          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\
-                               v == (type)PY_SSIZE_T_MAX)))  )
-#if defined (__cplusplus) && __cplusplus >= 201103L
-    #include <cstdlib>
-    #define __Pyx_sst_abs(value) std::abs(value)
-#elif SIZEOF_INT >= SIZEOF_SIZE_T
-    #define __Pyx_sst_abs(value) abs(value)
-#elif SIZEOF_LONG >= SIZEOF_SIZE_T
-    #define __Pyx_sst_abs(value) labs(value)
-#elif defined (_MSC_VER) && defined (_M_X64)
-    #define __Pyx_sst_abs(value) _abs64(value)
-#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
-    #define __Pyx_sst_abs(value) llabs(value)
-#elif defined (__GNUC__)
-    #define __Pyx_sst_abs(value) __builtin_llabs(value)
-#else
-    #define __Pyx_sst_abs(value) ((value<0) ? -value : value)
-#endif
-static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
-static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
-#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
-#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
-#define __Pyx_PyBytes_FromString        PyBytes_FromString
-#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
-#if PY_MAJOR_VERSION < 3
-    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
-#else
-    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
-    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
-#endif
-#define __Pyx_PyObject_AsSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_AsUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
-#define __Pyx_PyObject_FromCString(s)  __Pyx_PyObject_FromString((const char*)s)
-#define __Pyx_PyBytes_FromCString(s)   __Pyx_PyBytes_FromString((const char*)s)
-#define __Pyx_PyByteArray_FromCString(s)   __Pyx_PyByteArray_FromString((const char*)s)
-#define __Pyx_PyStr_FromCString(s)     __Pyx_PyStr_FromString((const char*)s)
-#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
-#if PY_MAJOR_VERSION < 3
-static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
-{
-    const Py_UNICODE *u_end = u;
-    while (*u_end++) ;
-    return (size_t)(u_end - u - 1);
-}
-#else
-#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
-#endif
-#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
-#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
-#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
-#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)
-#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)
-#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
-#if CYTHON_COMPILING_IN_CPYTHON
-#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
-#else
-#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
-#endif
-#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-static int __Pyx_sys_getdefaultencoding_not_ascii;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
-    PyObject* sys;
-    PyObject* default_encoding = NULL;
-    PyObject* ascii_chars_u = NULL;
-    PyObject* ascii_chars_b = NULL;
-    const char* default_encoding_c;
-    sys = PyImport_ImportModule("sys");
-    if (!sys) goto bad;
-    default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL);
-    Py_DECREF(sys);
-    if (!default_encoding) goto bad;
-    default_encoding_c = PyBytes_AsString(default_encoding);
-    if (!default_encoding_c) goto bad;
-    if (strcmp(default_encoding_c, "ascii") == 0) {
-        __Pyx_sys_getdefaultencoding_not_ascii = 0;
-    } else {
-        char ascii_chars[128];
-        int c;
-        for (c = 0; c < 128; c++) {
-            ascii_chars[c] = c;
-        }
-        __Pyx_sys_getdefaultencoding_not_ascii = 1;
-        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
-        if (!ascii_chars_u) goto bad;
-        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
-        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
-            PyErr_Format(
-                PyExc_ValueError,
-                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
-                default_encoding_c);
-            goto bad;
-        }
-        Py_DECREF(ascii_chars_u);
-        Py_DECREF(ascii_chars_b);
-    }
-    Py_DECREF(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    Py_XDECREF(ascii_chars_u);
-    Py_XDECREF(ascii_chars_b);
-    return -1;
-}
-#endif
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
-#else
-#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
-#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
-static char* __PYX_DEFAULT_STRING_ENCODING;
-static int __Pyx_init_sys_getdefaultencoding_params(void) {
-    PyObject* sys;
-    PyObject* default_encoding = NULL;
-    char* default_encoding_c;
-    sys = PyImport_ImportModule("sys");
-    if (!sys) goto bad;
-    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
-    Py_DECREF(sys);
-    if (!default_encoding) goto bad;
-    default_encoding_c = PyBytes_AsString(default_encoding);
-    if (!default_encoding_c) goto bad;
-    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
-    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
-    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
-    Py_DECREF(default_encoding);
-    return 0;
-bad:
-    Py_XDECREF(default_encoding);
-    return -1;
-}
-#endif
-#endif
-
-
-/* Test for GCC > 2.95 */
-#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
-  #define likely(x)   __builtin_expect(!!(x), 1)
-  #define unlikely(x) __builtin_expect(!!(x), 0)
-#else /* !__GNUC__ or GCC < 2.95 */
-  #define likely(x)   (x)
-  #define unlikely(x) (x)
-#endif /* __GNUC__ */
-
-static PyObject *__pyx_m;
-static PyObject *__pyx_d;
-static PyObject *__pyx_b;
-static PyObject *__pyx_empty_tuple;
-static PyObject *__pyx_empty_bytes;
-static int __pyx_lineno;
-static int __pyx_clineno = 0;
-static const char * __pyx_cfilenm= __FILE__;
-static const char *__pyx_filename;
-
-
-static const char *__pyx_f[] = {
-  "Recode.pyx",
-};
-
-/*--- Type declarations ---*/
-struct __pyx_obj_6Recode_Outer;
-struct __pyx_obj_6Recode_Request;
-
-/* "Recode.pyx":21
- * # 02111-1307, USA.
- * 
- * cdef enum bool:             # <<<<<<<<<<<<<<
- *     false = 0
- *     true = 1
- */
-enum __pyx_t_6Recode_bool {
-  __pyx_e_6Recode_false = 0,
-  __pyx_e_6Recode_true = 1
-};
-
-/* "Recode.pyx":551
- * ## Recode library at OUTER level.
- * 
- * cdef class Outer:             # <<<<<<<<<<<<<<
- *     cdef RECODE_OUTER outer
- * 
- */
-struct __pyx_obj_6Recode_Outer {
-  PyObject_HEAD
-  RECODE_OUTER outer;
-};
-
-
-/* "Recode.pyx":616
- * # Recode library at REQUEST level.
- * 
- * cdef class Request:             # <<<<<<<<<<<<<<
- *     cdef RECODE_REQUEST request
- * 
- */
-struct __pyx_obj_6Recode_Request {
-  PyObject_HEAD
-  RECODE_REQUEST request;
-};
-
-
-/* --- Runtime support code (head) --- */
-#ifndef CYTHON_REFNANNY
-  #define CYTHON_REFNANNY 0
-#endif
-#if CYTHON_REFNANNY
-  typedef struct {
-    void (*INCREF)(void*, PyObject*, int);
-    void (*DECREF)(void*, PyObject*, int);
-    void (*GOTREF)(void*, PyObject*, int);
-    void (*GIVEREF)(void*, PyObject*, int);
-    void* (*SetupContext)(const char*, int, const char*);
-    void (*FinishContext)(void**);
-  } __Pyx_RefNannyAPIStruct;
-  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
-  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname);
-  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
-#ifdef WITH_THREAD
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
-          if (acquire_gil) {\
-              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
-              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
-              PyGILState_Release(__pyx_gilstate_save);\
-          } else {\
-              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\
-          }
-#else
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)\
-          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
-#endif
-  #define __Pyx_RefNannyFinishContext()\
-          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
-  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
-  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
-  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
-  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
-  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
-#else
-  #define __Pyx_RefNannyDeclarations
-  #define __Pyx_RefNannySetupContext(name, acquire_gil)
-  #define __Pyx_RefNannyFinishContext()
-  #define __Pyx_INCREF(r) Py_INCREF(r)
-  #define __Pyx_DECREF(r) Py_DECREF(r)
-  #define __Pyx_GOTREF(r)
-  #define __Pyx_GIVEREF(r)
-  #define __Pyx_XINCREF(r) Py_XINCREF(r)
-  #define __Pyx_XDECREF(r) Py_XDECREF(r)
-  #define __Pyx_XGOTREF(r)
-  #define __Pyx_XGIVEREF(r)
-#endif
-#define __Pyx_XDECREF_SET(r, v) do {\
-        PyObject *tmp = (PyObject *) r;\
-        r = v; __Pyx_XDECREF(tmp);\
-    } while (0)
-#define __Pyx_DECREF_SET(r, v) do {\
-        PyObject *tmp = (PyObject *) r;\
-        r = v; __Pyx_DECREF(tmp);\
-    } while (0)
-#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
-#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
-    PyTypeObject* tp = Py_TYPE(obj);
-    if (likely(tp->tp_getattro))
-        return tp->tp_getattro(obj, attr_name);
-#if PY_MAJOR_VERSION < 3
-    if (likely(tp->tp_getattr))
-        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
-#endif
-    return PyObject_GetAttr(obj, attr_name);
-}
-#else
-#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
-#endif
-
-static PyObject *__Pyx_GetBuiltinName(PyObject *name);
-
-static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);
-
-static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
-    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\
-    const char* function_name);
-
-static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
-    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE int __Pyx_PyList_Append(PyObject* list, PyObject* x) {
-    PyListObject* L = (PyListObject*) list;
-    Py_ssize_t len = Py_SIZE(list);
-    if (likely(L->allocated > len) & likely(len > (L->allocated >> 1))) {
-        Py_INCREF(x);
-        PyList_SET_ITEM(list, len, x);
-        Py_SIZE(list) = len+1;
-        return 0;
-    }
-    return PyList_Append(list, x);
-}
-#else
-#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
-#endif
-
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);
-
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb);
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb);
-
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);
-#else
-#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
-#endif
-
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
-
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact);
-
-static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);
-
-static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *qualname,
-                                           PyObject *mkw, PyObject *modname, PyObject *doc);
-static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict,
-                                      PyObject *mkw, int calculate_metaclass, int allow_py2_metaclass);
-
-typedef struct {
-    int code_line;
-    PyCodeObject* code_object;
-} __Pyx_CodeObjectCacheEntry;
-struct __Pyx_CodeObjectCache {
-    int count;
-    int max_count;
-    __Pyx_CodeObjectCacheEntry* entries;
-};
-static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
-static PyCodeObject *__pyx_find_code_object(int code_line);
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);
-
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_symbol_type(enum recode_symbol_type value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_data_type(enum recode_data_type value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_size(enum recode_size value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_step_type(enum recode_step_type value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_sequence_strategy(enum recode_sequence_strategy value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_swap_input(enum recode_swap_input value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_error(enum recode_error value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_list_format(enum recode_list_format value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_programming_language(enum recode_programming_language value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__alias_find_type(enum alias_find_type value);
-
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);
-
-static CYTHON_INLINE enum recode_list_format __Pyx_PyInt_As_enum__recode_list_format(PyObject *);
-
-static CYTHON_INLINE enum __pyx_t_6Recode_bool __Pyx_PyInt_As_enum____pyx_t_6Recode_bool(PyObject *);
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);
-
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);
-
-static int __Pyx_check_binary_version(void);
-
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);
-
-
-/* Module declarations from 'Recode' */
-static PyTypeObject *__pyx_ptype_6Recode_Outer = 0;
-static PyTypeObject *__pyx_ptype_6Recode_Request = 0;
-#define __Pyx_MODULE_NAME "Recode"
-int __pyx_module_is_main_Recode = 0;
-
-/* Implementation of 'Recode' */
-static PyObject *__pyx_builtin_Exception;
-static char __pyx_k_NUL[] = "NUL";
-static char __pyx_k_doc[] = "__doc__";
-static char __pyx_k_main[] = "__main__";
-static char __pyx_k_scan[] = "scan";
-static char __pyx_k_test[] = "__test__";
-static char __pyx_k_error[] = "error";
-static char __pyx_k_iconv[] = "iconv";
-static char __pyx_k_input[] = "input";
-static char __pyx_k_outer[] = "outer";
-static char __pyx_k_xDONE[] = "xDONE";
-static char __pyx_k_xELSE[] = "xELSE";
-static char __pyx_k_Recode[] = "Recode";
-static char __pyx_k_SIZE_1[] = "SIZE_1";
-static char __pyx_k_SIZE_2[] = "SIZE_2";
-static char __pyx_k_SIZE_4[] = "SIZE_4";
-static char __pyx_k_SIZE_N[] = "SIZE_N";
-static char __pyx_k_format[] = "format";
-static char __pyx_k_module[] = "__module__";
-static char __pyx_k_strict[] = "strict";
-static char __pyx_k_string[] = "string";
-static char __pyx_k_CHARSET[] = "CHARSET";
-static char __pyx_k_SWAP_NO[] = "SWAP_NO";
-static char __pyx_k_charset[] = "charset";
-static char __pyx_k_command[] = "command";
-static char __pyx_k_prepare[] = "__prepare__";
-static char __pyx_k_NO_ERROR[] = "NO_ERROR";
-static char __pyx_k_SWAP_YES[] = "SWAP_YES";
-static char __pyx_k_language[] = "language";
-static char __pyx_k_qualname[] = "__qualname__";
-static char __pyx_k_Exception[] = "Exception";
-static char __pyx_k_NO_FORMAT[] = "NO_FORMAT";
-static char __pyx_k_metaclass[] = "__metaclass__";
-static char __pyx_k_LANGUAGE_C[] = "LANGUAGE_C";
-static char __pyx_k_STRIP_DATA[] = "STRIP_DATA";
-static char __pyx_k_STRIP_SIZE[] = "STRIP_SIZE";
-static char __pyx_k_USER_ERROR[] = "USER_ERROR";
-static char __pyx_k_auto_abort[] = "auto_abort";
-static char __pyx_k_FULL_FORMAT[] = "FULL_FORMAT";
-static char __pyx_k_NO_LANGUAGE[] = "NO_LANGUAGE";
-static char __pyx_k_BYTE_TO_BYTE[] = "BYTE_TO_BYTE";
-static char __pyx_k_COMBINE_STEP[] = "COMBINE_STEP";
-static char __pyx_k_DATA_SURFACE[] = "DATA_SURFACE";
-static char __pyx_k_EXPLODE_DATA[] = "EXPLODE_DATA";
-static char __pyx_k_EXPLODE_STEP[] = "EXPLODE_STEP";
-static char __pyx_k_OCTAL_FORMAT[] = "OCTAL_FORMAT";
-static char __pyx_k_SYSTEM_ERROR[] = "SYSTEM_ERROR";
-static char __pyx_k_TREE_SURFACE[] = "TREE_SURFACE";
-static char __pyx_k_UCS2_TO_BYTE[] = "UCS2_TO_BYTE";
-static char __pyx_k_INVALID_INPUT[] = "INVALID_INPUT";
-static char __pyx_k_LANGUAGE_PERL[] = "LANGUAGE_PERL";
-static char __pyx_k_MAXIMUM_ERROR[] = "MAXIMUM_ERROR";
-static char __pyx_k_NOT_CANONICAL[] = "NOT_CANONICAL";
-static char __pyx_k_NO_ICONV_FLAG[] = "NO_ICONV_FLAG";
-static char __pyx_k_NO_STEP_TABLE[] = "NO_STEP_TABLE";
-static char __pyx_k_BYTE_TO_STRING[] = "BYTE_TO_STRING";
-static char __pyx_k_DECIMAL_FORMAT[] = "DECIMAL_FORMAT";
-static char __pyx_k_INTERNAL_ERROR[] = "INTERNAL_ERROR";
-static char __pyx_k_NO_SYMBOL_TYPE[] = "NO_SYMBOL_TYPE";
-static char __pyx_k_STRING_TO_UCS2[] = "STRING_TO_UCS2";
-static char __pyx_k_SWAP_UNDECIDED[] = "SWAP_UNDECIDED";
-static char __pyx_k_UCS2_TO_STRING[] = "UCS2_TO_STRING";
-static char __pyx_k_UNTRANSLATABLE[] = "UNTRANSLATABLE";
-static char __pyx_k_AUTO_ABORT_FLAG[] = "AUTO_ABORT_FLAG";
-static char __pyx_k_BYTE_ORDER_MARK[] = "BYTE_ORDER_MARK";
-static char __pyx_k_COMBINE_EXPLODE[] = "COMBINE_EXPLODE";
-static char __pyx_k_NOT_A_CHARACTER[] = "NOT_A_CHARACTER";
-static char __pyx_k_NO_CHARSET_DATA[] = "NO_CHARSET_DATA";
-static char __pyx_k_AMBIGUOUS_OUTPUT[] = "AMBIGUOUS_OUTPUT";
-static char __pyx_k_HEXADECIMAL_FORMAT[] = "HEXADECIMAL_FORMAT";
-static char __pyx_k_SEQUENCE_IN_MEMORY[] = "SEQUENCE_IN_MEMORY";
-static char __pyx_k_SEQUENCE_WITH_PIPE[] = "SEQUENCE_WITH_PIPE";
-static char __pyx_k_STRATEGY_UNDECIDED[] = "STRATEGY_UNDECIDED";
-static char __pyx_k_SEQUENCE_WITH_FILES[] = "SEQUENCE_WITH_FILES";
-static char __pyx_k_ALIAS_FIND_AS_EITHER[] = "ALIAS_FIND_AS_EITHER";
-static char __pyx_k_ALIAS_FIND_AS_CHARSET[] = "ALIAS_FIND_AS_CHARSET";
-static char __pyx_k_ALIAS_FIND_AS_SURFACE[] = "ALIAS_FIND_AS_SURFACE";
-static char __pyx_k_REPLACEMENT_CHARACTER[] = "REPLACEMENT_CHARACTER";
-static char __pyx_k_SYMBOL_CREATE_CHARSET[] = "SYMBOL_CREATE_CHARSET";
-static char __pyx_k_BYTE_ORDER_MARK_SWAPPED[] = "BYTE_ORDER_MARK_SWAPPED";
-static char __pyx_k_SYMBOL_CREATE_DATA_SURFACE[] = "SYMBOL_CREATE_DATA_SURFACE";
-static char __pyx_k_SYMBOL_CREATE_TREE_SURFACE[] = "SYMBOL_CREATE_TREE_SURFACE";
-static PyObject *__pyx_n_s_ALIAS_FIND_AS_CHARSET;
-static PyObject *__pyx_n_s_ALIAS_FIND_AS_EITHER;
-static PyObject *__pyx_n_s_ALIAS_FIND_AS_SURFACE;
-static PyObject *__pyx_n_s_AMBIGUOUS_OUTPUT;
-static PyObject *__pyx_n_s_AUTO_ABORT_FLAG;
-static PyObject *__pyx_n_s_BYTE_ORDER_MARK;
-static PyObject *__pyx_n_s_BYTE_ORDER_MARK_SWAPPED;
-static PyObject *__pyx_n_s_BYTE_TO_BYTE;
-static PyObject *__pyx_n_s_BYTE_TO_STRING;
-static PyObject *__pyx_n_s_CHARSET;
-static PyObject *__pyx_n_s_COMBINE_EXPLODE;
-static PyObject *__pyx_n_s_COMBINE_STEP;
-static PyObject *__pyx_n_s_DATA_SURFACE;
-static PyObject *__pyx_n_s_DECIMAL_FORMAT;
-static PyObject *__pyx_n_s_EXPLODE_DATA;
-static PyObject *__pyx_n_s_EXPLODE_STEP;
-static PyObject *__pyx_n_s_Exception;
-static PyObject *__pyx_n_s_FULL_FORMAT;
-static PyObject *__pyx_n_s_HEXADECIMAL_FORMAT;
-static PyObject *__pyx_n_s_INTERNAL_ERROR;
-static PyObject *__pyx_n_s_INVALID_INPUT;
-static PyObject *__pyx_n_s_LANGUAGE_C;
-static PyObject *__pyx_n_s_LANGUAGE_PERL;
-static PyObject *__pyx_n_s_MAXIMUM_ERROR;
-static PyObject *__pyx_n_s_NOT_A_CHARACTER;
-static PyObject *__pyx_n_s_NOT_CANONICAL;
-static PyObject *__pyx_n_s_NO_CHARSET_DATA;
-static PyObject *__pyx_n_s_NO_ERROR;
-static PyObject *__pyx_n_s_NO_FORMAT;
-static PyObject *__pyx_n_s_NO_ICONV_FLAG;
-static PyObject *__pyx_n_s_NO_LANGUAGE;
-static PyObject *__pyx_n_s_NO_STEP_TABLE;
-static PyObject *__pyx_n_s_NO_SYMBOL_TYPE;
-static PyObject *__pyx_n_s_NUL;
-static PyObject *__pyx_n_s_OCTAL_FORMAT;
-static PyObject *__pyx_n_s_REPLACEMENT_CHARACTER;
-static PyObject *__pyx_n_s_Recode;
-static PyObject *__pyx_n_s_SEQUENCE_IN_MEMORY;
-static PyObject *__pyx_n_s_SEQUENCE_WITH_FILES;
-static PyObject *__pyx_n_s_SEQUENCE_WITH_PIPE;
-static PyObject *__pyx_n_s_SIZE_1;
-static PyObject *__pyx_n_s_SIZE_2;
-static PyObject *__pyx_n_s_SIZE_4;
-static PyObject *__pyx_n_s_SIZE_N;
-static PyObject *__pyx_n_s_STRATEGY_UNDECIDED;
-static PyObject *__pyx_n_s_STRING_TO_UCS2;
-static PyObject *__pyx_n_s_STRIP_DATA;
-static PyObject *__pyx_n_s_STRIP_SIZE;
-static PyObject *__pyx_n_s_SWAP_NO;
-static PyObject *__pyx_n_s_SWAP_UNDECIDED;
-static PyObject *__pyx_n_s_SWAP_YES;
-static PyObject *__pyx_n_s_SYMBOL_CREATE_CHARSET;
-static PyObject *__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE;
-static PyObject *__pyx_n_s_SYMBOL_CREATE_TREE_SURFACE;
-static PyObject *__pyx_n_s_SYSTEM_ERROR;
-static PyObject *__pyx_n_s_TREE_SURFACE;
-static PyObject *__pyx_n_s_UCS2_TO_BYTE;
-static PyObject *__pyx_n_s_UCS2_TO_STRING;
-static PyObject *__pyx_n_s_UNTRANSLATABLE;
-static PyObject *__pyx_n_s_USER_ERROR;
-static PyObject *__pyx_n_s_auto_abort;
-static PyObject *__pyx_n_s_charset;
-static PyObject *__pyx_n_s_command;
-static PyObject *__pyx_n_s_doc;
-static PyObject *__pyx_n_s_error;
-static PyObject *__pyx_n_s_format;
-static PyObject *__pyx_n_s_iconv;
-static PyObject *__pyx_n_s_input;
-static PyObject *__pyx_n_s_language;
-static PyObject *__pyx_n_s_main;
-static PyObject *__pyx_n_s_metaclass;
-static PyObject *__pyx_n_s_module;
-static PyObject *__pyx_n_s_outer;
-static PyObject *__pyx_n_s_prepare;
-static PyObject *__pyx_n_s_qualname;
-static PyObject *__pyx_n_s_scan;
-static PyObject *__pyx_n_s_strict;
-static PyObject *__pyx_n_s_string;
-static PyObject *__pyx_n_s_test;
-static PyObject *__pyx_n_s_xDONE;
-static PyObject *__pyx_n_s_xELSE;
-static int __pyx_pf_6Recode_5Outer___init__(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_auto_abort, PyObject *__pyx_v_iconv, PyObject *__pyx_v_strict); /* proto */
-static void __pyx_pf_6Recode_5Outer_2__dealloc__(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_5Outer_4default_charset(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_5Outer_6all_charsets(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_5Outer_8all_surfaces(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_5Outer_10concise_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_format); /* proto */
-static PyObject *__pyx_pf_6Recode_5Outer_12full_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_5Outer_14recode(struct __pyx_obj_6Recode_Outer *__pyx_v_self, char *__pyx_v_command, char *__pyx_v_input); /* proto */
-static int __pyx_pf_6Recode_7Request___init__(struct __pyx_obj_6Recode_Request *__pyx_v_self, struct __pyx_obj_6Recode_Outer *__pyx_v_outer); /* proto */
-static void __pyx_pf_6Recode_7Request_2__dealloc__(struct __pyx_obj_6Recode_Request *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_7Request_4set_verbose(struct __pyx_obj_6Recode_Request *__pyx_v_self, PyObject *__pyx_v_flag); /* proto */
-static PyObject *__pyx_pf_6Recode_7Request_6scan(struct __pyx_obj_6Recode_Request *__pyx_v_self, char *__pyx_v_text); /* proto */
-static PyObject *__pyx_pf_6Recode_7Request_8pair_sequence(struct __pyx_obj_6Recode_Request *__pyx_v_self); /* proto */
-static PyObject *__pyx_pf_6Recode_7Request_10format_table(struct __pyx_obj_6Recode_Request *__pyx_v_self, int __pyx_v_language, char *__pyx_v_charset); /* proto */
-static PyObject *__pyx_pf_6Recode_7Request_12string(struct __pyx_obj_6Recode_Request *__pyx_v_self, char *__pyx_v_text); /* proto */
-static PyObject *__pyx_tp_new_6Recode_Outer(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_tp_new_6Recode_Request(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
-static PyObject *__pyx_k_;
-
-/* "Recode.pyx":554
- *     cdef RECODE_OUTER outer
- * 
- *     def __init__(self, auto_abort=False, iconv=False, strict=False):             # <<<<<<<<<<<<<<
- *         cdef int flags
- *         cdef RECODE_SINGLE single
- */
-
-/* Python wrapper */
-static int __pyx_pw_6Recode_5Outer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_6Recode_5Outer_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_auto_abort = 0;
-  PyObject *__pyx_v_iconv = 0;
-  PyObject *__pyx_v_strict = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_auto_abort,&__pyx_n_s_iconv,&__pyx_n_s_strict,0};
-    PyObject* values[3] = {0,0,0};
-    values[0] = ((PyObject *)Py_False);
-    values[1] = ((PyObject *)Py_False);
-    values[2] = ((PyObject *)Py_False);
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_auto_abort);
-          if (value) { values[0] = value; kw_args--; }
-        }
-        case  1:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_iconv);
-          if (value) { values[1] = value; kw_args--; }
-        }
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_strict);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_auto_abort = values[0];
-    __pyx_v_iconv = values[1];
-    __pyx_v_strict = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Outer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6Recode_5Outer___init__(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v_auto_abort, __pyx_v_iconv, __pyx_v_strict);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_6Recode_5Outer___init__(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_auto_abort, PyObject *__pyx_v_iconv, PyObject *__pyx_v_strict) {
-  int __pyx_v_flags;
-  RECODE_SINGLE __pyx_v_single;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  int __pyx_t_2;
-  struct recode_single *__pyx_t_3;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("__init__", 0);
-
-  /* "Recode.pyx":557
- *         cdef int flags
- *         cdef RECODE_SINGLE single
- *         flags = 0             # <<<<<<<<<<<<<<
- *         if auto_abort:
- *             flags = flags | RECODE_AUTO_ABORT_FLAG
- */
-  __pyx_v_flags = 0;
-
-  /* "Recode.pyx":558
- *         cdef RECODE_SINGLE single
- *         flags = 0
- *         if auto_abort:             # <<<<<<<<<<<<<<
- *             flags = flags | RECODE_AUTO_ABORT_FLAG
- *         if not iconv:
- */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_auto_abort); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 558; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__pyx_t_1) {
-
-    /* "Recode.pyx":559
- *         flags = 0
- *         if auto_abort:
- *             flags = flags | RECODE_AUTO_ABORT_FLAG             # <<<<<<<<<<<<<<
- *         if not iconv:
- *             flags = flags | RECODE_NO_ICONV_FLAG
- */
-    __pyx_v_flags = (__pyx_v_flags | RECODE_AUTO_ABORT_FLAG);
-
-    /* "Recode.pyx":558
- *         cdef RECODE_SINGLE single
- *         flags = 0
- *         if auto_abort:             # <<<<<<<<<<<<<<
- *             flags = flags | RECODE_AUTO_ABORT_FLAG
- *         if not iconv:
- */
-  }
-
-  /* "Recode.pyx":560
- *         if auto_abort:
- *             flags = flags | RECODE_AUTO_ABORT_FLAG
- *         if not iconv:             # <<<<<<<<<<<<<<
- *             flags = flags | RECODE_NO_ICONV_FLAG
- *         self.outer = recode_new_outer(flags)
- */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_iconv); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_t_2 = ((!__pyx_t_1) != 0);
-  if (__pyx_t_2) {
-
-    /* "Recode.pyx":561
- *             flags = flags | RECODE_AUTO_ABORT_FLAG
- *         if not iconv:
- *             flags = flags | RECODE_NO_ICONV_FLAG             # <<<<<<<<<<<<<<
- *         self.outer = recode_new_outer(flags)
- *         if strict:
- */
-    __pyx_v_flags = (__pyx_v_flags | RECODE_NO_ICONV_FLAG);
-
-    /* "Recode.pyx":560
- *         if auto_abort:
- *             flags = flags | RECODE_AUTO_ABORT_FLAG
- *         if not iconv:             # <<<<<<<<<<<<<<
- *             flags = flags | RECODE_NO_ICONV_FLAG
- *         self.outer = recode_new_outer(flags)
- */
-  }
-
-  /* "Recode.pyx":562
- *         if not iconv:
- *             flags = flags | RECODE_NO_ICONV_FLAG
- *         self.outer = recode_new_outer(flags)             # <<<<<<<<<<<<<<
- *         if strict:
- *             single = self.outer.single_list
- */
-  __pyx_v_self->outer = recode_new_outer(__pyx_v_flags);
-
-  /* "Recode.pyx":563
- *             flags = flags | RECODE_NO_ICONV_FLAG
- *         self.outer = recode_new_outer(flags)
- *         if strict:             # <<<<<<<<<<<<<<
- *             single = self.outer.single_list
- *             while single is not NULL:
- */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_strict); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 563; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  if (__pyx_t_2) {
-
-    /* "Recode.pyx":564
- *         self.outer = recode_new_outer(flags)
- *         if strict:
- *             single = self.outer.single_list             # <<<<<<<<<<<<<<
- *             while single is not NULL:
- *                 single.fallback_routine = NULL
- */
-    __pyx_t_3 = __pyx_v_self->outer->single_list;
-    __pyx_v_single = __pyx_t_3;
-
-    /* "Recode.pyx":565
- *         if strict:
- *             single = self.outer.single_list
- *             while single is not NULL:             # <<<<<<<<<<<<<<
- *                 single.fallback_routine = NULL
- *                 single = single.next
- */
-    while (1) {
-      __pyx_t_2 = ((__pyx_v_single != NULL) != 0);
-      if (!__pyx_t_2) break;
-
-      /* "Recode.pyx":566
- *             single = self.outer.single_list
- *             while single is not NULL:
- *                 single.fallback_routine = NULL             # <<<<<<<<<<<<<<
- *                 single = single.next
- * 
- */
-      __pyx_v_single->fallback_routine = NULL;
-
-      /* "Recode.pyx":567
- *             while single is not NULL:
- *                 single.fallback_routine = NULL
- *                 single = single.next             # <<<<<<<<<<<<<<
- * 
- *     def __dealloc__(self):
- */
-      __pyx_t_3 = __pyx_v_single->next;
-      __pyx_v_single = __pyx_t_3;
-    }
-
-    /* "Recode.pyx":563
- *             flags = flags | RECODE_NO_ICONV_FLAG
- *         self.outer = recode_new_outer(flags)
- *         if strict:             # <<<<<<<<<<<<<<
- *             single = self.outer.single_list
- *             while single is not NULL:
- */
-  }
-
-  /* "Recode.pyx":554
- *     cdef RECODE_OUTER outer
- * 
- *     def __init__(self, auto_abort=False, iconv=False, strict=False):             # <<<<<<<<<<<<<<
- *         cdef int flags
- *         cdef RECODE_SINGLE single
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("Recode.Outer.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":569
- *                 single = single.next
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         recode_delete_outer(self.outer)
- * 
- */
-
-/* Python wrapper */
-static void __pyx_pw_6Recode_5Outer_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_6Recode_5Outer_3__dealloc__(PyObject *__pyx_v_self) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
-  __pyx_pf_6Recode_5Outer_2__dealloc__(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-static void __pyx_pf_6Recode_5Outer_2__dealloc__(struct __pyx_obj_6Recode_Outer *__pyx_v_self) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__", 0);
-
-  /* "Recode.pyx":570
- * 
- *     def __dealloc__(self):
- *         recode_delete_outer(self.outer)             # <<<<<<<<<<<<<<
- * 
- *     def default_charset(self):
- */
-  recode_delete_outer(__pyx_v_self->outer);
-
-  /* "Recode.pyx":569
- *                 single = single.next
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         recode_delete_outer(self.outer)
- * 
- */
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "Recode.pyx":572
- *         recode_delete_outer(self.outer)
- * 
- *     def default_charset(self):             # <<<<<<<<<<<<<<
- *         return locale_charset()
- * 
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_5Outer_5default_charset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6Recode_5Outer_5default_charset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("default_charset (wrapper)", 0);
-  __pyx_r = __pyx_pf_6Recode_5Outer_4default_charset(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_5Outer_4default_charset(CYTHON_UNUSED struct __pyx_obj_6Recode_Outer *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("default_charset", 0);
-
-  /* "Recode.pyx":573
- * 
- *     def default_charset(self):
- *         return locale_charset()             # <<<<<<<<<<<<<<
- * 
- *     def all_charsets(self):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBytes_FromString(locale_charset()); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":572
- *         recode_delete_outer(self.outer)
- * 
- *     def default_charset(self):             # <<<<<<<<<<<<<<
- *         return locale_charset()
- * 
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("Recode.Outer.default_charset", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":575
- *         return locale_charset()
- * 
- *     def all_charsets(self):             # <<<<<<<<<<<<<<
- *         list = []
- *         cdef RECODE_SYMBOL symbol
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_5Outer_7all_charsets(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6Recode_5Outer_7all_charsets(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_charsets (wrapper)", 0);
-  __pyx_r = __pyx_pf_6Recode_5Outer_6all_charsets(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_5Outer_6all_charsets(struct __pyx_obj_6Recode_Outer *__pyx_v_self) {
-  PyObject *__pyx_v_list = NULL;
-  RECODE_SYMBOL __pyx_v_symbol;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  RECODE_SYMBOL __pyx_t_2;
-  int __pyx_t_3;
-  int __pyx_t_4;
-  int __pyx_t_5;
-  struct recode_symbol *__pyx_t_6;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("all_charsets", 0);
-
-  /* "Recode.pyx":576
- * 
- *     def all_charsets(self):
- *         list = []             # <<<<<<<<<<<<<<
- *         cdef RECODE_SYMBOL symbol
- *         symbol = self.outer.symbol_list
- */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_list = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "Recode.pyx":578
- *         list = []
- *         cdef RECODE_SYMBOL symbol
- *         symbol = self.outer.symbol_list             # <<<<<<<<<<<<<<
- *         while symbol is not NULL:
- *             if (symbol.type == RECODE_CHARSET
- */
-  __pyx_t_2 = __pyx_v_self->outer->symbol_list;
-  __pyx_v_symbol = __pyx_t_2;
-
-  /* "Recode.pyx":579
- *         cdef RECODE_SYMBOL symbol
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:             # <<<<<<<<<<<<<<
- *             if (symbol.type == RECODE_CHARSET
- *                     and symbol is not self.outer.iconv_pivot
- */
-  while (1) {
-    __pyx_t_3 = ((__pyx_v_symbol != NULL) != 0);
-    if (!__pyx_t_3) break;
-
-    /* "Recode.pyx":580
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:
- *             if (symbol.type == RECODE_CHARSET             # <<<<<<<<<<<<<<
- *                     and symbol is not self.outer.iconv_pivot
- *                     and symbol is not self.outer.data_symbol
- */
-    __pyx_t_4 = ((__pyx_v_symbol->type == RECODE_CHARSET) != 0);
-    if (__pyx_t_4) {
-    } else {
-      __pyx_t_3 = __pyx_t_4;
-      goto __pyx_L6_bool_binop_done;
-    }
-
-    /* "Recode.pyx":581
- *         while symbol is not NULL:
- *             if (symbol.type == RECODE_CHARSET
- *                     and symbol is not self.outer.iconv_pivot             # <<<<<<<<<<<<<<
- *                     and symbol is not self.outer.data_symbol
- *                     and symbol is not self.outer.tree_symbol):
- */
-    __pyx_t_4 = ((__pyx_v_symbol != __pyx_v_self->outer->iconv_pivot) != 0);
-    if (__pyx_t_4) {
-    } else {
-      __pyx_t_3 = __pyx_t_4;
-      goto __pyx_L6_bool_binop_done;
-    }
-
-    /* "Recode.pyx":582
- *             if (symbol.type == RECODE_CHARSET
- *                     and symbol is not self.outer.iconv_pivot
- *                     and symbol is not self.outer.data_symbol             # <<<<<<<<<<<<<<
- *                     and symbol is not self.outer.tree_symbol):
- *                 list.append(symbol.name)
- */
-    __pyx_t_4 = ((__pyx_v_symbol != __pyx_v_self->outer->data_symbol) != 0);
-    if (__pyx_t_4) {
-    } else {
-      __pyx_t_3 = __pyx_t_4;
-      goto __pyx_L6_bool_binop_done;
-    }
-
-    /* "Recode.pyx":583
- *                     and symbol is not self.outer.iconv_pivot
- *                     and symbol is not self.outer.data_symbol
- *                     and symbol is not self.outer.tree_symbol):             # <<<<<<<<<<<<<<
- *                 list.append(symbol.name)
- *             symbol = symbol.next
- */
-    __pyx_t_4 = ((__pyx_v_symbol != __pyx_v_self->outer->tree_symbol) != 0);
-    __pyx_t_3 = __pyx_t_4;
-    __pyx_L6_bool_binop_done:;
-
-    /* "Recode.pyx":580
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:
- *             if (symbol.type == RECODE_CHARSET             # <<<<<<<<<<<<<<
- *                     and symbol is not self.outer.iconv_pivot
- *                     and symbol is not self.outer.data_symbol
- */
-    if (__pyx_t_3) {
-
-      /* "Recode.pyx":584
- *                     and symbol is not self.outer.data_symbol
- *                     and symbol is not self.outer.tree_symbol):
- *                 list.append(symbol.name)             # <<<<<<<<<<<<<<
- *             symbol = symbol.next
- *         return list
- */
-      __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_symbol->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_list, __pyx_t_1); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 584; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "Recode.pyx":580
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:
- *             if (symbol.type == RECODE_CHARSET             # <<<<<<<<<<<<<<
- *                     and symbol is not self.outer.iconv_pivot
- *                     and symbol is not self.outer.data_symbol
- */
-    }
-
-    /* "Recode.pyx":585
- *                     and symbol is not self.outer.tree_symbol):
- *                 list.append(symbol.name)
- *             symbol = symbol.next             # <<<<<<<<<<<<<<
- *         return list
- * 
- */
-    __pyx_t_6 = __pyx_v_symbol->next;
-    __pyx_v_symbol = __pyx_t_6;
-  }
-
-  /* "Recode.pyx":586
- *                 list.append(symbol.name)
- *             symbol = symbol.next
- *         return list             # <<<<<<<<<<<<<<
- * 
- *     def all_surfaces(self):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_list);
-  __pyx_r = __pyx_v_list;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":575
- *         return locale_charset()
- * 
- *     def all_charsets(self):             # <<<<<<<<<<<<<<
- *         list = []
- *         cdef RECODE_SYMBOL symbol
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("Recode.Outer.all_charsets", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_list);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":588
- *         return list
- * 
- *     def all_surfaces(self):             # <<<<<<<<<<<<<<
- *         list = []
- *         cdef RECODE_SYMBOL symbol
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_5Outer_9all_surfaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6Recode_5Outer_9all_surfaces(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("all_surfaces (wrapper)", 0);
-  __pyx_r = __pyx_pf_6Recode_5Outer_8all_surfaces(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_5Outer_8all_surfaces(struct __pyx_obj_6Recode_Outer *__pyx_v_self) {
-  PyObject *__pyx_v_list = NULL;
-  RECODE_SYMBOL __pyx_v_symbol;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  RECODE_SYMBOL __pyx_t_2;
-  int __pyx_t_3;
-  int __pyx_t_4;
-  struct recode_symbol *__pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("all_surfaces", 0);
-
-  /* "Recode.pyx":589
- * 
- *     def all_surfaces(self):
- *         list = []             # <<<<<<<<<<<<<<
- *         cdef RECODE_SYMBOL symbol
- *         symbol = self.outer.symbol_list
- */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_list = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "Recode.pyx":591
- *         list = []
- *         cdef RECODE_SYMBOL symbol
- *         symbol = self.outer.symbol_list             # <<<<<<<<<<<<<<
- *         while symbol is not NULL:
- *             if symbol.type != RECODE_CHARSET:
- */
-  __pyx_t_2 = __pyx_v_self->outer->symbol_list;
-  __pyx_v_symbol = __pyx_t_2;
-
-  /* "Recode.pyx":592
- *         cdef RECODE_SYMBOL symbol
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:             # <<<<<<<<<<<<<<
- *             if symbol.type != RECODE_CHARSET:
- *                 list.append(symbol.name)
- */
-  while (1) {
-    __pyx_t_3 = ((__pyx_v_symbol != NULL) != 0);
-    if (!__pyx_t_3) break;
-
-    /* "Recode.pyx":593
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:
- *             if symbol.type != RECODE_CHARSET:             # <<<<<<<<<<<<<<
- *                 list.append(symbol.name)
- *             symbol = symbol.next
- */
-    __pyx_t_3 = ((__pyx_v_symbol->type != RECODE_CHARSET) != 0);
-    if (__pyx_t_3) {
-
-      /* "Recode.pyx":594
- *         while symbol is not NULL:
- *             if symbol.type != RECODE_CHARSET:
- *                 list.append(symbol.name)             # <<<<<<<<<<<<<<
- *             symbol = symbol.next
- *         return list
- */
-      __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_symbol->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_list, __pyx_t_1); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 594; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-      /* "Recode.pyx":593
- *         symbol = self.outer.symbol_list
- *         while symbol is not NULL:
- *             if symbol.type != RECODE_CHARSET:             # <<<<<<<<<<<<<<
- *                 list.append(symbol.name)
- *             symbol = symbol.next
- */
-    }
-
-    /* "Recode.pyx":595
- *             if symbol.type != RECODE_CHARSET:
- *                 list.append(symbol.name)
- *             symbol = symbol.next             # <<<<<<<<<<<<<<
- *         return list
- * 
- */
-    __pyx_t_5 = __pyx_v_symbol->next;
-    __pyx_v_symbol = __pyx_t_5;
-  }
-
-  /* "Recode.pyx":596
- *                 list.append(symbol.name)
- *             symbol = symbol.next
- *         return list             # <<<<<<<<<<<<<<
- * 
- *     def concise_charset(self, format=NO_FORMAT):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_list);
-  __pyx_r = __pyx_v_list;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":588
- *         return list
- * 
- *     def all_surfaces(self):             # <<<<<<<<<<<<<<
- *         list = []
- *         cdef RECODE_SYMBOL symbol
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("Recode.Outer.all_surfaces", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_list);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":598
- *         return list
- * 
- *     def concise_charset(self, format=NO_FORMAT):             # <<<<<<<<<<<<<<
- *         ok = list_concise_charset(self.outer, NULL, format)
- *         if not ok:
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_5Outer_11concise_charset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6Recode_5Outer_11concise_charset(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_format = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("concise_charset (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format,0};
-    PyObject* values[1] = {0};
-    values[0] = __pyx_k_;
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (kw_args > 0) {
-          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format);
-          if (value) { values[0] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "concise_charset") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-    }
-    __pyx_v_format = values[0];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("concise_charset", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Outer.concise_charset", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6Recode_5Outer_10concise_charset(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v_format);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_5Outer_10concise_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self, PyObject *__pyx_v_format) {
-  enum __pyx_t_6Recode_bool __pyx_v_ok;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  enum recode_list_format __pyx_t_1;
-  int __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("concise_charset", 0);
-
-  /* "Recode.pyx":599
- * 
- *     def concise_charset(self, format=NO_FORMAT):
- *         ok = list_concise_charset(self.outer, NULL, format)             # <<<<<<<<<<<<<<
- *         if not ok:
- *             raise error
- */
-  __pyx_t_1 = ((enum recode_list_format)__Pyx_PyInt_As_enum__recode_list_format(__pyx_v_format)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_v_ok = list_concise_charset(__pyx_v_self->outer, NULL, __pyx_t_1);
-
-  /* "Recode.pyx":600
- *     def concise_charset(self, format=NO_FORMAT):
- *         ok = list_concise_charset(self.outer, NULL, format)
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  __pyx_t_2 = ((!__pyx_v_ok) != 0);
-  if (__pyx_t_2) {
-
-    /* "Recode.pyx":601
- *         ok = list_concise_charset(self.outer, NULL, format)
- *         if not ok:
- *             raise error             # <<<<<<<<<<<<<<
- * 
- *     def full_charset(self):
- */
-    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_error); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "Recode.pyx":600
- *     def concise_charset(self, format=NO_FORMAT):
- *         ok = list_concise_charset(self.outer, NULL, format)
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  }
-
-  /* "Recode.pyx":598
- *         return list
- * 
- *     def concise_charset(self, format=NO_FORMAT):             # <<<<<<<<<<<<<<
- *         ok = list_concise_charset(self.outer, NULL, format)
- *         if not ok:
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("Recode.Outer.concise_charset", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":603
- *             raise error
- * 
- *     def full_charset(self):             # <<<<<<<<<<<<<<
- *         ok = list_full_charset(self.outer, NULL)
- *         if not ok:
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_5Outer_13full_charset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6Recode_5Outer_13full_charset(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("full_charset (wrapper)", 0);
-  __pyx_r = __pyx_pf_6Recode_5Outer_12full_charset(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_5Outer_12full_charset(struct __pyx_obj_6Recode_Outer *__pyx_v_self) {
-  enum __pyx_t_6Recode_bool __pyx_v_ok;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("full_charset", 0);
-
-  /* "Recode.pyx":604
- * 
- *     def full_charset(self):
- *         ok = list_full_charset(self.outer, NULL)             # <<<<<<<<<<<<<<
- *         if not ok:
- *             raise error
- */
-  __pyx_v_ok = list_full_charset(__pyx_v_self->outer, NULL);
-
-  /* "Recode.pyx":605
- *     def full_charset(self):
- *         ok = list_full_charset(self.outer, NULL)
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  __pyx_t_1 = ((!__pyx_v_ok) != 0);
-  if (__pyx_t_1) {
-
-    /* "Recode.pyx":606
- *         ok = list_full_charset(self.outer, NULL)
- *         if not ok:
- *             raise error             # <<<<<<<<<<<<<<
- * 
- *     # Lazy, all in one call.
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "Recode.pyx":605
- *     def full_charset(self):
- *         ok = list_full_charset(self.outer, NULL)
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  }
-
-  /* "Recode.pyx":603
- *             raise error
- * 
- *     def full_charset(self):             # <<<<<<<<<<<<<<
- *         ok = list_full_charset(self.outer, NULL)
- *         if not ok:
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("Recode.Outer.full_charset", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":609
- * 
- *     # Lazy, all in one call.
- *     def recode(self, char *command, char *input):             # <<<<<<<<<<<<<<
- *         request = Request(self)
- *         request.scan(command)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_5Outer_15recode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6Recode_5Outer_15recode(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  char *__pyx_v_command;
-  char *__pyx_v_input;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("recode (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_command,&__pyx_n_s_input,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_command)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_input)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("recode", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "recode") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_command = __Pyx_PyObject_AsString(values[0]); if (unlikely((!__pyx_v_command) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_input = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_input) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("recode", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 609; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Outer.recode", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6Recode_5Outer_14recode(((struct __pyx_obj_6Recode_Outer *)__pyx_v_self), __pyx_v_command, __pyx_v_input);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_5Outer_14recode(struct __pyx_obj_6Recode_Outer *__pyx_v_self, char *__pyx_v_command, char *__pyx_v_input) {
-  struct __pyx_obj_6Recode_Request *__pyx_v_request = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  PyObject *__pyx_t_5 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("recode", 0);
-
-  /* "Recode.pyx":610
- *     # Lazy, all in one call.
- *     def recode(self, char *command, char *input):
- *         request = Request(self)             # <<<<<<<<<<<<<<
- *         request.scan(command)
- *         return request.string(input)
- */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6Recode_Request), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_request = ((struct __pyx_obj_6Recode_Request *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
-  /* "Recode.pyx":611
- *     def recode(self, char *command, char *input):
- *         request = Request(self)
- *         request.scan(command)             # <<<<<<<<<<<<<<
- *         return request.string(input)
- * 
- */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_request), __pyx_n_s_scan); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_command); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_4)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_4);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (!__pyx_t_4) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    __pyx_t_5 = PyTuple_New(1+1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4); __pyx_t_4 = NULL;
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_5, 0+1, __pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
-  /* "Recode.pyx":612
- *         request = Request(self)
- *         request.scan(command)
- *         return request.string(input)             # <<<<<<<<<<<<<<
- * 
- * # Recode library at REQUEST level.
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_request), __pyx_n_s_string); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyBytes_FromString(__pyx_v_input); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_3 = NULL;
-  if (CYTHON_COMPILING_IN_CPYTHON && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  if (!__pyx_t_3) {
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_GOTREF(__pyx_t_2);
-  } else {
-    __pyx_t_4 = PyTuple_New(1+1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    __Pyx_GIVEREF(__pyx_t_5);
-    PyTuple_SET_ITEM(__pyx_t_4, 0+1, __pyx_t_5);
-    __pyx_t_5 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":609
- * 
- *     # Lazy, all in one call.
- *     def recode(self, char *command, char *input):             # <<<<<<<<<<<<<<
- *         request = Request(self)
- *         request.scan(command)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("Recode.Outer.recode", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_request);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":619
- *     cdef RECODE_REQUEST request
- * 
- *     def __init__(self, Outer outer):             # <<<<<<<<<<<<<<
- *         self.request = recode_new_request(outer.outer)
- * 
- */
-
-/* Python wrapper */
-static int __pyx_pw_6Recode_7Request_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_6Recode_7Request_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct __pyx_obj_6Recode_Outer *__pyx_v_outer = 0;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_outer,0};
-    PyObject* values[1] = {0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_outer)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-    }
-    __pyx_v_outer = ((struct __pyx_obj_6Recode_Outer *)values[0]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Request.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_outer), __pyx_ptype_6Recode_Outer, 1, "outer", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_r = __pyx_pf_6Recode_7Request___init__(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_outer);
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_6Recode_7Request___init__(struct __pyx_obj_6Recode_Request *__pyx_v_self, struct __pyx_obj_6Recode_Outer *__pyx_v_outer) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__", 0);
-
-  /* "Recode.pyx":620
- * 
- *     def __init__(self, Outer outer):
- *         self.request = recode_new_request(outer.outer)             # <<<<<<<<<<<<<<
- * 
- *     def __dealloc__(self):
- */
-  __pyx_v_self->request = recode_new_request(__pyx_v_outer->outer);
-
-  /* "Recode.pyx":619
- *     cdef RECODE_REQUEST request
- * 
- *     def __init__(self, Outer outer):             # <<<<<<<<<<<<<<
- *         self.request = recode_new_request(outer.outer)
- * 
- */
-
-  /* function exit code */
-  __pyx_r = 0;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":622
- *         self.request = recode_new_request(outer.outer)
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         recode_delete_request(self.request)
- * 
- */
-
-/* Python wrapper */
-static void __pyx_pw_6Recode_7Request_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
-static void __pyx_pw_6Recode_7Request_3__dealloc__(PyObject *__pyx_v_self) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
-  __pyx_pf_6Recode_7Request_2__dealloc__(((struct __pyx_obj_6Recode_Request *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-static void __pyx_pf_6Recode_7Request_2__dealloc__(struct __pyx_obj_6Recode_Request *__pyx_v_self) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__dealloc__", 0);
-
-  /* "Recode.pyx":623
- * 
- *     def __dealloc__(self):
- *         recode_delete_request(self.request)             # <<<<<<<<<<<<<<
- * 
- *     def set_verbose(self, flag):
- */
-  recode_delete_request(__pyx_v_self->request);
-
-  /* "Recode.pyx":622
- *         self.request = recode_new_request(outer.outer)
- * 
- *     def __dealloc__(self):             # <<<<<<<<<<<<<<
- *         recode_delete_request(self.request)
- * 
- */
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-}
-
-/* "Recode.pyx":625
- *         recode_delete_request(self.request)
- * 
- *     def set_verbose(self, flag):             # <<<<<<<<<<<<<<
- *         previous = self.request.verbose_flag != 0
- *         self.request.verbose_flag = int(flag)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_7Request_5set_verbose(PyObject *__pyx_v_self, PyObject *__pyx_v_flag); /*proto*/
-static PyObject *__pyx_pw_6Recode_7Request_5set_verbose(PyObject *__pyx_v_self, PyObject *__pyx_v_flag) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("set_verbose (wrapper)", 0);
-  __pyx_r = __pyx_pf_6Recode_7Request_4set_verbose(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), ((PyObject *)__pyx_v_flag));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_7Request_4set_verbose(struct __pyx_obj_6Recode_Request *__pyx_v_self, PyObject *__pyx_v_flag) {
-  PyObject *__pyx_v_previous = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  enum __pyx_t_6Recode_bool __pyx_t_2;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("set_verbose", 0);
-
-  /* "Recode.pyx":626
- * 
- *     def set_verbose(self, flag):
- *         previous = self.request.verbose_flag != 0             # <<<<<<<<<<<<<<
- *         self.request.verbose_flag = int(flag)
- *         return previous
- */
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->request->verbose_flag != 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 626; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_previous = __pyx_t_1;
-  __pyx_t_1 = 0;
-
-  /* "Recode.pyx":627
- *     def set_verbose(self, flag):
- *         previous = self.request.verbose_flag != 0
- *         self.request.verbose_flag = int(flag)             # <<<<<<<<<<<<<<
- *         return previous
- * 
- */
-  __pyx_t_1 = PyNumber_Int(__pyx_v_flag); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((enum __pyx_t_6Recode_bool)__Pyx_PyInt_As_enum____pyx_t_6Recode_bool(__pyx_t_1)); if (unlikely(PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 627; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_self->request->verbose_flag = __pyx_t_2;
-
-  /* "Recode.pyx":628
- *         previous = self.request.verbose_flag != 0
- *         self.request.verbose_flag = int(flag)
- *         return previous             # <<<<<<<<<<<<<<
- * 
- *     def scan(self, char *text):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_previous);
-  __pyx_r = __pyx_v_previous;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":625
- *         recode_delete_request(self.request)
- * 
- *     def set_verbose(self, flag):             # <<<<<<<<<<<<<<
- *         previous = self.request.verbose_flag != 0
- *         self.request.verbose_flag = int(flag)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("Recode.Request.set_verbose", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_previous);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":630
- *         return previous
- * 
- *     def scan(self, char *text):             # <<<<<<<<<<<<<<
- *         ok = recode_scan_request(self.request, text)
- *         if not ok:
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_7Request_7scan(PyObject *__pyx_v_self, PyObject *__pyx_arg_text); /*proto*/
-static PyObject *__pyx_pw_6Recode_7Request_7scan(PyObject *__pyx_v_self, PyObject *__pyx_arg_text) {
-  char *__pyx_v_text;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("scan (wrapper)", 0);
-  assert(__pyx_arg_text); {
-    __pyx_v_text = __Pyx_PyObject_AsString(__pyx_arg_text); if (unlikely((!__pyx_v_text) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Request.scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6Recode_7Request_6scan(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), ((char *)__pyx_v_text));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_7Request_6scan(struct __pyx_obj_6Recode_Request *__pyx_v_self, char *__pyx_v_text) {
-  enum __pyx_t_6Recode_bool __pyx_v_ok;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("scan", 0);
-
-  /* "Recode.pyx":631
- * 
- *     def scan(self, char *text):
- *         ok = recode_scan_request(self.request, text)             # <<<<<<<<<<<<<<
- *         if not ok:
- *             raise error
- */
-  __pyx_v_ok = recode_scan_request(__pyx_v_self->request, __pyx_v_text);
-
-  /* "Recode.pyx":632
- *     def scan(self, char *text):
- *         ok = recode_scan_request(self.request, text)
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  __pyx_t_1 = ((!__pyx_v_ok) != 0);
-  if (__pyx_t_1) {
-
-    /* "Recode.pyx":633
- *         ok = recode_scan_request(self.request, text)
- *         if not ok:
- *             raise error             # <<<<<<<<<<<<<<
- * 
- *     def pair_sequence(self):
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "Recode.pyx":632
- *     def scan(self, char *text):
- *         ok = recode_scan_request(self.request, text)
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  }
-
-  /* "Recode.pyx":630
- *         return previous
- * 
- *     def scan(self, char *text):             # <<<<<<<<<<<<<<
- *         ok = recode_scan_request(self.request, text)
- *         if not ok:
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("Recode.Request.scan", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":635
- *             raise error
- * 
- *     def pair_sequence(self):             # <<<<<<<<<<<<<<
- *         list = []
- *         cdef recode_step step
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_7Request_9pair_sequence(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6Recode_7Request_9pair_sequence(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("pair_sequence (wrapper)", 0);
-  __pyx_r = __pyx_pf_6Recode_7Request_8pair_sequence(((struct __pyx_obj_6Recode_Request *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_7Request_8pair_sequence(struct __pyx_obj_6Recode_Request *__pyx_v_self) {
-  PyObject *__pyx_v_list = NULL;
-  struct recode_step __pyx_v_step;
-  unsigned int __pyx_v_counter;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  PyObject *__pyx_t_1 = NULL;
-  short __pyx_t_2;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_t_5;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("pair_sequence", 0);
-
-  /* "Recode.pyx":636
- * 
- *     def pair_sequence(self):
- *         list = []             # <<<<<<<<<<<<<<
- *         cdef recode_step step
- *         cdef unsigned counter
- */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_list = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "Recode.pyx":639
- *         cdef recode_step step
- *         cdef unsigned counter
- *         for counter from 0 <= counter < self.request.sequence_length:             # <<<<<<<<<<<<<<
- *             step = self.request.sequence_array[counter]
- *             list.append((step.before.name, step.after.name))
- */
-  __pyx_t_2 = __pyx_v_self->request->sequence_length;
-  for (__pyx_v_counter = 0; __pyx_v_counter < __pyx_t_2; __pyx_v_counter++) {
-
-    /* "Recode.pyx":640
- *         cdef unsigned counter
- *         for counter from 0 <= counter < self.request.sequence_length:
- *             step = self.request.sequence_array[counter]             # <<<<<<<<<<<<<<
- *             list.append((step.before.name, step.after.name))
- *         return list
- */
-    __pyx_v_step = (__pyx_v_self->request->sequence_array[__pyx_v_counter]);
-
-    /* "Recode.pyx":641
- *         for counter from 0 <= counter < self.request.sequence_length:
- *             step = self.request.sequence_array[counter]
- *             list.append((step.before.name, step.after.name))             # <<<<<<<<<<<<<<
- *         return list
- * 
- */
-    __pyx_t_1 = __Pyx_PyBytes_FromString(__pyx_v_step.before->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __Pyx_PyBytes_FromString(__pyx_v_step.after->name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_1);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_3);
-    __pyx_t_1 = 0;
-    __pyx_t_3 = 0;
-    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_list, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  }
-
-  /* "Recode.pyx":642
- *             step = self.request.sequence_array[counter]
- *             list.append((step.before.name, step.after.name))
- *         return list             # <<<<<<<<<<<<<<
- * 
- *     def format_table(self, int language, char *charset):
- */
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_list);
-  __pyx_r = __pyx_v_list;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":635
- *             raise error
- * 
- *     def pair_sequence(self):             # <<<<<<<<<<<<<<
- *         list = []
- *         cdef recode_step step
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("Recode.Request.pair_sequence", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_list);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":644
- *         return list
- * 
- *     def format_table(self, int language, char *charset):             # <<<<<<<<<<<<<<
- *         cdef RECODE_OUTER outer
- *         cdef bool saved
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_7Request_11format_table(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6Recode_7Request_11format_table(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_v_language;
-  char *__pyx_v_charset;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("format_table (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_language,&__pyx_n_s_charset,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_language)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        case  1:
-        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_charset)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("format_table", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "format_table") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_language = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_language == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-    __pyx_v_charset = __Pyx_PyObject_AsString(values[1]); if (unlikely((!__pyx_v_charset) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("format_table", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 644; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Request.format_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6Recode_7Request_10format_table(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), __pyx_v_language, __pyx_v_charset);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_7Request_10format_table(struct __pyx_obj_6Recode_Request *__pyx_v_self, int __pyx_v_language, char *__pyx_v_charset) {
-  RECODE_OUTER __pyx_v_outer;
-  enum __pyx_t_6Recode_bool __pyx_v_saved;
-  enum __pyx_t_6Recode_bool __pyx_v_ok;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  RECODE_OUTER __pyx_t_1;
-  enum __pyx_t_6Recode_bool __pyx_t_2;
-  int __pyx_t_3;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("format_table", 0);
-
-  /* "Recode.pyx":647
- *         cdef RECODE_OUTER outer
- *         cdef bool saved
- *         outer = self.request.outer             # <<<<<<<<<<<<<<
- *         saved = outer.iconv_pivot.ignore
- *         outer.iconv_pivot.ignore = true
- */
-  __pyx_t_1 = __pyx_v_self->request->outer;
-  __pyx_v_outer = __pyx_t_1;
-
-  /* "Recode.pyx":648
- *         cdef bool saved
- *         outer = self.request.outer
- *         saved = outer.iconv_pivot.ignore             # <<<<<<<<<<<<<<
- *         outer.iconv_pivot.ignore = true
- *         ok = recode_format_table(
- */
-  __pyx_t_2 = __pyx_v_outer->iconv_pivot->ignore;
-  __pyx_v_saved = __pyx_t_2;
-
-  /* "Recode.pyx":649
- *         outer = self.request.outer
- *         saved = outer.iconv_pivot.ignore
- *         outer.iconv_pivot.ignore = true             # <<<<<<<<<<<<<<
- *         ok = recode_format_table(
- *                 self.request, <recode_programming_language> language, charset)
- */
-  __pyx_v_outer->iconv_pivot->ignore = __pyx_e_6Recode_true;
-
-  /* "Recode.pyx":650
- *         saved = outer.iconv_pivot.ignore
- *         outer.iconv_pivot.ignore = true
- *         ok = recode_format_table(             # <<<<<<<<<<<<<<
- *                 self.request, <recode_programming_language> language, charset)
- *         outer.iconv_pivot.ignore = saved
- */
-  __pyx_v_ok = recode_format_table(__pyx_v_self->request, ((enum recode_programming_language)__pyx_v_language), __pyx_v_charset);
-
-  /* "Recode.pyx":652
- *         ok = recode_format_table(
- *                 self.request, <recode_programming_language> language, charset)
- *         outer.iconv_pivot.ignore = saved             # <<<<<<<<<<<<<<
- *         if not ok:
- *             raise error
- */
-  __pyx_v_outer->iconv_pivot->ignore = __pyx_v_saved;
-
-  /* "Recode.pyx":653
- *                 self.request, <recode_programming_language> language, charset)
- *         outer.iconv_pivot.ignore = saved
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  __pyx_t_3 = ((!__pyx_v_ok) != 0);
-  if (__pyx_t_3) {
-
-    /* "Recode.pyx":654
- *         outer.iconv_pivot.ignore = saved
- *         if not ok:
- *             raise error             # <<<<<<<<<<<<<<
- * 
- *     def string(self, char *text):
- */
-    __pyx_t_4 = __Pyx_GetModuleGlobalName(__pyx_n_s_error); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 654; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "Recode.pyx":653
- *                 self.request, <recode_programming_language> language, charset)
- *         outer.iconv_pivot.ignore = saved
- *         if not ok:             # <<<<<<<<<<<<<<
- *             raise error
- * 
- */
-  }
-
-  /* "Recode.pyx":644
- *         return list
- * 
- *     def format_table(self, int language, char *charset):             # <<<<<<<<<<<<<<
- *         cdef RECODE_OUTER outer
- *         cdef bool saved
- */
-
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("Recode.Request.format_table", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* "Recode.pyx":656
- *             raise error
- * 
- *     def string(self, char *text):             # <<<<<<<<<<<<<<
- *         cdef char *result
- *         result = recode_string(self.request, text)
- */
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6Recode_7Request_13string(PyObject *__pyx_v_self, PyObject *__pyx_arg_text); /*proto*/
-static PyObject *__pyx_pw_6Recode_7Request_13string(PyObject *__pyx_v_self, PyObject *__pyx_arg_text) {
-  char *__pyx_v_text;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("string (wrapper)", 0);
-  assert(__pyx_arg_text); {
-    __pyx_v_text = __Pyx_PyObject_AsString(__pyx_arg_text); if (unlikely((!__pyx_v_text) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("Recode.Request.string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6Recode_7Request_12string(((struct __pyx_obj_6Recode_Request *)__pyx_v_self), ((char *)__pyx_v_text));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6Recode_7Request_12string(struct __pyx_obj_6Recode_Request *__pyx_v_self, char *__pyx_v_text) {
-  char *__pyx_v_result;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  int __pyx_t_1;
-  PyObject *__pyx_t_2 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannySetupContext("string", 0);
-
-  /* "Recode.pyx":658
- *     def string(self, char *text):
- *         cdef char *result
- *         result = recode_string(self.request, text)             # <<<<<<<<<<<<<<
- *         if result is NULL:
- *             raise error
- */
-  __pyx_v_result = recode_string(__pyx_v_self->request, __pyx_v_text);
-
-  /* "Recode.pyx":659
- *         cdef char *result
- *         result = recode_string(self.request, text)
- *         if result is NULL:             # <<<<<<<<<<<<<<
- *             raise error
- *         return result
- */
-  __pyx_t_1 = ((__pyx_v_result == NULL) != 0);
-  if (__pyx_t_1) {
-
-    /* "Recode.pyx":660
- *         result = recode_string(self.request, text)
- *         if result is NULL:
- *             raise error             # <<<<<<<<<<<<<<
- *         return result
- * 
- */
-    __pyx_t_2 = __Pyx_GetModuleGlobalName(__pyx_n_s_error); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-
-    /* "Recode.pyx":659
- *         cdef char *result
- *         result = recode_string(self.request, text)
- *         if result is NULL:             # <<<<<<<<<<<<<<
- *             raise error
- *         return result
- */
-  }
-
-  /* "Recode.pyx":661
- *         if result is NULL:
- *             raise error
- *         return result             # <<<<<<<<<<<<<<
- * 
- *     #bool recode_string_to_buffer(
- */
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyBytes_FromString(__pyx_v_result); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
-  /* "Recode.pyx":656
- *             raise error
- * 
- *     def string(self, char *text):             # <<<<<<<<<<<<<<
- *         cdef char *result
- *         result = recode_string(self.request, text)
- */
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("Recode.Request.string", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_tp_new_6Recode_Outer(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  return o;
-}
-
-static void __pyx_tp_dealloc_6Recode_Outer(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  {
-    PyObject *etype, *eval, *etb;
-    PyErr_Fetch(&etype, &eval, &etb);
-    ++Py_REFCNT(o);
-    __pyx_pw_6Recode_5Outer_3__dealloc__(o);
-    --Py_REFCNT(o);
-    PyErr_Restore(etype, eval, etb);
-  }
-  (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_6Recode_Outer[] = {
-  {"default_charset", (PyCFunction)__pyx_pw_6Recode_5Outer_5default_charset, METH_NOARGS, 0},
-  {"all_charsets", (PyCFunction)__pyx_pw_6Recode_5Outer_7all_charsets, METH_NOARGS, 0},
-  {"all_surfaces", (PyCFunction)__pyx_pw_6Recode_5Outer_9all_surfaces, METH_NOARGS, 0},
-  {"concise_charset", (PyCFunction)__pyx_pw_6Recode_5Outer_11concise_charset, METH_VARARGS|METH_KEYWORDS, 0},
-  {"full_charset", (PyCFunction)__pyx_pw_6Recode_5Outer_13full_charset, METH_NOARGS, 0},
-  {"recode", (PyCFunction)__pyx_pw_6Recode_5Outer_15recode, METH_VARARGS|METH_KEYWORDS, 0},
-  {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_6Recode_Outer = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "Recode.Outer", /*tp_name*/
-  sizeof(struct __pyx_obj_6Recode_Outer), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_6Recode_Outer, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
-  0, /*tp_doc*/
-  0, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_6Recode_Outer, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_6Recode_5Outer_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_6Recode_Outer, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static PyObject *__pyx_tp_new_6Recode_Request(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
-  PyObject *o;
-  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
-    o = (*t->tp_alloc)(t, 0);
-  } else {
-    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
-  }
-  if (unlikely(!o)) return 0;
-  return o;
-}
-
-static void __pyx_tp_dealloc_6Recode_Request(PyObject *o) {
-  #if PY_VERSION_HEX >= 0x030400a1
-  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
-    if (PyObject_CallFinalizerFromDealloc(o)) return;
-  }
-  #endif
-  {
-    PyObject *etype, *eval, *etb;
-    PyErr_Fetch(&etype, &eval, &etb);
-    ++Py_REFCNT(o);
-    __pyx_pw_6Recode_7Request_3__dealloc__(o);
-    --Py_REFCNT(o);
-    PyErr_Restore(etype, eval, etb);
-  }
-  (*Py_TYPE(o)->tp_free)(o);
-}
-
-static PyMethodDef __pyx_methods_6Recode_Request[] = {
-  {"set_verbose", (PyCFunction)__pyx_pw_6Recode_7Request_5set_verbose, METH_O, 0},
-  {"scan", (PyCFunction)__pyx_pw_6Recode_7Request_7scan, METH_O, 0},
-  {"pair_sequence", (PyCFunction)__pyx_pw_6Recode_7Request_9pair_sequence, METH_NOARGS, 0},
-  {"format_table", (PyCFunction)__pyx_pw_6Recode_7Request_11format_table, METH_VARARGS|METH_KEYWORDS, 0},
-  {"string", (PyCFunction)__pyx_pw_6Recode_7Request_13string, METH_O, 0},
-  {0, 0, 0, 0}
-};
-
-static PyTypeObject __pyx_type_6Recode_Request = {
-  PyVarObject_HEAD_INIT(0, 0)
-  "Recode.Request", /*tp_name*/
-  sizeof(struct __pyx_obj_6Recode_Request), /*tp_basicsize*/
-  0, /*tp_itemsize*/
-  __pyx_tp_dealloc_6Recode_Request, /*tp_dealloc*/
-  0, /*tp_print*/
-  0, /*tp_getattr*/
-  0, /*tp_setattr*/
-  #if PY_MAJOR_VERSION < 3
-  0, /*tp_compare*/
-  #endif
-  #if PY_MAJOR_VERSION >= 3
-  0, /*tp_as_async*/
-  #endif
-  0, /*tp_repr*/
-  0, /*tp_as_number*/
-  0, /*tp_as_sequence*/
-  0, /*tp_as_mapping*/
-  0, /*tp_hash*/
-  0, /*tp_call*/
-  0, /*tp_str*/
-  0, /*tp_getattro*/
-  0, /*tp_setattro*/
-  0, /*tp_as_buffer*/
-  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
-  0, /*tp_doc*/
-  0, /*tp_traverse*/
-  0, /*tp_clear*/
-  0, /*tp_richcompare*/
-  0, /*tp_weaklistoffset*/
-  0, /*tp_iter*/
-  0, /*tp_iternext*/
-  __pyx_methods_6Recode_Request, /*tp_methods*/
-  0, /*tp_members*/
-  0, /*tp_getset*/
-  0, /*tp_base*/
-  0, /*tp_dict*/
-  0, /*tp_descr_get*/
-  0, /*tp_descr_set*/
-  0, /*tp_dictoffset*/
-  __pyx_pw_6Recode_7Request_1__init__, /*tp_init*/
-  0, /*tp_alloc*/
-  __pyx_tp_new_6Recode_Request, /*tp_new*/
-  0, /*tp_free*/
-  0, /*tp_is_gc*/
-  0, /*tp_bases*/
-  0, /*tp_mro*/
-  0, /*tp_cache*/
-  0, /*tp_subclasses*/
-  0, /*tp_weaklist*/
-  0, /*tp_del*/
-  0, /*tp_version_tag*/
-  #if PY_VERSION_HEX >= 0x030400a1
-  0, /*tp_finalize*/
-  #endif
-};
-
-static PyMethodDef __pyx_methods[] = {
-  {0, 0, 0, 0}
-};
-
-#if PY_MAJOR_VERSION >= 3
-static struct PyModuleDef __pyx_moduledef = {
-  #if PY_VERSION_HEX < 0x03020000
-    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
-  #else
-    PyModuleDef_HEAD_INIT,
-  #endif
-    "Recode",
-    0, /* m_doc */
-    -1, /* m_size */
-    __pyx_methods /* m_methods */,
-    NULL, /* m_reload */
-    NULL, /* m_traverse */
-    NULL, /* m_clear */
-    NULL /* m_free */
-};
-#endif
-
-static __Pyx_StringTabEntry __pyx_string_tab[] = {
-  {&__pyx_n_s_ALIAS_FIND_AS_CHARSET, __pyx_k_ALIAS_FIND_AS_CHARSET, sizeof(__pyx_k_ALIAS_FIND_AS_CHARSET), 0, 0, 1, 1},
-  {&__pyx_n_s_ALIAS_FIND_AS_EITHER, __pyx_k_ALIAS_FIND_AS_EITHER, sizeof(__pyx_k_ALIAS_FIND_AS_EITHER), 0, 0, 1, 1},
-  {&__pyx_n_s_ALIAS_FIND_AS_SURFACE, __pyx_k_ALIAS_FIND_AS_SURFACE, sizeof(__pyx_k_ALIAS_FIND_AS_SURFACE), 0, 0, 1, 1},
-  {&__pyx_n_s_AMBIGUOUS_OUTPUT, __pyx_k_AMBIGUOUS_OUTPUT, sizeof(__pyx_k_AMBIGUOUS_OUTPUT), 0, 0, 1, 1},
-  {&__pyx_n_s_AUTO_ABORT_FLAG, __pyx_k_AUTO_ABORT_FLAG, sizeof(__pyx_k_AUTO_ABORT_FLAG), 0, 0, 1, 1},
-  {&__pyx_n_s_BYTE_ORDER_MARK, __pyx_k_BYTE_ORDER_MARK, sizeof(__pyx_k_BYTE_ORDER_MARK), 0, 0, 1, 1},
-  {&__pyx_n_s_BYTE_ORDER_MARK_SWAPPED, __pyx_k_BYTE_ORDER_MARK_SWAPPED, sizeof(__pyx_k_BYTE_ORDER_MARK_SWAPPED), 0, 0, 1, 1},
-  {&__pyx_n_s_BYTE_TO_BYTE, __pyx_k_BYTE_TO_BYTE, sizeof(__pyx_k_BYTE_TO_BYTE), 0, 0, 1, 1},
-  {&__pyx_n_s_BYTE_TO_STRING, __pyx_k_BYTE_TO_STRING, sizeof(__pyx_k_BYTE_TO_STRING), 0, 0, 1, 1},
-  {&__pyx_n_s_CHARSET, __pyx_k_CHARSET, sizeof(__pyx_k_CHARSET), 0, 0, 1, 1},
-  {&__pyx_n_s_COMBINE_EXPLODE, __pyx_k_COMBINE_EXPLODE, sizeof(__pyx_k_COMBINE_EXPLODE), 0, 0, 1, 1},
-  {&__pyx_n_s_COMBINE_STEP, __pyx_k_COMBINE_STEP, sizeof(__pyx_k_COMBINE_STEP), 0, 0, 1, 1},
-  {&__pyx_n_s_DATA_SURFACE, __pyx_k_DATA_SURFACE, sizeof(__pyx_k_DATA_SURFACE), 0, 0, 1, 1},
-  {&__pyx_n_s_DECIMAL_FORMAT, __pyx_k_DECIMAL_FORMAT, sizeof(__pyx_k_DECIMAL_FORMAT), 0, 0, 1, 1},
-  {&__pyx_n_s_EXPLODE_DATA, __pyx_k_EXPLODE_DATA, sizeof(__pyx_k_EXPLODE_DATA), 0, 0, 1, 1},
-  {&__pyx_n_s_EXPLODE_STEP, __pyx_k_EXPLODE_STEP, sizeof(__pyx_k_EXPLODE_STEP), 0, 0, 1, 1},
-  {&__pyx_n_s_Exception, __pyx_k_Exception, sizeof(__pyx_k_Exception), 0, 0, 1, 1},
-  {&__pyx_n_s_FULL_FORMAT, __pyx_k_FULL_FORMAT, sizeof(__pyx_k_FULL_FORMAT), 0, 0, 1, 1},
-  {&__pyx_n_s_HEXADECIMAL_FORMAT, __pyx_k_HEXADECIMAL_FORMAT, sizeof(__pyx_k_HEXADECIMAL_FORMAT), 0, 0, 1, 1},
-  {&__pyx_n_s_INTERNAL_ERROR, __pyx_k_INTERNAL_ERROR, sizeof(__pyx_k_INTERNAL_ERROR), 0, 0, 1, 1},
-  {&__pyx_n_s_INVALID_INPUT, __pyx_k_INVALID_INPUT, sizeof(__pyx_k_INVALID_INPUT), 0, 0, 1, 1},
-  {&__pyx_n_s_LANGUAGE_C, __pyx_k_LANGUAGE_C, sizeof(__pyx_k_LANGUAGE_C), 0, 0, 1, 1},
-  {&__pyx_n_s_LANGUAGE_PERL, __pyx_k_LANGUAGE_PERL, sizeof(__pyx_k_LANGUAGE_PERL), 0, 0, 1, 1},
-  {&__pyx_n_s_MAXIMUM_ERROR, __pyx_k_MAXIMUM_ERROR, sizeof(__pyx_k_MAXIMUM_ERROR), 0, 0, 1, 1},
-  {&__pyx_n_s_NOT_A_CHARACTER, __pyx_k_NOT_A_CHARACTER, sizeof(__pyx_k_NOT_A_CHARACTER), 0, 0, 1, 1},
-  {&__pyx_n_s_NOT_CANONICAL, __pyx_k_NOT_CANONICAL, sizeof(__pyx_k_NOT_CANONICAL), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_CHARSET_DATA, __pyx_k_NO_CHARSET_DATA, sizeof(__pyx_k_NO_CHARSET_DATA), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_ERROR, __pyx_k_NO_ERROR, sizeof(__pyx_k_NO_ERROR), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_FORMAT, __pyx_k_NO_FORMAT, sizeof(__pyx_k_NO_FORMAT), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_ICONV_FLAG, __pyx_k_NO_ICONV_FLAG, sizeof(__pyx_k_NO_ICONV_FLAG), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_LANGUAGE, __pyx_k_NO_LANGUAGE, sizeof(__pyx_k_NO_LANGUAGE), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_STEP_TABLE, __pyx_k_NO_STEP_TABLE, sizeof(__pyx_k_NO_STEP_TABLE), 0, 0, 1, 1},
-  {&__pyx_n_s_NO_SYMBOL_TYPE, __pyx_k_NO_SYMBOL_TYPE, sizeof(__pyx_k_NO_SYMBOL_TYPE), 0, 0, 1, 1},
-  {&__pyx_n_s_NUL, __pyx_k_NUL, sizeof(__pyx_k_NUL), 0, 0, 1, 1},
-  {&__pyx_n_s_OCTAL_FORMAT, __pyx_k_OCTAL_FORMAT, sizeof(__pyx_k_OCTAL_FORMAT), 0, 0, 1, 1},
-  {&__pyx_n_s_REPLACEMENT_CHARACTER, __pyx_k_REPLACEMENT_CHARACTER, sizeof(__pyx_k_REPLACEMENT_CHARACTER), 0, 0, 1, 1},
-  {&__pyx_n_s_Recode, __pyx_k_Recode, sizeof(__pyx_k_Recode), 0, 0, 1, 1},
-  {&__pyx_n_s_SEQUENCE_IN_MEMORY, __pyx_k_SEQUENCE_IN_MEMORY, sizeof(__pyx_k_SEQUENCE_IN_MEMORY), 0, 0, 1, 1},
-  {&__pyx_n_s_SEQUENCE_WITH_FILES, __pyx_k_SEQUENCE_WITH_FILES, sizeof(__pyx_k_SEQUENCE_WITH_FILES), 0, 0, 1, 1},
-  {&__pyx_n_s_SEQUENCE_WITH_PIPE, __pyx_k_SEQUENCE_WITH_PIPE, sizeof(__pyx_k_SEQUENCE_WITH_PIPE), 0, 0, 1, 1},
-  {&__pyx_n_s_SIZE_1, __pyx_k_SIZE_1, sizeof(__pyx_k_SIZE_1), 0, 0, 1, 1},
-  {&__pyx_n_s_SIZE_2, __pyx_k_SIZE_2, sizeof(__pyx_k_SIZE_2), 0, 0, 1, 1},
-  {&__pyx_n_s_SIZE_4, __pyx_k_SIZE_4, sizeof(__pyx_k_SIZE_4), 0, 0, 1, 1},
-  {&__pyx_n_s_SIZE_N, __pyx_k_SIZE_N, sizeof(__pyx_k_SIZE_N), 0, 0, 1, 1},
-  {&__pyx_n_s_STRATEGY_UNDECIDED, __pyx_k_STRATEGY_UNDECIDED, sizeof(__pyx_k_STRATEGY_UNDECIDED), 0, 0, 1, 1},
-  {&__pyx_n_s_STRING_TO_UCS2, __pyx_k_STRING_TO_UCS2, sizeof(__pyx_k_STRING_TO_UCS2), 0, 0, 1, 1},
-  {&__pyx_n_s_STRIP_DATA, __pyx_k_STRIP_DATA, sizeof(__pyx_k_STRIP_DATA), 0, 0, 1, 1},
-  {&__pyx_n_s_STRIP_SIZE, __pyx_k_STRIP_SIZE, sizeof(__pyx_k_STRIP_SIZE), 0, 0, 1, 1},
-  {&__pyx_n_s_SWAP_NO, __pyx_k_SWAP_NO, sizeof(__pyx_k_SWAP_NO), 0, 0, 1, 1},
-  {&__pyx_n_s_SWAP_UNDECIDED, __pyx_k_SWAP_UNDECIDED, sizeof(__pyx_k_SWAP_UNDECIDED), 0, 0, 1, 1},
-  {&__pyx_n_s_SWAP_YES, __pyx_k_SWAP_YES, sizeof(__pyx_k_SWAP_YES), 0, 0, 1, 1},
-  {&__pyx_n_s_SYMBOL_CREATE_CHARSET, __pyx_k_SYMBOL_CREATE_CHARSET, sizeof(__pyx_k_SYMBOL_CREATE_CHARSET), 0, 0, 1, 1},
-  {&__pyx_n_s_SYMBOL_CREATE_DATA_SURFACE, __pyx_k_SYMBOL_CREATE_DATA_SURFACE, sizeof(__pyx_k_SYMBOL_CREATE_DATA_SURFACE), 0, 0, 1, 1},
-  {&__pyx_n_s_SYMBOL_CREATE_TREE_SURFACE, __pyx_k_SYMBOL_CREATE_TREE_SURFACE, sizeof(__pyx_k_SYMBOL_CREATE_TREE_SURFACE), 0, 0, 1, 1},
-  {&__pyx_n_s_SYSTEM_ERROR, __pyx_k_SYSTEM_ERROR, sizeof(__pyx_k_SYSTEM_ERROR), 0, 0, 1, 1},
-  {&__pyx_n_s_TREE_SURFACE, __pyx_k_TREE_SURFACE, sizeof(__pyx_k_TREE_SURFACE), 0, 0, 1, 1},
-  {&__pyx_n_s_UCS2_TO_BYTE, __pyx_k_UCS2_TO_BYTE, sizeof(__pyx_k_UCS2_TO_BYTE), 0, 0, 1, 1},
-  {&__pyx_n_s_UCS2_TO_STRING, __pyx_k_UCS2_TO_STRING, sizeof(__pyx_k_UCS2_TO_STRING), 0, 0, 1, 1},
-  {&__pyx_n_s_UNTRANSLATABLE, __pyx_k_UNTRANSLATABLE, sizeof(__pyx_k_UNTRANSLATABLE), 0, 0, 1, 1},
-  {&__pyx_n_s_USER_ERROR, __pyx_k_USER_ERROR, sizeof(__pyx_k_USER_ERROR), 0, 0, 1, 1},
-  {&__pyx_n_s_auto_abort, __pyx_k_auto_abort, sizeof(__pyx_k_auto_abort), 0, 0, 1, 1},
-  {&__pyx_n_s_charset, __pyx_k_charset, sizeof(__pyx_k_charset), 0, 0, 1, 1},
-  {&__pyx_n_s_command, __pyx_k_command, sizeof(__pyx_k_command), 0, 0, 1, 1},
-  {&__pyx_n_s_doc, __pyx_k_doc, sizeof(__pyx_k_doc), 0, 0, 1, 1},
-  {&__pyx_n_s_error, __pyx_k_error, sizeof(__pyx_k_error), 0, 0, 1, 1},
-  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
-  {&__pyx_n_s_iconv, __pyx_k_iconv, sizeof(__pyx_k_iconv), 0, 0, 1, 1},
-  {&__pyx_n_s_input, __pyx_k_input, sizeof(__pyx_k_input), 0, 0, 1, 1},
-  {&__pyx_n_s_language, __pyx_k_language, sizeof(__pyx_k_language), 0, 0, 1, 1},
-  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
-  {&__pyx_n_s_metaclass, __pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 0, 1, 1},
-  {&__pyx_n_s_module, __pyx_k_module, sizeof(__pyx_k_module), 0, 0, 1, 1},
-  {&__pyx_n_s_outer, __pyx_k_outer, sizeof(__pyx_k_outer), 0, 0, 1, 1},
-  {&__pyx_n_s_prepare, __pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 0, 1, 1},
-  {&__pyx_n_s_qualname, __pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 0, 1, 1},
-  {&__pyx_n_s_scan, __pyx_k_scan, sizeof(__pyx_k_scan), 0, 0, 1, 1},
-  {&__pyx_n_s_strict, __pyx_k_strict, sizeof(__pyx_k_strict), 0, 0, 1, 1},
-  {&__pyx_n_s_string, __pyx_k_string, sizeof(__pyx_k_string), 0, 0, 1, 1},
-  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
-  {&__pyx_n_s_xDONE, __pyx_k_xDONE, sizeof(__pyx_k_xDONE), 0, 0, 1, 1},
-  {&__pyx_n_s_xELSE, __pyx_k_xELSE, sizeof(__pyx_k_xELSE), 0, 0, 1, 1},
-  {0, 0, 0, 0, 0, 0, 0}
-};
-static int __Pyx_InitCachedBuiltins(void) {
-  __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s_Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-static int __Pyx_InitCachedConstants(void) {
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);
-  __Pyx_RefNannyFinishContext();
-  return 0;
-}
-
-static int __Pyx_InitGlobals(void) {
-  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  return 0;
-  __pyx_L1_error:;
-  return -1;
-}
-
-#if PY_MAJOR_VERSION < 3
-PyMODINIT_FUNC initRecode(void); /*proto*/
-PyMODINIT_FUNC initRecode(void)
-#else
-PyMODINIT_FUNC PyInit_Recode(void); /*proto*/
-PyMODINIT_FUNC PyInit_Recode(void)
-#endif
-{
-  PyObject *__pyx_t_1 = NULL;
-  PyObject *__pyx_t_2 = NULL;
-  PyObject *__pyx_t_3 = NULL;
-  PyObject *__pyx_t_4 = NULL;
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-  __Pyx_RefNannyDeclarations
-  #if CYTHON_REFNANNY
-  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
-  if (!__Pyx_RefNanny) {
-      PyErr_Clear();
-      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
-      if (!__Pyx_RefNanny)
-          Py_FatalError("failed to import 'refnanny' module");
-  }
-  #endif
-  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_Recode(void)", 0);
-  if (__Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #ifdef __Pyx_CyFunction_USED
-  if (__pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-  #ifdef __Pyx_FusedFunction_USED
-  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-  #ifdef __Pyx_Coroutine_USED
-  if (__pyx_Coroutine_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-  #ifdef __Pyx_Generator_USED
-  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-  #ifdef __Pyx_StopAsyncIteration_USED
-  if (__pyx_StopAsyncIteration_init() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-  /*--- Library function declarations ---*/
-  /*--- Threads initialization code ---*/
-  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
-  #ifdef WITH_THREAD /* Python build with threading support? */
-  PyEval_InitThreads();
-  #endif
-  #endif
-  /*--- Module creation code ---*/
-  #if PY_MAJOR_VERSION < 3
-  __pyx_m = Py_InitModule4("Recode", __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
-  #else
-  __pyx_m = PyModule_Create(&__pyx_moduledef);
-  #endif
-  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  Py_INCREF(__pyx_d);
-  __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #if CYTHON_COMPILING_IN_PYPY
-  Py_INCREF(__pyx_b);
-  #endif
-  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
-  /*--- Initialize various global constants etc. ---*/
-  if (__Pyx_InitGlobals() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
-  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-  if (__pyx_module_is_main_Recode) {
-    if (PyObject_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  }
-  #if PY_MAJOR_VERSION >= 3
-  {
-    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    if (!PyDict_GetItemString(modules, "Recode")) {
-      if (unlikely(PyDict_SetItemString(modules, "Recode", __pyx_m) < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-    }
-  }
-  #endif
-  /*--- Builtin init code ---*/
-  if (__Pyx_InitCachedBuiltins() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  /*--- Constants init code ---*/
-  if (__Pyx_InitCachedConstants() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  /*--- Global init code ---*/
-  /*--- Variable export code ---*/
-  /*--- Function export code ---*/
-  /*--- Type init code ---*/
-  if (PyType_Ready(&__pyx_type_6Recode_Outer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_6Recode_Outer.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "Outer", (PyObject *)&__pyx_type_6Recode_Outer) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6Recode_Outer = &__pyx_type_6Recode_Outer;
-  if (PyType_Ready(&__pyx_type_6Recode_Request) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_type_6Recode_Request.tp_print = 0;
-  if (PyObject_SetAttrString(__pyx_m, "Request", (PyObject *)&__pyx_type_6Recode_Request) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 616; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __pyx_ptype_6Recode_Request = &__pyx_type_6Recode_Request;
-  /*--- Type import code ---*/
-  /*--- Variable import code ---*/
-  /*--- Function import code ---*/
-  /*--- Execution code ---*/
-  #if defined(__Pyx_Generator_USED) || defined(__Pyx_Coroutine_USED)
-  if (__Pyx_patch_abc() < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  #endif
-
-  /* "Recode.pyx":470
- *     bool recode_perform_task(RECODE_TASK)
- * 
- * class error(Exception):             # <<<<<<<<<<<<<<
- *     pass
- * 
- */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_builtin_Exception);
-  __Pyx_GIVEREF(__pyx_builtin_Exception);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_builtin_Exception);
-  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_1, __pyx_n_s_error, __pyx_n_s_error, (PyObject *) NULL, __pyx_n_s_Recode, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_n_s_error, __pyx_t_1, __pyx_t_3, NULL, 0, 1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_error, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":475
- * ## Enums repeated for Python.
- * 
- * NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE             # <<<<<<<<<<<<<<
- * CHARSET = RECODE_CHARSET
- * DATA_SURFACE = RECODE_DATA_SURFACE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_NO_SYMBOL_TYPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_SYMBOL_TYPE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 475; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":476
- * 
- * NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE
- * CHARSET = RECODE_CHARSET             # <<<<<<<<<<<<<<
- * DATA_SURFACE = RECODE_DATA_SURFACE
- * TREE_SURFACE = RECODE_TREE_SURFACE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_CHARSET); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_CHARSET, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 476; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":477
- * NO_SYMBOL_TYPE = RECODE_NO_SYMBOL_TYPE
- * CHARSET = RECODE_CHARSET
- * DATA_SURFACE = RECODE_DATA_SURFACE             # <<<<<<<<<<<<<<
- * TREE_SURFACE = RECODE_TREE_SURFACE
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_DATA_SURFACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DATA_SURFACE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":478
- * CHARSET = RECODE_CHARSET
- * DATA_SURFACE = RECODE_DATA_SURFACE
- * TREE_SURFACE = RECODE_TREE_SURFACE             # <<<<<<<<<<<<<<
- * 
- * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_symbol_type(RECODE_TREE_SURFACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_TREE_SURFACE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 478; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":480
- * TREE_SURFACE = RECODE_TREE_SURFACE
- * 
- * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA             # <<<<<<<<<<<<<<
- * STRIP_DATA = RECODE_STRIP_DATA
- * EXPLODE_DATA = RECODE_EXPLODE_DATA
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_data_type(RECODE_NO_CHARSET_DATA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_CHARSET_DATA, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 480; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":481
- * 
- * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA
- * STRIP_DATA = RECODE_STRIP_DATA             # <<<<<<<<<<<<<<
- * EXPLODE_DATA = RECODE_EXPLODE_DATA
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_data_type(RECODE_STRIP_DATA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRIP_DATA, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":482
- * NO_CHARSET_DATA = RECODE_NO_CHARSET_DATA
- * STRIP_DATA = RECODE_STRIP_DATA
- * EXPLODE_DATA = RECODE_EXPLODE_DATA             # <<<<<<<<<<<<<<
- * 
- * SIZE_1 = RECODE_1
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_data_type(RECODE_EXPLODE_DATA); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXPLODE_DATA, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 482; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":484
- * EXPLODE_DATA = RECODE_EXPLODE_DATA
- * 
- * SIZE_1 = RECODE_1             # <<<<<<<<<<<<<<
- * SIZE_2 = RECODE_2
- * SIZE_4 = RECODE_4
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_size(RECODE_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_1, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 484; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":485
- * 
- * SIZE_1 = RECODE_1
- * SIZE_2 = RECODE_2             # <<<<<<<<<<<<<<
- * SIZE_4 = RECODE_4
- * SIZE_N = RECODE_N
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_size(RECODE_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_2, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":486
- * SIZE_1 = RECODE_1
- * SIZE_2 = RECODE_2
- * SIZE_4 = RECODE_4             # <<<<<<<<<<<<<<
- * SIZE_N = RECODE_N
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_size(RECODE_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_4, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":487
- * SIZE_2 = RECODE_2
- * SIZE_4 = RECODE_4
- * SIZE_N = RECODE_N             # <<<<<<<<<<<<<<
- * 
- * NO_STEP_TABLE = RECODE_NO_STEP_TABLE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_size(RECODE_N); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SIZE_N, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 487; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":489
- * SIZE_N = RECODE_N
- * 
- * NO_STEP_TABLE = RECODE_NO_STEP_TABLE             # <<<<<<<<<<<<<<
- * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE
- * BYTE_TO_STRING = RECODE_BYTE_TO_STRING
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_NO_STEP_TABLE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_STEP_TABLE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":490
- * 
- * NO_STEP_TABLE = RECODE_NO_STEP_TABLE
- * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE             # <<<<<<<<<<<<<<
- * BYTE_TO_STRING = RECODE_BYTE_TO_STRING
- * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_BYTE_TO_BYTE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_TO_BYTE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 490; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":491
- * NO_STEP_TABLE = RECODE_NO_STEP_TABLE
- * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE
- * BYTE_TO_STRING = RECODE_BYTE_TO_STRING             # <<<<<<<<<<<<<<
- * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE
- * UCS2_TO_STRING = RECODE_UCS2_TO_STRING
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_BYTE_TO_STRING); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_TO_STRING, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":492
- * BYTE_TO_BYTE = RECODE_BYTE_TO_BYTE
- * BYTE_TO_STRING = RECODE_BYTE_TO_STRING
- * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE             # <<<<<<<<<<<<<<
- * UCS2_TO_STRING = RECODE_UCS2_TO_STRING
- * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_UCS2_TO_BYTE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UCS2_TO_BYTE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 492; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":493
- * BYTE_TO_STRING = RECODE_BYTE_TO_STRING
- * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE
- * UCS2_TO_STRING = RECODE_UCS2_TO_STRING             # <<<<<<<<<<<<<<
- * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2
- * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_UCS2_TO_STRING); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UCS2_TO_STRING, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":494
- * UCS2_TO_BYTE = RECODE_UCS2_TO_BYTE
- * UCS2_TO_STRING = RECODE_UCS2_TO_STRING
- * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2             # <<<<<<<<<<<<<<
- * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE
- * COMBINE_STEP = RECODE_COMBINE_STEP
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_STRING_TO_UCS2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRING_TO_UCS2, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 494; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":495
- * UCS2_TO_STRING = RECODE_UCS2_TO_STRING
- * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2
- * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE             # <<<<<<<<<<<<<<
- * COMBINE_STEP = RECODE_COMBINE_STEP
- * EXPLODE_STEP = RECODE_EXPLODE_STEP
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_COMBINE_EXPLODE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINE_EXPLODE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":496
- * STRING_TO_UCS2 = RECODE_STRING_TO_UCS2
- * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE
- * COMBINE_STEP = RECODE_COMBINE_STEP             # <<<<<<<<<<<<<<
- * EXPLODE_STEP = RECODE_EXPLODE_STEP
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_COMBINE_STEP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_COMBINE_STEP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 496; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":497
- * COMBINE_EXPLODE = RECODE_COMBINE_EXPLODE
- * COMBINE_STEP = RECODE_COMBINE_STEP
- * EXPLODE_STEP = RECODE_EXPLODE_STEP             # <<<<<<<<<<<<<<
- * 
- * STRATEGY_UNDECIDED = RECODE_STRATEGY_UNDECIDED
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_step_type(RECODE_EXPLODE_STEP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_EXPLODE_STEP, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":499
- * EXPLODE_STEP = RECODE_EXPLODE_STEP
- * 
- * STRATEGY_UNDECIDED = RECODE_STRATEGY_UNDECIDED             # <<<<<<<<<<<<<<
- * SEQUENCE_IN_MEMORY = RECODE_SEQUENCE_IN_MEMORY
- * SEQUENCE_WITH_FILES = RECODE_SEQUENCE_WITH_FILES
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_sequence_strategy(RECODE_STRATEGY_UNDECIDED); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRATEGY_UNDECIDED, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":500
- * 
- * STRATEGY_UNDECIDED = RECODE_STRATEGY_UNDECIDED
- * SEQUENCE_IN_MEMORY = RECODE_SEQUENCE_IN_MEMORY             # <<<<<<<<<<<<<<
- * SEQUENCE_WITH_FILES = RECODE_SEQUENCE_WITH_FILES
- * SEQUENCE_WITH_PIPE = RECODE_SEQUENCE_WITH_PIPE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_sequence_strategy(RECODE_SEQUENCE_IN_MEMORY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SEQUENCE_IN_MEMORY, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 500; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":501
- * STRATEGY_UNDECIDED = RECODE_STRATEGY_UNDECIDED
- * SEQUENCE_IN_MEMORY = RECODE_SEQUENCE_IN_MEMORY
- * SEQUENCE_WITH_FILES = RECODE_SEQUENCE_WITH_FILES             # <<<<<<<<<<<<<<
- * SEQUENCE_WITH_PIPE = RECODE_SEQUENCE_WITH_PIPE
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_sequence_strategy(RECODE_SEQUENCE_WITH_FILES); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SEQUENCE_WITH_FILES, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":502
- * SEQUENCE_IN_MEMORY = RECODE_SEQUENCE_IN_MEMORY
- * SEQUENCE_WITH_FILES = RECODE_SEQUENCE_WITH_FILES
- * SEQUENCE_WITH_PIPE = RECODE_SEQUENCE_WITH_PIPE             # <<<<<<<<<<<<<<
- * 
- * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_sequence_strategy(RECODE_SEQUENCE_WITH_PIPE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SEQUENCE_WITH_PIPE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 502; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":504
- * SEQUENCE_WITH_PIPE = RECODE_SEQUENCE_WITH_PIPE
- * 
- * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED             # <<<<<<<<<<<<<<
- * SWAP_NO = RECODE_SWAP_NO
- * SWAP_YES = RECODE_SWAP_YES
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_swap_input(RECODE_SWAP_UNDECIDED); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SWAP_UNDECIDED, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":505
- * 
- * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED
- * SWAP_NO = RECODE_SWAP_NO             # <<<<<<<<<<<<<<
- * SWAP_YES = RECODE_SWAP_YES
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_swap_input(RECODE_SWAP_NO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SWAP_NO, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":506
- * SWAP_UNDECIDED = RECODE_SWAP_UNDECIDED
- * SWAP_NO = RECODE_SWAP_NO
- * SWAP_YES = RECODE_SWAP_YES             # <<<<<<<<<<<<<<
- * 
- * NO_ERROR = RECODE_NO_ERROR
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_swap_input(RECODE_SWAP_YES); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SWAP_YES, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":508
- * SWAP_YES = RECODE_SWAP_YES
- * 
- * NO_ERROR = RECODE_NO_ERROR             # <<<<<<<<<<<<<<
- * NOT_CANONICAL = RECODE_NOT_CANONICAL
- * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_NO_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_ERROR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":509
- * 
- * NO_ERROR = RECODE_NO_ERROR
- * NOT_CANONICAL = RECODE_NOT_CANONICAL             # <<<<<<<<<<<<<<
- * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT
- * UNTRANSLATABLE = RECODE_UNTRANSLATABLE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_NOT_CANONICAL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NOT_CANONICAL, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 509; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":510
- * NO_ERROR = RECODE_NO_ERROR
- * NOT_CANONICAL = RECODE_NOT_CANONICAL
- * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT             # <<<<<<<<<<<<<<
- * UNTRANSLATABLE = RECODE_UNTRANSLATABLE
- * INVALID_INPUT = RECODE_INVALID_INPUT
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_AMBIGUOUS_OUTPUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AMBIGUOUS_OUTPUT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":511
- * NOT_CANONICAL = RECODE_NOT_CANONICAL
- * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT
- * UNTRANSLATABLE = RECODE_UNTRANSLATABLE             # <<<<<<<<<<<<<<
- * INVALID_INPUT = RECODE_INVALID_INPUT
- * SYSTEM_ERROR = RECODE_SYSTEM_ERROR
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_UNTRANSLATABLE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_UNTRANSLATABLE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":512
- * AMBIGUOUS_OUTPUT = RECODE_AMBIGUOUS_OUTPUT
- * UNTRANSLATABLE = RECODE_UNTRANSLATABLE
- * INVALID_INPUT = RECODE_INVALID_INPUT             # <<<<<<<<<<<<<<
- * SYSTEM_ERROR = RECODE_SYSTEM_ERROR
- * USER_ERROR = RECODE_USER_ERROR
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_INVALID_INPUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INVALID_INPUT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":513
- * UNTRANSLATABLE = RECODE_UNTRANSLATABLE
- * INVALID_INPUT = RECODE_INVALID_INPUT
- * SYSTEM_ERROR = RECODE_SYSTEM_ERROR             # <<<<<<<<<<<<<<
- * USER_ERROR = RECODE_USER_ERROR
- * INTERNAL_ERROR = RECODE_INTERNAL_ERROR
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_SYSTEM_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYSTEM_ERROR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 513; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":514
- * INVALID_INPUT = RECODE_INVALID_INPUT
- * SYSTEM_ERROR = RECODE_SYSTEM_ERROR
- * USER_ERROR = RECODE_USER_ERROR             # <<<<<<<<<<<<<<
- * INTERNAL_ERROR = RECODE_INTERNAL_ERROR
- * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_USER_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_USER_ERROR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":515
- * SYSTEM_ERROR = RECODE_SYSTEM_ERROR
- * USER_ERROR = RECODE_USER_ERROR
- * INTERNAL_ERROR = RECODE_INTERNAL_ERROR             # <<<<<<<<<<<<<<
- * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_INTERNAL_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_INTERNAL_ERROR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":516
- * USER_ERROR = RECODE_USER_ERROR
- * INTERNAL_ERROR = RECODE_INTERNAL_ERROR
- * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR             # <<<<<<<<<<<<<<
- * 
- * NO_FORMAT = RECODE_NO_FORMAT
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_error(RECODE_MAXIMUM_ERROR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_MAXIMUM_ERROR, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":518
- * MAXIMUM_ERROR = RECODE_MAXIMUM_ERROR
- * 
- * NO_FORMAT = RECODE_NO_FORMAT             # <<<<<<<<<<<<<<
- * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT
- * OCTAL_FORMAT = RECODE_OCTAL_FORMAT
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_NO_FORMAT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_FORMAT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":519
- * 
- * NO_FORMAT = RECODE_NO_FORMAT
- * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT             # <<<<<<<<<<<<<<
- * OCTAL_FORMAT = RECODE_OCTAL_FORMAT
- * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_DECIMAL_FORMAT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DECIMAL_FORMAT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":520
- * NO_FORMAT = RECODE_NO_FORMAT
- * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT
- * OCTAL_FORMAT = RECODE_OCTAL_FORMAT             # <<<<<<<<<<<<<<
- * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT
- * FULL_FORMAT = RECODE_FULL_FORMAT
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_OCTAL_FORMAT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_OCTAL_FORMAT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":521
- * DECIMAL_FORMAT = RECODE_DECIMAL_FORMAT
- * OCTAL_FORMAT = RECODE_OCTAL_FORMAT
- * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT             # <<<<<<<<<<<<<<
- * FULL_FORMAT = RECODE_FULL_FORMAT
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_HEXADECIMAL_FORMAT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_HEXADECIMAL_FORMAT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":522
- * OCTAL_FORMAT = RECODE_OCTAL_FORMAT
- * HEXADECIMAL_FORMAT = RECODE_HEXADECIMAL_FORMAT
- * FULL_FORMAT = RECODE_FULL_FORMAT             # <<<<<<<<<<<<<<
- * 
- * NO_LANGUAGE = RECODE_NO_LANGUAGE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_list_format(RECODE_FULL_FORMAT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_FULL_FORMAT, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":524
- * FULL_FORMAT = RECODE_FULL_FORMAT
- * 
- * NO_LANGUAGE = RECODE_NO_LANGUAGE             # <<<<<<<<<<<<<<
- * LANGUAGE_C = RECODE_LANGUAGE_C
- * LANGUAGE_PERL = RECODE_LANGUAGE_PERL
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_programming_language(RECODE_NO_LANGUAGE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_LANGUAGE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":525
- * 
- * NO_LANGUAGE = RECODE_NO_LANGUAGE
- * LANGUAGE_C = RECODE_LANGUAGE_C             # <<<<<<<<<<<<<<
- * LANGUAGE_PERL = RECODE_LANGUAGE_PERL
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_programming_language(RECODE_LANGUAGE_C); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LANGUAGE_C, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":526
- * NO_LANGUAGE = RECODE_NO_LANGUAGE
- * LANGUAGE_C = RECODE_LANGUAGE_C
- * LANGUAGE_PERL = RECODE_LANGUAGE_PERL             # <<<<<<<<<<<<<<
- * 
- * NUL = NUL_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__recode_programming_language(RECODE_LANGUAGE_PERL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_LANGUAGE_PERL, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 526; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":528
- * LANGUAGE_PERL = RECODE_LANGUAGE_PERL
- * 
- * NUL = NUL_             # <<<<<<<<<<<<<<
- * STRIP_SIZE = STRIP_SIZE_
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(NUL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NUL, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 528; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":529
- * 
- * NUL = NUL_
- * STRIP_SIZE = STRIP_SIZE_             # <<<<<<<<<<<<<<
- * 
- * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(STRIP_SIZE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_STRIP_SIZE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":531
- * STRIP_SIZE = STRIP_SIZE_
- * 
- * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_             # <<<<<<<<<<<<<<
- * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_
- * SYMBOL_CREATE_TREE_SURFACE = SYMBOL_CREATE_TREE_SURFACE_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__alias_find_type(SYMBOL_CREATE_CHARSET); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYMBOL_CREATE_CHARSET, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":532
- * 
- * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_
- * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_             # <<<<<<<<<<<<<<
- * SYMBOL_CREATE_TREE_SURFACE = SYMBOL_CREATE_TREE_SURFACE_
- * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__alias_find_type(SYMBOL_CREATE_DATA_SURFACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYMBOL_CREATE_DATA_SURFACE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":533
- * SYMBOL_CREATE_CHARSET = SYMBOL_CREATE_CHARSET_
- * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_
- * SYMBOL_CREATE_TREE_SURFACE = SYMBOL_CREATE_TREE_SURFACE_             # <<<<<<<<<<<<<<
- * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_
- * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__alias_find_type(SYMBOL_CREATE_TREE_SURFACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SYMBOL_CREATE_TREE_SURFACE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 533; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":534
- * SYMBOL_CREATE_DATA_SURFACE = SYMBOL_CREATE_DATA_SURFACE_
- * SYMBOL_CREATE_TREE_SURFACE = SYMBOL_CREATE_TREE_SURFACE_
- * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_             # <<<<<<<<<<<<<<
- * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_
- * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__alias_find_type(ALIAS_FIND_AS_CHARSET); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALIAS_FIND_AS_CHARSET, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":535
- * SYMBOL_CREATE_TREE_SURFACE = SYMBOL_CREATE_TREE_SURFACE_
- * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_
- * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_             # <<<<<<<<<<<<<<
- * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__alias_find_type(ALIAS_FIND_AS_SURFACE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALIAS_FIND_AS_SURFACE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":536
- * ALIAS_FIND_AS_CHARSET = ALIAS_FIND_AS_CHARSET_
- * ALIAS_FIND_AS_SURFACE = ALIAS_FIND_AS_SURFACE_
- * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_             # <<<<<<<<<<<<<<
- * 
- * xDONE = DONE
- */
-  __pyx_t_1 = __Pyx_PyInt_From_enum__alias_find_type(ALIAS_FIND_AS_EITHER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ALIAS_FIND_AS_EITHER, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":538
- * ALIAS_FIND_AS_EITHER = ALIAS_FIND_AS_EITHER_
- * 
- * xDONE = DONE             # <<<<<<<<<<<<<<
- * xELSE = ELSE_
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(DONE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xDONE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":539
- * 
- * xDONE = DONE
- * xELSE = ELSE_             # <<<<<<<<<<<<<<
- * 
- * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(ELSE); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xELSE, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":541
- * xELSE = ELSE_
- * 
- * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_             # <<<<<<<<<<<<<<
- * NOT_A_CHARACTER = NOT_A_CHARACTER_
- * BYTE_ORDER_MARK = BYTE_ORDER_MARK_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(REPLACEMENT_CHARACTER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_REPLACEMENT_CHARACTER, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":542
- * 
- * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_
- * NOT_A_CHARACTER = NOT_A_CHARACTER_             # <<<<<<<<<<<<<<
- * BYTE_ORDER_MARK = BYTE_ORDER_MARK_
- * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(NOT_A_CHARACTER); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NOT_A_CHARACTER, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":543
- * REPLACEMENT_CHARACTER = REPLACEMENT_CHARACTER_
- * NOT_A_CHARACTER = NOT_A_CHARACTER_
- * BYTE_ORDER_MARK = BYTE_ORDER_MARK_             # <<<<<<<<<<<<<<
- * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(BYTE_ORDER_MARK); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_ORDER_MARK, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":544
- * NOT_A_CHARACTER = NOT_A_CHARACTER_
- * BYTE_ORDER_MARK = BYTE_ORDER_MARK_
- * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_             # <<<<<<<<<<<<<<
- * 
- * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(BYTE_ORDER_MARK_SWAPPED); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_BYTE_ORDER_MARK_SWAPPED, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 544; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":546
- * BYTE_ORDER_MARK_SWAPPED = BYTE_ORDER_MARK_SWAPPED_
- * 
- * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG             # <<<<<<<<<<<<<<
- * NO_ICONV_FLAG = RECODE_NO_ICONV_FLAG
- * 
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(RECODE_AUTO_ABORT_FLAG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_AUTO_ABORT_FLAG, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 546; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":547
- * 
- * AUTO_ABORT_FLAG = RECODE_AUTO_ABORT_FLAG
- * NO_ICONV_FLAG = RECODE_NO_ICONV_FLAG             # <<<<<<<<<<<<<<
- * 
- * ## Recode library at OUTER level.
- */
-  __pyx_t_1 = __Pyx_PyInt_From_int(RECODE_NO_ICONV_FLAG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_NO_ICONV_FLAG, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /* "Recode.pyx":598
- *         return list
- * 
- *     def concise_charset(self, format=NO_FORMAT):             # <<<<<<<<<<<<<<
- *         ok = list_concise_charset(self.outer, NULL, format)
- *         if not ok:
- */
-  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_NO_FORMAT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 598; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_k_ = __pyx_t_1;
-  __Pyx_GIVEREF(__pyx_t_1);
-  __pyx_t_1 = 0;
-
-  /* "Recode.pyx":1
- * # -*- coding: utf-8 -*-             # <<<<<<<<<<<<<<
- * # Python interface to the Recode C library, for testing.
- * # Copyright  1996-2000, 2008 Free Software Foundation, Inc.
- */
-  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
-  /*--- Wrapped vars code ---*/
-
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  if (__pyx_m) {
-    if (__pyx_d) {
-      __Pyx_AddTraceback("init Recode", __pyx_clineno, __pyx_lineno, __pyx_filename);
-    }
-    Py_DECREF(__pyx_m); __pyx_m = 0;
-  } else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_ImportError, "init Recode");
-  }
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  #if PY_MAJOR_VERSION < 3
-  return;
-  #else
-  return __pyx_m;
-  #endif
-}
-
-/* --- Runtime support code --- */
-#if CYTHON_REFNANNY
-static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
-    PyObject *m = NULL, *p = NULL;
-    void *r = NULL;
-    m = PyImport_ImportModule((char *)modname);
-    if (!m) goto end;
-    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
-    if (!p) goto end;
-    r = PyLong_AsVoidPtr(p);
-end:
-    Py_XDECREF(p);
-    Py_XDECREF(m);
-    return (__Pyx_RefNannyAPIStruct *)r;
-}
-#endif
-
-static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
-    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
-    if (unlikely(!result)) {
-        PyErr_Format(PyExc_NameError,
-#if PY_MAJOR_VERSION >= 3
-            "name '%U' is not defined", name);
-#else
-            "name '%.200s' is not defined", PyString_AS_STRING(name));
-#endif
-    }
-    return result;
-}
-
-static void __Pyx_RaiseDoubleKeywordsError(
-    const char* func_name,
-    PyObject* kw_name)
-{
-    PyErr_Format(PyExc_TypeError,
-        #if PY_MAJOR_VERSION >= 3
-        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
-        #else
-        "%s() got multiple values for keyword argument '%s'", func_name,
-        PyString_AsString(kw_name));
-        #endif
-}
-
-static int __Pyx_ParseOptionalKeywords(
-    PyObject *kwds,
-    PyObject **argnames[],
-    PyObject *kwds2,
-    PyObject *values[],
-    Py_ssize_t num_pos_args,
-    const char* function_name)
-{
-    PyObject *key = 0, *value = 0;
-    Py_ssize_t pos = 0;
-    PyObject*** name;
-    PyObject*** first_kw_arg = argnames + num_pos_args;
-    while (PyDict_Next(kwds, &pos, &key, &value)) {
-        name = first_kw_arg;
-        while (*name && (**name != key)) name++;
-        if (*name) {
-            values[name-argnames] = value;
-            continue;
-        }
-        name = first_kw_arg;
-        #if PY_MAJOR_VERSION < 3
-        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
-            while (*name) {
-                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
-                        && _PyString_Eq(**name, key)) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    if ((**argname == key) || (
-                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
-                             && _PyString_Eq(**argname, key))) {
-                        goto arg_passed_twice;
-                    }
-                    argname++;
-                }
-            }
-        } else
-        #endif
-        if (likely(PyUnicode_Check(key))) {
-            while (*name) {
-                int cmp = (**name == key) ? 0 :
-                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
-                #endif
-                    PyUnicode_Compare(**name, key);
-                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                if (cmp == 0) {
-                    values[name-argnames] = value;
-                    break;
-                }
-                name++;
-            }
-            if (*name) continue;
-            else {
-                PyObject*** argname = argnames;
-                while (argname != first_kw_arg) {
-                    int cmp = (**argname == key) ? 0 :
-                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
-                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
-                    #endif
-                        PyUnicode_Compare(**argname, key);
-                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
-                    if (cmp == 0) goto arg_passed_twice;
-                    argname++;
-                }
-            }
-        } else
-            goto invalid_keyword_type;
-        if (kwds2) {
-            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
-        } else {
-            goto invalid_keyword;
-        }
-    }
-    return 0;
-arg_passed_twice:
-    __Pyx_RaiseDoubleKeywordsError(function_name, key);
-    goto bad;
-invalid_keyword_type:
-    PyErr_Format(PyExc_TypeError,
-        "%.200s() keywords must be strings", function_name);
-    goto bad;
-invalid_keyword:
-    PyErr_Format(PyExc_TypeError,
-    #if PY_MAJOR_VERSION < 3
-        "%.200s() got an unexpected keyword argument '%.200s'",
-        function_name, PyString_AsString(key));
-    #else
-        "%s() got an unexpected keyword argument '%U'",
-        function_name, key);
-    #endif
-bad:
-    return -1;
-}
-
-static void __Pyx_RaiseArgtupleInvalid(
-    const char* func_name,
-    int exact,
-    Py_ssize_t num_min,
-    Py_ssize_t num_max,
-    Py_ssize_t num_found)
-{
-    Py_ssize_t num_expected;
-    const char *more_or_less;
-    if (num_found < num_min) {
-        num_expected = num_min;
-        more_or_less = "at least";
-    } else {
-        num_expected = num_max;
-        more_or_less = "at most";
-    }
-    if (exact) {
-        more_or_less = "exactly";
-    }
-    PyErr_Format(PyExc_TypeError,
-                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
-                 func_name, more_or_less, num_expected,
-                 (num_expected == 1) ? "" : "s", num_found);
-}
-
-static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
-    PyObject *result;
-#if CYTHON_COMPILING_IN_CPYTHON
-    result = PyDict_GetItem(__pyx_d, name);
-    if (likely(result)) {
-        Py_INCREF(result);
-    } else {
-#else
-    result = PyObject_GetItem(__pyx_d, name);
-    if (!result) {
-        PyErr_Clear();
-#endif
-        result = __Pyx_GetBuiltinName(name);
-    }
-    return result;
-}
-
-static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyObject *tmp_type, *tmp_value, *tmp_tb;
-    PyThreadState *tstate = PyThreadState_GET();
-    tmp_type = tstate->curexc_type;
-    tmp_value = tstate->curexc_value;
-    tmp_tb = tstate->curexc_traceback;
-    tstate->curexc_type = type;
-    tstate->curexc_value = value;
-    tstate->curexc_traceback = tb;
-    Py_XDECREF(tmp_type);
-    Py_XDECREF(tmp_value);
-    Py_XDECREF(tmp_tb);
-#else
-    PyErr_Restore(type, value, tb);
-#endif
-}
-static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
-#if CYTHON_COMPILING_IN_CPYTHON
-    PyThreadState *tstate = PyThreadState_GET();
-    *type = tstate->curexc_type;
-    *value = tstate->curexc_value;
-    *tb = tstate->curexc_traceback;
-    tstate->curexc_type = 0;
-    tstate->curexc_value = 0;
-    tstate->curexc_traceback = 0;
-#else
-    PyErr_Fetch(type, value, tb);
-#endif
-}
-
-#if PY_MAJOR_VERSION < 3
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
-                        CYTHON_UNUSED PyObject *cause) {
-    Py_XINCREF(type);
-    if (!value || value == Py_None)
-        value = NULL;
-    else
-        Py_INCREF(value);
-    if (!tb || tb == Py_None)
-        tb = NULL;
-    else {
-        Py_INCREF(tb);
-        if (!PyTraceBack_Check(tb)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: arg 3 must be a traceback or None");
-            goto raise_error;
-        }
-    }
-    if (PyType_Check(type)) {
-#if CYTHON_COMPILING_IN_PYPY
-        if (!value) {
-            Py_INCREF(Py_None);
-            value = Py_None;
-        }
-#endif
-        PyErr_NormalizeException(&type, &value, &tb);
-    } else {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto raise_error;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(type);
-        Py_INCREF(type);
-        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
-            PyErr_SetString(PyExc_TypeError,
-                "raise: exception class must be a subclass of BaseException");
-            goto raise_error;
-        }
-    }
-    __Pyx_ErrRestore(type, value, tb);
-    return;
-raise_error:
-    Py_XDECREF(value);
-    Py_XDECREF(type);
-    Py_XDECREF(tb);
-    return;
-}
-#else
-static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
-    PyObject* owned_instance = NULL;
-    if (tb == Py_None) {
-        tb = 0;
-    } else if (tb && !PyTraceBack_Check(tb)) {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: arg 3 must be a traceback or None");
-        goto bad;
-    }
-    if (value == Py_None)
-        value = 0;
-    if (PyExceptionInstance_Check(type)) {
-        if (value) {
-            PyErr_SetString(PyExc_TypeError,
-                "instance exception may not have a separate value");
-            goto bad;
-        }
-        value = type;
-        type = (PyObject*) Py_TYPE(value);
-    } else if (PyExceptionClass_Check(type)) {
-        PyObject *instance_class = NULL;
-        if (value && PyExceptionInstance_Check(value)) {
-            instance_class = (PyObject*) Py_TYPE(value);
-            if (instance_class != type) {
-                int is_subclass = PyObject_IsSubclass(instance_class, type);
-                if (!is_subclass) {
-                    instance_class = NULL;
-                } else if (unlikely(is_subclass == -1)) {
-                    goto bad;
-                } else {
-                    type = instance_class;
-                }
-            }
-        }
-        if (!instance_class) {
-            PyObject *args;
-            if (!value)
-                args = PyTuple_New(0);
-            else if (PyTuple_Check(value)) {
-                Py_INCREF(value);
-                args = value;
-            } else
-                args = PyTuple_Pack(1, value);
-            if (!args)
-                goto bad;
-            owned_instance = PyObject_Call(type, args, NULL);
-            Py_DECREF(args);
-            if (!owned_instance)
-                goto bad;
-            value = owned_instance;
-            if (!PyExceptionInstance_Check(value)) {
-                PyErr_Format(PyExc_TypeError,
-                             "calling %R should have returned an instance of "
-                             "BaseException, not %R",
-                             type, Py_TYPE(value));
-                goto bad;
-            }
-        }
-    } else {
-        PyErr_SetString(PyExc_TypeError,
-            "raise: exception class must be a subclass of BaseException");
-        goto bad;
-    }
-#if PY_VERSION_HEX >= 0x03030000
-    if (cause) {
-#else
-    if (cause && cause != Py_None) {
-#endif
-        PyObject *fixed_cause;
-        if (cause == Py_None) {
-            fixed_cause = NULL;
-        } else if (PyExceptionClass_Check(cause)) {
-            fixed_cause = PyObject_CallObject(cause, NULL);
-            if (fixed_cause == NULL)
-                goto bad;
-        } else if (PyExceptionInstance_Check(cause)) {
-            fixed_cause = cause;
-            Py_INCREF(fixed_cause);
-        } else {
-            PyErr_SetString(PyExc_TypeError,
-                            "exception causes must derive from "
-                            "BaseException");
-            goto bad;
-        }
-        PyException_SetCause(value, fixed_cause);
-    }
-    PyErr_SetObject(type, value);
-    if (tb) {
-#if CYTHON_COMPILING_IN_PYPY
-        PyObject *tmp_type, *tmp_value, *tmp_tb;
-        PyErr_Fetch(&tmp_type, &tmp_value, &tmp_tb);
-        Py_INCREF(tb);
-        PyErr_Restore(tmp_type, tmp_value, tb);
-        Py_XDECREF(tmp_tb);
-#else
-        PyThreadState *tstate = PyThreadState_GET();
-        PyObject* tmp_tb = tstate->curexc_traceback;
-        if (tb != tmp_tb) {
-            Py_INCREF(tb);
-            tstate->curexc_traceback = tb;
-            Py_XDECREF(tmp_tb);
-        }
-#endif
-    }
-bad:
-    Py_XDECREF(owned_instance);
-    return;
-}
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
-    PyObject *result;
-    ternaryfunc call = func->ob_type->tp_call;
-    if (unlikely(!call))
-        return PyObject_Call(func, arg, kw);
-    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
-        return NULL;
-    result = (*call)(func, arg, kw);
-    Py_LeaveRecursiveCall();
-    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
-        PyErr_SetString(
-            PyExc_SystemError,
-            "NULL result without error in PyObject_Call");
-    }
-    return result;
-}
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
-    PyObject *self, *result;
-    PyCFunction cfunc;
-    cfunc = PyCFunction_GET_FUNCTION(func);
-    self = PyCFunction_GET_SELF(func);
-    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
-        return NULL;
-    result = cfunc(self, arg);
-    Py_LeaveRecursiveCall();
-    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
-        PyErr_SetString(
-            PyExc_SystemError,
-            "NULL result without error in PyObject_Call");
-    }
-    return result;
-}
-#endif
-
-#if CYTHON_COMPILING_IN_CPYTHON
-static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-    PyObject *result;
-    PyObject *args = PyTuple_New(1);
-    if (unlikely(!args)) return NULL;
-    Py_INCREF(arg);
-    PyTuple_SET_ITEM(args, 0, arg);
-    result = __Pyx_PyObject_Call(func, args, NULL);
-    Py_DECREF(args);
-    return result;
-}
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-#ifdef __Pyx_CyFunction_USED
-    if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) {
-#else
-    if (likely(PyCFunction_Check(func))) {
-#endif
-        if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) {
-            return __Pyx_PyObject_CallMethO(func, arg);
-        }
-    }
-    return __Pyx__PyObject_CallOneArg(func, arg);
-}
-#else
-static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
-    PyObject *result;
-    PyObject *args = PyTuple_Pack(1, arg);
-    if (unlikely(!args)) return NULL;
-    result = __Pyx_PyObject_Call(func, args, NULL);
-    Py_DECREF(args);
-    return result;
-}
-#endif
-
-static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
-    PyErr_Format(PyExc_TypeError,
-        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
-        name, type->tp_name, Py_TYPE(obj)->tp_name);
-}
-static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
-    const char *name, int exact)
-{
-    if (unlikely(!type)) {
-        PyErr_SetString(PyExc_SystemError, "Missing type object");
-        return 0;
-    }
-    if (none_allowed && obj == Py_None) return 1;
-    else if (exact) {
-        if (likely(Py_TYPE(obj) == type)) return 1;
-        #if PY_MAJOR_VERSION == 2
-        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
-        #endif
-    }
-    else {
-        if (likely(PyObject_TypeCheck(obj, type))) return 1;
-    }
-    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
-    return 0;
-}
-
-static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
-    Py_ssize_t i, nbases = PyTuple_GET_SIZE(bases);
-    for (i=0; i < nbases; i++) {
-        PyTypeObject *tmptype;
-        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
-        tmptype = Py_TYPE(tmp);
-#if PY_MAJOR_VERSION < 3
-        if (tmptype == &PyClass_Type)
-            continue;
-#endif
-        if (!metaclass) {
-            metaclass = tmptype;
-            continue;
-        }
-        if (PyType_IsSubtype(metaclass, tmptype))
-            continue;
-        if (PyType_IsSubtype(tmptype, metaclass)) {
-            metaclass = tmptype;
-            continue;
-        }
-        PyErr_SetString(PyExc_TypeError,
-                        "metaclass conflict: "
-                        "the metaclass of a derived class "
-                        "must be a (non-strict) subclass "
-                        "of the metaclasses of all its bases");
-        return NULL;
-    }
-    if (!metaclass) {
-#if PY_MAJOR_VERSION < 3
-        metaclass = &PyClass_Type;
-#else
-        metaclass = &PyType_Type;
-#endif
-    }
-    Py_INCREF((PyObject*) metaclass);
-    return (PyObject*) metaclass;
-}
-
-static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
-                                           PyObject *qualname, PyObject *mkw, PyObject *modname, PyObject *doc) {
-    PyObject *ns;
-    if (metaclass) {
-        PyObject *prep = __Pyx_PyObject_GetAttrStr(metaclass, __pyx_n_s_prepare);
-        if (prep) {
-            PyObject *pargs = PyTuple_Pack(2, name, bases);
-            if (unlikely(!pargs)) {
-                Py_DECREF(prep);
-                return NULL;
-            }
-            ns = PyObject_Call(prep, pargs, mkw);
-            Py_DECREF(prep);
-            Py_DECREF(pargs);
-        } else {
-            if (unlikely(!PyErr_ExceptionMatches(PyExc_AttributeError)))
-                return NULL;
-            PyErr_Clear();
-            ns = PyDict_New();
-        }
-    } else {
-        ns = PyDict_New();
-    }
-    if (unlikely(!ns))
-        return NULL;
-    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_module, modname) < 0)) goto bad;
-    if (unlikely(PyObject_SetItem(ns, __pyx_n_s_qualname, qualname) < 0)) goto bad;
-    if (unlikely(doc && PyObject_SetItem(ns, __pyx_n_s_doc, doc) < 0)) goto bad;
-    return ns;
-bad:
-    Py_DECREF(ns);
-    return NULL;
-}
-static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
-                                      PyObject *dict, PyObject *mkw,
-                                      int calculate_metaclass, int allow_py2_metaclass) {
-    PyObject *result, *margs;
-    PyObject *owned_metaclass = NULL;
-    if (allow_py2_metaclass) {
-        owned_metaclass = PyObject_GetItem(dict, __pyx_n_s_metaclass);
-        if (owned_metaclass) {
-            metaclass = owned_metaclass;
-        } else if (likely(PyErr_ExceptionMatches(PyExc_KeyError))) {
-            PyErr_Clear();
-        } else {
-            return NULL;
-        }
-    }
-    if (calculate_metaclass && (!metaclass || PyType_Check(metaclass))) {
-        metaclass = __Pyx_CalculateMetaclass((PyTypeObject*) metaclass, bases);
-        Py_XDECREF(owned_metaclass);
-        if (unlikely(!metaclass))
-            return NULL;
-        owned_metaclass = metaclass;
-    }
-    margs = PyTuple_Pack(3, name, bases, dict);
-    if (unlikely(!margs)) {
-        result = NULL;
-    } else {
-        result = PyObject_Call(metaclass, margs, mkw);
-        Py_DECREF(margs);
-    }
-    Py_XDECREF(owned_metaclass);
-    return result;
-}
-
-static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
-    int start = 0, mid = 0, end = count - 1;
-    if (end >= 0 && code_line > entries[end].code_line) {
-        return count;
-    }
-    while (start < end) {
-        mid = start + (end - start) / 2;
-        if (code_line < entries[mid].code_line) {
-            end = mid;
-        } else if (code_line > entries[mid].code_line) {
-             start = mid + 1;
-        } else {
-            return mid;
-        }
-    }
-    if (code_line <= entries[mid].code_line) {
-        return mid;
-    } else {
-        return mid + 1;
-    }
-}
-static PyCodeObject *__pyx_find_code_object(int code_line) {
-    PyCodeObject* code_object;
-    int pos;
-    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
-        return NULL;
-    }
-    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
-    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
-        return NULL;
-    }
-    code_object = __pyx_code_cache.entries[pos].code_object;
-    Py_INCREF(code_object);
-    return code_object;
-}
-static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
-    int pos, i;
-    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
-    if (unlikely(!code_line)) {
-        return;
-    }
-    if (unlikely(!entries)) {
-        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
-        if (likely(entries)) {
-            __pyx_code_cache.entries = entries;
-            __pyx_code_cache.max_count = 64;
-            __pyx_code_cache.count = 1;
-            entries[0].code_line = code_line;
-            entries[0].code_object = code_object;
-            Py_INCREF(code_object);
-        }
-        return;
-    }
-    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
-    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
-        PyCodeObject* tmp = entries[pos].code_object;
-        entries[pos].code_object = code_object;
-        Py_DECREF(tmp);
-        return;
-    }
-    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
-        int new_max = __pyx_code_cache.max_count + 64;
-        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
-            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
-        if (unlikely(!entries)) {
-            return;
-        }
-        __pyx_code_cache.entries = entries;
-        __pyx_code_cache.max_count = new_max;
-    }
-    for (i=__pyx_code_cache.count; i>pos; i--) {
-        entries[i] = entries[i-1];
-    }
-    entries[pos].code_line = code_line;
-    entries[pos].code_object = code_object;
-    __pyx_code_cache.count++;
-    Py_INCREF(code_object);
-}
-
-#include "compile.h"
-#include "frameobject.h"
-#include "traceback.h"
-static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
-            const char *funcname, int c_line,
-            int py_line, const char *filename) {
-    PyCodeObject *py_code = 0;
-    PyObject *py_srcfile = 0;
-    PyObject *py_funcname = 0;
-    #if PY_MAJOR_VERSION < 3
-    py_srcfile = PyString_FromString(filename);
-    #else
-    py_srcfile = PyUnicode_FromString(filename);
-    #endif
-    if (!py_srcfile) goto bad;
-    if (c_line) {
-        #if PY_MAJOR_VERSION < 3
-        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
-        #else
-        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
-        #endif
-    }
-    else {
-        #if PY_MAJOR_VERSION < 3
-        py_funcname = PyString_FromString(funcname);
-        #else
-        py_funcname = PyUnicode_FromString(funcname);
-        #endif
-    }
-    if (!py_funcname) goto bad;
-    py_code = __Pyx_PyCode_New(
-        0,
-        0,
-        0,
-        0,
-        0,
-        __pyx_empty_bytes, /*PyObject *code,*/
-        __pyx_empty_tuple, /*PyObject *consts,*/
-        __pyx_empty_tuple, /*PyObject *names,*/
-        __pyx_empty_tuple, /*PyObject *varnames,*/
-        __pyx_empty_tuple, /*PyObject *freevars,*/
-        __pyx_empty_tuple, /*PyObject *cellvars,*/
-        py_srcfile,   /*PyObject *filename,*/
-        py_funcname,  /*PyObject *name,*/
-        py_line,
-        __pyx_empty_bytes  /*PyObject *lnotab*/
-    );
-    Py_DECREF(py_srcfile);
-    Py_DECREF(py_funcname);
-    return py_code;
-bad:
-    Py_XDECREF(py_srcfile);
-    Py_XDECREF(py_funcname);
-    return NULL;
-}
-static void __Pyx_AddTraceback(const char *funcname, int c_line,
-                               int py_line, const char *filename) {
-    PyCodeObject *py_code = 0;
-    PyFrameObject *py_frame = 0;
-    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
-    if (!py_code) {
-        py_code = __Pyx_CreateCodeObjectForTraceback(
-            funcname, c_line, py_line, filename);
-        if (!py_code) goto bad;
-        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
-    }
-    py_frame = PyFrame_New(
-        PyThreadState_GET(), /*PyThreadState *tstate,*/
-        py_code,             /*PyCodeObject *code,*/
-        __pyx_d,      /*PyObject *globals,*/
-        0                    /*PyObject *locals*/
-    );
-    if (!py_frame) goto bad;
-    py_frame->f_lineno = py_line;
-    PyTraceBack_Here(py_frame);
-bad:
-    Py_XDECREF(py_code);
-    Py_XDECREF(py_frame);
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_symbol_type(enum recode_symbol_type value) {
-    const enum recode_symbol_type neg_one = (enum recode_symbol_type) -1, const_zero = (enum recode_symbol_type) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_symbol_type) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_symbol_type) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_symbol_type) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_symbol_type) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_symbol_type) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_symbol_type),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_data_type(enum recode_data_type value) {
-    const enum recode_data_type neg_one = (enum recode_data_type) -1, const_zero = (enum recode_data_type) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_data_type) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_data_type) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_data_type) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_data_type) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_data_type) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_data_type),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_size(enum recode_size value) {
-    const enum recode_size neg_one = (enum recode_size) -1, const_zero = (enum recode_size) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_size) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_size) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_size) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_size) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_size) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_size),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_step_type(enum recode_step_type value) {
-    const enum recode_step_type neg_one = (enum recode_step_type) -1, const_zero = (enum recode_step_type) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_step_type) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_step_type) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_step_type) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_step_type) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_step_type) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_step_type),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_sequence_strategy(enum recode_sequence_strategy value) {
-    const enum recode_sequence_strategy neg_one = (enum recode_sequence_strategy) -1, const_zero = (enum recode_sequence_strategy) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_sequence_strategy) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_sequence_strategy) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_sequence_strategy) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_sequence_strategy) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_sequence_strategy) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_sequence_strategy),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_swap_input(enum recode_swap_input value) {
-    const enum recode_swap_input neg_one = (enum recode_swap_input) -1, const_zero = (enum recode_swap_input) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_swap_input) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_swap_input) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_swap_input) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_swap_input) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_swap_input) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_swap_input),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_error(enum recode_error value) {
-    const enum recode_error neg_one = (enum recode_error) -1, const_zero = (enum recode_error) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_error) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_error) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_error) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_error) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_error) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_error),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_list_format(enum recode_list_format value) {
-    const enum recode_list_format neg_one = (enum recode_list_format) -1, const_zero = (enum recode_list_format) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_list_format) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_list_format) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_list_format) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_list_format) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_list_format) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_list_format),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__recode_programming_language(enum recode_programming_language value) {
-    const enum recode_programming_language neg_one = (enum recode_programming_language) -1, const_zero = (enum recode_programming_language) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum recode_programming_language) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_programming_language) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum recode_programming_language) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum recode_programming_language) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum recode_programming_language) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum recode_programming_language),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
-    const int neg_one = (int) -1, const_zero = (int) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(int) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(int) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(int) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(int),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__alias_find_type(enum alias_find_type value) {
-    const enum alias_find_type neg_one = (enum alias_find_type) -1, const_zero = (enum alias_find_type) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(enum alias_find_type) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum alias_find_type) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(enum alias_find_type) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(enum alias_find_type) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(enum alias_find_type) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(enum alias_find_type),
-                                     little, !is_unsigned);
-    }
-}
-
-#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0)
-#define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\
-    __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1)
-#define __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, exc)\
-    {\
-        func_type value = func_value;\
-        if (sizeof(target_type) < sizeof(func_type)) {\
-            if (unlikely(value != (func_type) (target_type) value)) {\
-                func_type zero = 0;\
-                if (exc && unlikely(value == (func_type)-1 && PyErr_Occurred()))\
-                    return (target_type) -1;\
-                if (is_unsigned && unlikely(value < zero))\
-                    goto raise_neg_overflow;\
-                else\
-                    goto raise_overflow;\
-            }\
-        }\
-        return (target_type) value;\
-    }
-
-#if CYTHON_USE_PYLONG_INTERNALS
-  #include "longintrepr.h"
-#endif
-
-static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
-    const int neg_one = (int) -1, const_zero = (int) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(int) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (int) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (int) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(int, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) >= 2 * PyLong_SHIFT) {
-                            return (int) (((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) >= 3 * PyLong_SHIFT) {
-                            return (int) (((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) >= 4 * PyLong_SHIFT) {
-                            return (int) (((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (int) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(int) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (int) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(int, sdigit, -(sdigit) digits[0])
-                case  1: __PYX_VERIFY_RETURN_INT(int,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(int) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
-                            return (int) (((int)-1)*(((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(int) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
-                            return (int) ((((((int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(int) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
-                            return (int) (((int)-1)*(((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(int) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
-                            return (int) ((((((((int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(int) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
-                            return (int) (((int)-1)*(((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(int) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(int, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(int) - 1 > 4 * PyLong_SHIFT) {
-                            return (int) ((((((((((int)digits[3]) << PyLong_SHIFT) | (int)digits[2]) << PyLong_SHIFT) | (int)digits[1]) << PyLong_SHIFT) | (int)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(int) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(int, long, PyLong_AsLong(x))
-            } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            int val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (int) -1;
-        }
-    } else {
-        int val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (int) -1;
-        val = __Pyx_PyInt_As_int(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to int");
-    return (int) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to int");
-    return (int) -1;
-}
-
-static CYTHON_INLINE enum recode_list_format __Pyx_PyInt_As_enum__recode_list_format(PyObject *x) {
-    const enum recode_list_format neg_one = (enum recode_list_format) -1, const_zero = (enum recode_list_format) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(enum recode_list_format) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (enum recode_list_format) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (enum recode_list_format) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(enum recode_list_format, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(enum recode_list_format) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) >= 2 * PyLong_SHIFT) {
-                            return (enum recode_list_format) (((((enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(enum recode_list_format) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) >= 3 * PyLong_SHIFT) {
-                            return (enum recode_list_format) (((((((enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(enum recode_list_format) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) >= 4 * PyLong_SHIFT) {
-                            return (enum recode_list_format) (((((((((enum recode_list_format)digits[3]) << PyLong_SHIFT) | (enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (enum recode_list_format) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(enum recode_list_format) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(enum recode_list_format) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (enum recode_list_format) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(enum recode_list_format, sdigit, -(sdigit) digits[0])
-                case  1: __PYX_VERIFY_RETURN_INT(enum recode_list_format,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(enum recode_list_format) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) - 1 > 2 * PyLong_SHIFT) {
-                            return (enum recode_list_format) (((enum recode_list_format)-1)*(((((enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(enum recode_list_format) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) - 1 > 2 * PyLong_SHIFT) {
-                            return (enum recode_list_format) ((((((enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(enum recode_list_format) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) - 1 > 3 * PyLong_SHIFT) {
-                            return (enum recode_list_format) (((enum recode_list_format)-1)*(((((((enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(enum recode_list_format) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) - 1 > 3 * PyLong_SHIFT) {
-                            return (enum recode_list_format) ((((((((enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(enum recode_list_format) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) - 1 > 4 * PyLong_SHIFT) {
-                            return (enum recode_list_format) (((enum recode_list_format)-1)*(((((((((enum recode_list_format)digits[3]) << PyLong_SHIFT) | (enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(enum recode_list_format) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum recode_list_format, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum recode_list_format) - 1 > 4 * PyLong_SHIFT) {
-                            return (enum recode_list_format) ((((((((((enum recode_list_format)digits[3]) << PyLong_SHIFT) | (enum recode_list_format)digits[2]) << PyLong_SHIFT) | (enum recode_list_format)digits[1]) << PyLong_SHIFT) | (enum recode_list_format)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(enum recode_list_format) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, long, PyLong_AsLong(x))
-            } else if (sizeof(enum recode_list_format) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum recode_list_format, PY_LONG_LONG, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            enum recode_list_format val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (enum recode_list_format) -1;
-        }
-    } else {
-        enum recode_list_format val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (enum recode_list_format) -1;
-        val = __Pyx_PyInt_As_enum__recode_list_format(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to enum recode_list_format");
-    return (enum recode_list_format) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to enum recode_list_format");
-    return (enum recode_list_format) -1;
-}
-
-static CYTHON_INLINE enum __pyx_t_6Recode_bool __Pyx_PyInt_As_enum____pyx_t_6Recode_bool(PyObject *x) {
-    const enum __pyx_t_6Recode_bool neg_one = (enum __pyx_t_6Recode_bool) -1, const_zero = (enum __pyx_t_6Recode_bool) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(enum __pyx_t_6Recode_bool) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (enum __pyx_t_6Recode_bool) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (enum __pyx_t_6Recode_bool) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) >= 2 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) (((((enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) >= 3 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) (((((((enum __pyx_t_6Recode_bool)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) >= 4 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) (((((((((enum __pyx_t_6Recode_bool)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (enum __pyx_t_6Recode_bool) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(enum __pyx_t_6Recode_bool) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_6Recode_bool, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(enum __pyx_t_6Recode_bool) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_6Recode_bool, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (enum __pyx_t_6Recode_bool) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, sdigit, -(sdigit) digits[0])
-                case  1: __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 2 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) (((enum __pyx_t_6Recode_bool)-1)*(((((enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 2 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) ((((((enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 3 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) (((enum __pyx_t_6Recode_bool)-1)*(((((((enum __pyx_t_6Recode_bool)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 3 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) ((((((((enum __pyx_t_6Recode_bool)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 4 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) (((enum __pyx_t_6Recode_bool)-1)*(((((((((enum __pyx_t_6Recode_bool)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(enum __pyx_t_6Recode_bool) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(enum __pyx_t_6Recode_bool, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(enum __pyx_t_6Recode_bool) - 1 > 4 * PyLong_SHIFT) {
-                            return (enum __pyx_t_6Recode_bool) ((((((((((enum __pyx_t_6Recode_bool)digits[3]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[2]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[1]) << PyLong_SHIFT) | (enum __pyx_t_6Recode_bool)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(enum __pyx_t_6Recode_bool) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_6Recode_bool, long, PyLong_AsLong(x))
-            } else if (sizeof(enum __pyx_t_6Recode_bool) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(enum __pyx_t_6Recode_bool, PY_LONG_LONG, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            enum __pyx_t_6Recode_bool val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (enum __pyx_t_6Recode_bool) -1;
-        }
-    } else {
-        enum __pyx_t_6Recode_bool val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (enum __pyx_t_6Recode_bool) -1;
-        val = __Pyx_PyInt_As_enum____pyx_t_6Recode_bool(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to enum __pyx_t_6Recode_bool");
-    return (enum __pyx_t_6Recode_bool) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to enum __pyx_t_6Recode_bool");
-    return (enum __pyx_t_6Recode_bool) -1;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
-    const long neg_one = (long) -1, const_zero = (long) 0;
-    const int is_unsigned = neg_one > const_zero;
-    if (is_unsigned) {
-        if (sizeof(long) < sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(long) <= sizeof(unsigned long)) {
-            return PyLong_FromUnsignedLong((unsigned long) value);
-        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
-            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
-        }
-    } else {
-        if (sizeof(long) <= sizeof(long)) {
-            return PyInt_FromLong((long) value);
-        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
-            return PyLong_FromLongLong((PY_LONG_LONG) value);
-        }
-    }
-    {
-        int one = 1; int little = (int)*(unsigned char *)&one;
-        unsigned char *bytes = (unsigned char *)&value;
-        return _PyLong_FromByteArray(bytes, sizeof(long),
-                                     little, !is_unsigned);
-    }
-}
-
-static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
-    const long neg_one = (long) -1, const_zero = (long) 0;
-    const int is_unsigned = neg_one > const_zero;
-#if PY_MAJOR_VERSION < 3
-    if (likely(PyInt_Check(x))) {
-        if (sizeof(long) < sizeof(long)) {
-            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG(x))
-        } else {
-            long val = PyInt_AS_LONG(x);
-            if (is_unsigned && unlikely(val < 0)) {
-                goto raise_neg_overflow;
-            }
-            return (long) val;
-        }
-    } else
-#endif
-    if (likely(PyLong_Check(x))) {
-        if (is_unsigned) {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (long) 0;
-                case  1: __PYX_VERIFY_RETURN_INT(long, digit, digits[0])
-                case 2:
-                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) >= 2 * PyLong_SHIFT) {
-                            return (long) (((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) >= 3 * PyLong_SHIFT) {
-                            return (long) (((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) >= 4 * PyLong_SHIFT) {
-                            return (long) (((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0]));
-                        }
-                    }
-                    break;
-            }
-#endif
-#if CYTHON_COMPILING_IN_CPYTHON
-            if (unlikely(Py_SIZE(x) < 0)) {
-                goto raise_neg_overflow;
-            }
-#else
-            {
-                int result = PyObject_RichCompareBool(x, Py_False, Py_LT);
-                if (unlikely(result < 0))
-                    return (long) -1;
-                if (unlikely(result == 1))
-                    goto raise_neg_overflow;
-            }
-#endif
-            if (sizeof(long) <= sizeof(unsigned long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned long, PyLong_AsUnsignedLong(x))
-            } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
-            }
-        } else {
-#if CYTHON_USE_PYLONG_INTERNALS
-            const digit* digits = ((PyLongObject*)x)->ob_digit;
-            switch (Py_SIZE(x)) {
-                case  0: return (long) 0;
-                case -1: __PYX_VERIFY_RETURN_INT(long, sdigit, -(sdigit) digits[0])
-                case  1: __PYX_VERIFY_RETURN_INT(long,  digit, +digits[0])
-                case -2:
-                    if (8 * sizeof(long) - 1 > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
-                            return (long) (((long)-1)*(((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
-                        }
-                    }
-                    break;
-                case 2:
-                    if (8 * sizeof(long) > 1 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 2 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
-                            return (long) ((((((long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
-                        }
-                    }
-                    break;
-                case -3:
-                    if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
-                            return (long) (((long)-1)*(((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
-                        }
-                    }
-                    break;
-                case 3:
-                    if (8 * sizeof(long) > 2 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 3 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
-                            return (long) ((((((((long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
-                        }
-                    }
-                    break;
-                case -4:
-                    if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, long, -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
-                            return (long) (((long)-1)*(((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
-                        }
-                    }
-                    break;
-                case 4:
-                    if (8 * sizeof(long) > 3 * PyLong_SHIFT) {
-                        if (8 * sizeof(unsigned long) > 4 * PyLong_SHIFT) {
-                            __PYX_VERIFY_RETURN_INT(long, unsigned long, (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
-                        } else if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
-                            return (long) ((((((((((long)digits[3]) << PyLong_SHIFT) | (long)digits[2]) << PyLong_SHIFT) | (long)digits[1]) << PyLong_SHIFT) | (long)digits[0])));
-                        }
-                    }
-                    break;
-            }
-#endif
-            if (sizeof(long) <= sizeof(long)) {
-                __PYX_VERIFY_RETURN_INT_EXC(long, long, PyLong_AsLong(x))
-            } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
-                __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
-            }
-        }
-        {
-#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
-            PyErr_SetString(PyExc_RuntimeError,
-                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
-#else
-            long val;
-            PyObject *v = __Pyx_PyNumber_Int(x);
- #if PY_MAJOR_VERSION < 3
-            if (likely(v) && !PyLong_Check(v)) {
-                PyObject *tmp = v;
-                v = PyNumber_Long(tmp);
-                Py_DECREF(tmp);
-            }
- #endif
-            if (likely(v)) {
-                int one = 1; int is_little = (int)*(unsigned char *)&one;
-                unsigned char *bytes = (unsigned char *)&val;
-                int ret = _PyLong_AsByteArray((PyLongObject *)v,
-                                              bytes, sizeof(val),
-                                              is_little, !is_unsigned);
-                Py_DECREF(v);
-                if (likely(!ret))
-                    return val;
-            }
-#endif
-            return (long) -1;
-        }
-    } else {
-        long val;
-        PyObject *tmp = __Pyx_PyNumber_Int(x);
-        if (!tmp) return (long) -1;
-        val = __Pyx_PyInt_As_long(tmp);
-        Py_DECREF(tmp);
-        return val;
-    }
-raise_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "value too large to convert to long");
-    return (long) -1;
-raise_neg_overflow:
-    PyErr_SetString(PyExc_OverflowError,
-        "can't convert negative value to long");
-    return (long) -1;
-}
-
-static int __Pyx_check_binary_version(void) {
-    char ctversion[4], rtversion[4];
-    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
-    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
-    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
-        char message[200];
-        PyOS_snprintf(message, sizeof(message),
-                      "compiletime version %s of module '%.100s' "
-                      "does not match runtime version %s",
-                      ctversion, __Pyx_MODULE_NAME, rtversion);
-        return PyErr_WarnEx(NULL, message, 1);
-    }
-    return 0;
-}
-
-static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
-    while (t->p) {
-        #if PY_MAJOR_VERSION < 3
-        if (t->is_unicode) {
-            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
-        } else if (t->intern) {
-            *t->p = PyString_InternFromString(t->s);
-        } else {
-            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
-        }
-        #else
-        if (t->is_unicode | t->is_str) {
-            if (t->intern) {
-                *t->p = PyUnicode_InternFromString(t->s);
-            } else if (t->encoding) {
-                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
-            } else {
-                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
-            }
-        } else {
-            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
-        }
-        #endif
-        if (!*t->p)
-            return -1;
-        ++t;
-    }
-    return 0;
-}
-
-static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
-    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
-}
-static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
-    Py_ssize_t ignore;
-    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
-}
-static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
-#if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
-    if (
-#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-            __Pyx_sys_getdefaultencoding_not_ascii &&
-#endif
-            PyUnicode_Check(o)) {
-#if PY_VERSION_HEX < 0x03030000
-        char* defenc_c;
-        PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
-        if (!defenc) return NULL;
-        defenc_c = PyBytes_AS_STRING(defenc);
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-        {
-            char* end = defenc_c + PyBytes_GET_SIZE(defenc);
-            char* c;
-            for (c = defenc_c; c < end; c++) {
-                if ((unsigned char) (*c) >= 128) {
-                    PyUnicode_AsASCIIString(o);
-                    return NULL;
-                }
-            }
-        }
-#endif
-        *length = PyBytes_GET_SIZE(defenc);
-        return defenc_c;
-#else
-        if (__Pyx_PyUnicode_READY(o) == -1) return NULL;
-#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
-        if (PyUnicode_IS_ASCII(o)) {
-            *length = PyUnicode_GET_LENGTH(o);
-            return PyUnicode_AsUTF8(o);
-        } else {
-            PyUnicode_AsASCIIString(o);
-            return NULL;
-        }
-#else
-        return PyUnicode_AsUTF8AndSize(o, length);
-#endif
-#endif
-    } else
-#endif
-#if (!CYTHON_COMPILING_IN_PYPY) || (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE))
-    if (PyByteArray_Check(o)) {
-        *length = PyByteArray_GET_SIZE(o);
-        return PyByteArray_AS_STRING(o);
-    } else
-#endif
-    {
-        char* result;
-        int r = PyBytes_AsStringAndSize(o, &result, length);
-        if (unlikely(r < 0)) {
-            return NULL;
-        } else {
-            return result;
-        }
-    }
-}
-static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
-   int is_true = x == Py_True;
-   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
-   else return PyObject_IsTrue(x);
-}
-static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
-  PyNumberMethods *m;
-  const char *name = NULL;
-  PyObject *res = NULL;
-#if PY_MAJOR_VERSION < 3
-  if (PyInt_Check(x) || PyLong_Check(x))
-#else
-  if (PyLong_Check(x))
-#endif
-    return __Pyx_NewRef(x);
-  m = Py_TYPE(x)->tp_as_number;
-#if PY_MAJOR_VERSION < 3
-  if (m && m->nb_int) {
-    name = "int";
-    res = PyNumber_Int(x);
-  }
-  else if (m && m->nb_long) {
-    name = "long";
-    res = PyNumber_Long(x);
-  }
-#else
-  if (m && m->nb_int) {
-    name = "int";
-    res = PyNumber_Long(x);
-  }
-#endif
-  if (res) {
-#if PY_MAJOR_VERSION < 3
-    if (!PyInt_Check(res) && !PyLong_Check(res)) {
-#else
-    if (!PyLong_Check(res)) {
-#endif
-      PyErr_Format(PyExc_TypeError,
-                   "__%.4s__ returned non-%.4s (type %.200s)",
-                   name, name, Py_TYPE(res)->tp_name);
-      Py_DECREF(res);
-      return NULL;
-    }
-  }
-  else if (!PyErr_Occurred()) {
-    PyErr_SetString(PyExc_TypeError,
-                    "an integer is required");
-  }
-  return res;
-}
-static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
-  Py_ssize_t ival;
-  PyObject *x;
-#if PY_MAJOR_VERSION < 3
-  if (likely(PyInt_CheckExact(b))) {
-    if (sizeof(Py_ssize_t) >= sizeof(long))
-        return PyInt_AS_LONG(b);
-    else
-        return PyInt_AsSsize_t(x);
-  }
-#endif
-  if (likely(PyLong_CheckExact(b))) {
-    #if CYTHON_USE_PYLONG_INTERNALS
-    const digit* digits = ((PyLongObject*)b)->ob_digit;
-    const Py_ssize_t size = Py_SIZE(b);
-    if (likely(__Pyx_sst_abs(size) <= 1)) {
-        ival = likely(size) ? digits[0] : 0;
-        if (size == -1) ival = -ival;
-        return ival;
-    } else {
-      switch (size) {
-         case 2:
-           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
-             return (Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
-           }
-           break;
-         case -2:
-           if (8 * sizeof(Py_ssize_t) > 2 * PyLong_SHIFT) {
-             return -(Py_ssize_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
-           }
-           break;
-         case 3:
-           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
-             return (Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
-           }
-           break;
-         case -3:
-           if (8 * sizeof(Py_ssize_t) > 3 * PyLong_SHIFT) {
-             return -(Py_ssize_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
-           }
-           break;
-         case 4:
-           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
-             return (Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
-           }
-           break;
-         case -4:
-           if (8 * sizeof(Py_ssize_t) > 4 * PyLong_SHIFT) {
-             return -(Py_ssize_t) (((((((((size_t)digits[3]) << PyLong_SHIFT) | (size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
-           }
-           break;
-      }
-    }
-    #endif
-    return PyLong_AsSsize_t(b);
-  }
-  x = PyNumber_Index(b);
-  if (!x) return -1;
-  ival = PyInt_AsSsize_t(x);
-  Py_DECREF(x);
-  return ival;
-}
-static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
-    return PyInt_FromSize_t(ival);
-}
-
-
-#endif /* Py_PYTHON_H */